From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:51:28 +0200 Subject: Adding upstream version 1:7.0.4. Signed-off-by: Daniel Baumann --- embeddedobj/qa/cppunit/data/insert-file-config.doc | Bin 0 -> 22016 bytes embeddedobj/qa/cppunit/data/insert-file-config.pdf | Bin 0 -> 11157 bytes .../qa/cppunit/data/insert-file-config.vsdx | Bin 0 -> 12483 bytes embeddedobj/qa/cppunit/general.cxx | 153 +++++++++++++++++++++ embeddedobj/qa/embedding/EmbeddingTest.java | 25 ++++ embeddedobj/qa/embedding/EmbeddingUnitTest.java | 82 +++++++++++ embeddedobj/qa/embedding/Test01.java | 153 +++++++++++++++++++++ embeddedobj/qa/embedding/TestHelper.java | 54 ++++++++ embeddedobj/qa/embedding/makefile.mk | 75 ++++++++++ 9 files changed, 542 insertions(+) create mode 100644 embeddedobj/qa/cppunit/data/insert-file-config.doc create mode 100644 embeddedobj/qa/cppunit/data/insert-file-config.pdf create mode 100644 embeddedobj/qa/cppunit/data/insert-file-config.vsdx create mode 100644 embeddedobj/qa/cppunit/general.cxx create mode 100644 embeddedobj/qa/embedding/EmbeddingTest.java create mode 100644 embeddedobj/qa/embedding/EmbeddingUnitTest.java create mode 100644 embeddedobj/qa/embedding/Test01.java create mode 100644 embeddedobj/qa/embedding/TestHelper.java create mode 100644 embeddedobj/qa/embedding/makefile.mk (limited to 'embeddedobj/qa') diff --git a/embeddedobj/qa/cppunit/data/insert-file-config.doc b/embeddedobj/qa/cppunit/data/insert-file-config.doc new file mode 100644 index 000000000..182a70c34 Binary files /dev/null and b/embeddedobj/qa/cppunit/data/insert-file-config.doc differ diff --git a/embeddedobj/qa/cppunit/data/insert-file-config.pdf b/embeddedobj/qa/cppunit/data/insert-file-config.pdf new file mode 100644 index 000000000..630245740 Binary files /dev/null and b/embeddedobj/qa/cppunit/data/insert-file-config.pdf differ diff --git a/embeddedobj/qa/cppunit/data/insert-file-config.vsdx b/embeddedobj/qa/cppunit/data/insert-file-config.vsdx new file mode 100644 index 000000000..bb3a129cf Binary files /dev/null and b/embeddedobj/qa/cppunit/data/insert-file-config.vsdx differ diff --git a/embeddedobj/qa/cppunit/general.cxx b/embeddedobj/qa/cppunit/general.cxx new file mode 100644 index 000000000..b1a288283 --- /dev/null +++ b/embeddedobj/qa/cppunit/general.cxx @@ -0,0 +1,153 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +using namespace ::com::sun::star; + +/// embeddedobj general tests. +class EmbeddedobjGeneralTest : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference& getComponent() { return mxComponent; } +}; + +void EmbeddedobjGeneralTest::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void EmbeddedobjGeneralTest::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +CPPUNIT_TEST_FIXTURE(EmbeddedobjGeneralTest, testInsertFileConfig) +{ + // Explicitly disable Word->Writer mapping for this test. + std::shared_ptr pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Filter::Microsoft::Import::WinWordToWriter::set(false, pBatch); + pBatch->commit(); + comphelper::ScopeGuard g([]() { + std::shared_ptr pBatchReset( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Filter::Microsoft::Import::WinWordToWriter::set(true, + pBatchReset); + pBatchReset->commit(); + }); + getComponent().set( + loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument")); + + // Insert a file as an embedded object. + uno::Reference xStorage = comphelper::OStorageHelper::GetTemporaryStorage(); + comphelper::EmbeddedObjectContainer aContainer(xStorage); + OUString aFileName + = m_directories.getURLFromSrc("embeddedobj/qa/cppunit/data/insert-file-config.doc"); + uno::Sequence aMedium{ comphelper::makePropertyValue("URL", aFileName) }; + OUString aName("Object 1"); + uno::Reference xObject + = aContainer.InsertEmbeddedObject(aMedium, aName); + + // Make sure that the insertion fails: + // 1) the user explicitly requested that the data is not loaded into Writer + // 2) this is non-Windows, so OLE embedding is not an option + // so silently still loading the data into Writer would be bad. + CPPUNIT_ASSERT(!xObject.is()); +} + +CPPUNIT_TEST_FIXTURE(EmbeddedobjGeneralTest, testInsertFileConfigVsdx) +{ + // Explicitly disable Word->Writer mapping for this test. + std::shared_ptr pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Filter::Microsoft::Import::VisioToDraw::set(false, pBatch); + pBatch->commit(); + comphelper::ScopeGuard g([]() { + std::shared_ptr pBatchReset( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Filter::Microsoft::Import::VisioToDraw::set(true, pBatchReset); + pBatchReset->commit(); + }); + getComponent().set( + loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument")); + + // Insert a file as an embedded object. + uno::Reference xStorage = comphelper::OStorageHelper::GetTemporaryStorage(); + comphelper::EmbeddedObjectContainer aContainer(xStorage); + OUString aFileName + = m_directories.getURLFromSrc("embeddedobj/qa/cppunit/data/insert-file-config.vsdx"); + uno::Sequence aMedium{ comphelper::makePropertyValue("URL", aFileName) }; + OUString aName("Object 1"); + uno::Reference xObject + = aContainer.InsertEmbeddedObject(aMedium, aName); + + // Make sure that the insertion fails: + // 1) the user explicitly requested that the data is not loaded into Writer + // 2) this is non-Windows, so OLE embedding is not an option + // so silently still loading the data into Writer would be bad. + CPPUNIT_ASSERT(!xObject.is()); +} + +CPPUNIT_TEST_FIXTURE(EmbeddedobjGeneralTest, testInsertFileConfigPdf) +{ + // Explicitly disable Word->Writer mapping for this test. + std::shared_ptr pBatch( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Filter::Adobe::Import::PDFToDraw::set(false, pBatch); + pBatch->commit(); + comphelper::ScopeGuard g([]() { + std::shared_ptr pBatchReset( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Filter::Adobe::Import::PDFToDraw::set(true, pBatchReset); + pBatchReset->commit(); + }); + getComponent().set( + loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument")); + + // Insert a PDF file as an embedded object. + uno::Reference xStorage = comphelper::OStorageHelper::GetTemporaryStorage(); + comphelper::EmbeddedObjectContainer aContainer(xStorage); + OUString aFileName + = m_directories.getURLFromSrc("embeddedobj/qa/cppunit/data/insert-file-config.pdf"); + uno::Sequence aMedium{ comphelper::makePropertyValue("URL", aFileName) }; + OUString aName("Object 1"); + uno::Reference xObject + = aContainer.InsertEmbeddedObject(aMedium, aName); + + // Make sure that the insertion fails: + // 1) the user explicitly requested that the data is not loaded into Writer + // 2) this is non-Windows, so OLE embedding is not an option + // so silently still loading the data into Writer would be bad. + CPPUNIT_ASSERT(!xObject.is()); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/embeddedobj/qa/embedding/EmbeddingTest.java b/embeddedobj/qa/embedding/EmbeddingTest.java new file mode 100644 index 000000000..c2ab6faf0 --- /dev/null +++ b/embeddedobj/qa/embedding/EmbeddingTest.java @@ -0,0 +1,25 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package complex.embedding; + +public interface EmbeddingTest +{ + boolean test(); +} + diff --git a/embeddedobj/qa/embedding/EmbeddingUnitTest.java b/embeddedobj/qa/embedding/EmbeddingUnitTest.java new file mode 100644 index 000000000..245dd1225 --- /dev/null +++ b/embeddedobj/qa/embedding/EmbeddingUnitTest.java @@ -0,0 +1,82 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package complex.embedding; + +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XMultiComponentFactory; +import com.sun.star.connection.XConnector; +import com.sun.star.connection.XConnection; + +import com.sun.star.bridge.XUnoUrlResolver; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.uno.XNamingService; +import com.sun.star.uno.XComponentContext; + +import com.sun.star.container.*; +import com.sun.star.beans.*; +import com.sun.star.lang.*; + +import complexlib.ComplexTestCase; + +import complex.embedding.*; + +import util.utils; +import java.util.*; +import java.io.*; + +/* This unit test for storage objects is designed to + * test most important statements from storage service + * specification. + * + * Regression tests are added to extend the tested + * functionalities. + */ +public class EmbeddingUnitTest extends ComplexTestCase +{ + private XMultiServiceFactory m_xMSF = null; + + public String[] getTestMethodNames() + { + return new String[] { + "ExecuteTest01" }; + } + + public String getTestObjectName() + { + return "EmbeddingUnitTest"; + } + + public void before() + { + m_xMSF = (XMultiServiceFactory)param.getMSF(); + if ( m_xMSF == null ) + { + failed( "Can't create service factory!" ); + return; + } + } + + public void ExecuteTest01() + { + EmbeddingTest aTest = new Test01( m_xMSF, log ); + assure( "Test01 failed!", aTest.test() ); + } + +} + diff --git a/embeddedobj/qa/embedding/Test01.java b/embeddedobj/qa/embedding/Test01.java new file mode 100644 index 000000000..3a8b425bb --- /dev/null +++ b/embeddedobj/qa/embedding/Test01.java @@ -0,0 +1,153 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package complex.embedding; + +import com.sun.star.uno.XInterface; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XSingleServiceFactory; + +import com.sun.star.bridge.XUnoUrlResolver; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.beans.XPropertySet; +import com.sun.star.frame.XLoadable; +import com.sun.star.drawing.XDrawPagesSupplier; +import com.sun.star.drawing.XDrawPages; +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XShape; +import com.sun.star.graphic.XGraphic; + +import com.sun.star.embed.*; + +import share.LogWriter; +import complex.embedding.TestHelper; +import complex.embedding.EmbeddingTest; + +public class Test01 implements EmbeddingTest { + + XMultiServiceFactory m_xMSF; + TestHelper m_aTestHelper; + + public Test01( XMultiServiceFactory xMSF, LogWriter aLogWriter ) + { + m_xMSF = xMSF; + m_aTestHelper = new TestHelper( aLogWriter, "Test01: " ); + } + + public boolean test() + { + try + { + Object oDoc = m_xMSF.createInstance( "com.sun.star.comp.Draw.DrawingDocument" ); + XLoadable xLoad = (XLoadable) UnoRuntime.queryInterface( XLoadable.class, oDoc ); + if ( xLoad == null ) + { + m_aTestHelper.Error( "Can not get XLoadable!" ); + return false; + } + + xLoad.initNew(); + + XDrawPagesSupplier xDPSupply = (XDrawPagesSupplier) UnoRuntime.queryInterface( XDrawPagesSupplier.class, oDoc ); + if ( xDPSupply == null ) + { + m_aTestHelper.Error( "Can not get XDrawPagesSupplier!" ); + return false; + } + + XDrawPages xDrawPages = xDPSupply.getDrawPages(); + if ( xDrawPages == null ) + { + m_aTestHelper.Error( "Can not get XDrawPages object!" ); + return false; + } + + if ( xDrawPages.getCount() == 0 ) + { + m_aTestHelper.Error( "There must be at least one page in the document!" ); + return false; + } + + Object oPage = xDrawPages.getByIndex( 0 ); + XDrawPage xPage = (XDrawPage) UnoRuntime.queryInterface( XDrawPage.class, oPage ); + if ( xPage == null ) + { + m_aTestHelper.Error( "Can not get access to drawing page!" ); + return false; + } + + XMultiServiceFactory xDrFactory = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, + oDoc ); + if ( xDrFactory == null ) + { + m_aTestHelper.Error( "Can not get drawing factory!" ); + return false; + } + + Object oShape = xDrFactory.createInstance( "com.sun.star.drawing.OLE2Shape" ); + XShape xShape = ( XShape ) UnoRuntime.queryInterface( XShape.class, oShape ); + if ( xShape == null ) + { + m_aTestHelper.Error( "Can not create new shape!" ); + return false; + } + + XPropertySet xShapeProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, oShape ); + if ( xShapeProps == null ) + { + m_aTestHelper.Error( "Can not get access to shapes properties!" ); + return false; + } + + xPage.add( xShape ); + xShapeProps.setPropertyValue( "CLSID", "078B7ABA-54FC-457F-8551-6147e776a997" ); + + Object oEmbObj = xShapeProps.getPropertyValue( "EmbeddedObject" ); + XEmbeddedObject xEmbObj = ( XEmbeddedObject ) UnoRuntime.queryInterface( XEmbeddedObject.class, oEmbObj ); + if ( xEmbObj == null ) + { + m_aTestHelper.Error( "Embedded object can not be accessed!" ); + return false; + } + + XEmbeddedClient xClient = xEmbObj.getClientSite(); + if ( xClient == null ) + { + m_aTestHelper.Error( "The client for the object must be set!" ); + return false; + } + + Object oReplacement = xShapeProps.getPropertyValue( "Graphic" ); + XGraphic xReplGraph = ( XGraphic ) UnoRuntime.queryInterface( XGraphic.class, oReplacement ); + if ( xReplGraph == null ) + { + m_aTestHelper.Error( "The replacement graphic should be available!" ); + return false; + } + + return true; + } + catch( Exception e ) + { + m_aTestHelper.Error( "Exception: " + e ); + return false; + } + } +} + diff --git a/embeddedobj/qa/embedding/TestHelper.java b/embeddedobj/qa/embedding/TestHelper.java new file mode 100644 index 000000000..299311171 --- /dev/null +++ b/embeddedobj/qa/embedding/TestHelper.java @@ -0,0 +1,54 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package complex.embedding; + +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.uno.AnyConverter; + +import com.sun.star.lang.*; +import com.sun.star.embed.*; +import com.sun.star.packages.*; +import com.sun.star.io.*; +import com.sun.star.beans.*; + +import share.LogWriter; + +public class TestHelper { + + LogWriter m_aLogWriter; + String m_sTestPrefix; + + public TestHelper( LogWriter aLogWriter, String sTestPrefix ) + { + m_aLogWriter = aLogWriter; + m_sTestPrefix = sTestPrefix; + } + + public void Error( String sError ) + { + m_aLogWriter.println( m_sTestPrefix + "Error: " + sError ); + } + + public void Message( String sMessage ) + { + m_aLogWriter.println( m_sTestPrefix + sMessage ); + } +} + diff --git a/embeddedobj/qa/embedding/makefile.mk b/embeddedobj/qa/embedding/makefile.mk new file mode 100644 index 000000000..483440c22 --- /dev/null +++ b/embeddedobj/qa/embedding/makefile.mk @@ -0,0 +1,75 @@ +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +PRJ = ..$/.. +TARGET = EmbeddingUnitTest +PRJNAME = embeddedobj +PACKAGE = complex$/embedding + +# --- Settings ----------------------------------------------------- +.INCLUDE: settings.mk + + +#----- compile .java files ----------------------------------------- + +JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar + +JAVAFILES =\ + EmbeddingUnitTest.java\ + EmbeddingTest.java\ + TestHelper.java\ + Test01.java + +JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class) + +#----- make a jar from compiled files ------------------------------ + +MAXLINELENGTH = 100000 + +JARCLASSDIRS = $(PACKAGE) +JARTARGET = $(TARGET).jar +JARCOMPRESS = TRUE + +# --- Parameters for the test -------------------------------------- + +# start an office if the parameter is set for the makefile +.IF "$(OFFICE)" == "" +CT_APPEXECCOMMAND = +.ELSE +CT_APPEXECCOMMAND = -AppExecutionCommand "$(OFFICE)$/soffice --accept=socket,host=localhost,port=8100;urp;" +.ENDIF + +# test base is java complex +CT_TESTBASE = -TestBase java_complex + +# test looks something like the.full.package.TestName +CT_TEST = -o $(PACKAGE:s\$/\.\).$(JAVAFILES:b) + +# start the runner application +CT_APP = org.openoffice.Runner + +# --- Targets ------------------------------------------------------ + +.INCLUDE: target.mk + +RUN: run + +run: + java -cp $(CLASSPATH) $(CT_APP) $(CT_TESTBASE) $(CT_APPEXECCOMMAND) $(CT_TEST) + + -- cgit v1.2.3