[Libreoffice-commits] core.git: 3 commits - sd/qa sw/CppunitTest_sw_htmlimport.mk sw/Module_sw.mk sw/qa sw/source
Matúš Kukan
matus.kukan at collabora.com
Wed Sep 17 10:20:58 PDT 2014
sd/qa/unit/data/pptx/bnc591147.pptx |binary
sd/qa/unit/import-tests.cxx | 37 +++++++++++++++++++
sw/CppunitTest_sw_htmlimport.mk | 56 ++++++++++++++++++++++++++++++
sw/Module_sw.mk | 1
sw/qa/extras/htmlimport/data/picture.html | 23 ++++++++++++
sw/qa/extras/htmlimport/htmlimport.cxx | 35 ++++++++++++++++++
sw/source/filter/html/htmlgrin.cxx | 19 +++-------
7 files changed, 159 insertions(+), 12 deletions(-)
New commits:
commit a3ef3b658dea9b59ded319f2f092e73e4deaad24
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Wed Sep 17 18:50:04 2014 +0200
bnc#591147: unit test for media files import
Change-Id: Ie45818c54d756628e9cbc2619e5ad43cedcac92c
diff --git a/sd/qa/unit/data/pptx/bnc480256.pptx b/sd/qa/unit/data/pptx/bnc480256.pptx
old mode 100755
new mode 100644
diff --git a/sd/qa/unit/data/pptx/bnc591147.pptx b/sd/qa/unit/data/pptx/bnc591147.pptx
new file mode 100644
index 0000000..afa382e
Binary files /dev/null and b/sd/qa/unit/data/pptx/bnc591147.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index 91fec0f..6bc206a 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -77,6 +77,7 @@ public:
void testBnc870237();
void testBnc887225();
void testBnc480256();
+ void testBnc591147();
void testCreationDate();
void testBnc584721_1();
void testBnc584721_2();
@@ -102,6 +103,7 @@ public:
CPPUNIT_TEST(testBnc870237);
CPPUNIT_TEST(testBnc887225);
CPPUNIT_TEST(testBnc480256);
+ CPPUNIT_TEST(testBnc591147);
CPPUNIT_TEST(testCreationDate);
CPPUNIT_TEST(testBnc584721_1);
CPPUNIT_TEST(testBnc584721_2);
@@ -773,6 +775,41 @@ void SdFiltersTest::testBnc584721_3()
xDocShRef->DoClose();
}
+void SdFiltersTest::testBnc591147()
+{
+ ::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc591147.pptx"), PPTX);
+
+ // In the document, there are two slides with media files.
+ uno::Reference< drawing::XDrawPagesSupplier > xDoc(
+ xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW );
+ CPPUNIT_ASSERT_EQUAL( sal_Int32(2), xDoc->getDrawPages()->getCount() );
+
+ // First page has video file inserted
+ uno::Reference< drawing::XDrawPage > xPage(
+ xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW );
+ CPPUNIT_ASSERT_EQUAL( sal_Int32(1), xPage->getCount() );
+
+ uno::Reference< drawing::XShape > xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW );
+ uno::Reference< beans::XPropertySet > xPropSet( xShape, uno::UNO_QUERY_THROW );
+ OUString sVideoURL("emptyURL");
+ bool bSucess = xPropSet->getPropertyValue("MediaURL") >>= sVideoURL;
+ CPPUNIT_ASSERT_MESSAGE( "MediaURL property is not set", bSucess );
+
+ // Second page has audio file inserted
+ xPage.set( xDoc->getDrawPages()->getByIndex(1), uno::UNO_QUERY_THROW );
+ CPPUNIT_ASSERT_EQUAL( sal_Int32(1), xPage->getCount() );
+
+ xShape.set( xPage->getByIndex(0), uno::UNO_QUERY_THROW );
+ xPropSet.set( xShape, uno::UNO_QUERY_THROW );
+ OUString sAudioURL("emptyURL");
+ bSucess = xPropSet->getPropertyValue("MediaURL") >>= sAudioURL;
+ CPPUNIT_ASSERT_MESSAGE( "MediaURL property is not set", bSucess );
+
+ CPPUNIT_ASSERT_MESSAGE( "sAudioURL and sVideoURL should not be equal", sAudioURL != sVideoURL );
+
+ xDocShRef->DoClose();
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdFiltersTest);
CPPUNIT_PLUGIN_IMPLEMENT();
commit bcf8dc3d9b9d2df6f6a67c71efc52630ff65371b
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Wed Sep 17 11:56:24 2014 +0200
sw: html import test: local images shouldn't be file links (bnc#580834)
Change-Id: Id35e03a3f814609e40e4beea778e66cce39054d1
diff --git a/sw/CppunitTest_sw_htmlimport.mk b/sw/CppunitTest_sw_htmlimport.mk
new file mode 100644
index 0000000..3036076
--- /dev/null
+++ b/sw/CppunitTest_sw_htmlimport.mk
@@ -0,0 +1,56 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# 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/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sw_htmlimport))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_htmlimport, \
+ sw/qa/extras/htmlimport/htmlimport \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_htmlimport, \
+ comphelper \
+ cppu \
+ cppuhelper \
+ i18nlangtag \
+ sal \
+ sw \
+ test \
+ tl \
+ unotest \
+ utl \
+ vcl \
+ $(gb_UWINAPI) \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,sw_htmlimport,\
+ boost_headers \
+ libxml2 \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sw_htmlimport,\
+ -I$(SRCDIR)/sw/inc \
+ -I$(SRCDIR)/sw/source/core/inc \
+ -I$(SRCDIR)/sw/qa/extras/inc \
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_sdk_api,sw_htmlimport))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_htmlimport))
+$(eval $(call gb_CppunitTest_use_vcl,sw_htmlimport))
+
+$(eval $(call gb_CppunitTest_use_rdb,sw_htmlimport,services))
+
+$(eval $(call gb_CppunitTest_use_configuration,sw_htmlimport))
+
+$(eval $(call gb_CppunitTest_use_unittest_configuration,sw_htmlimport))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index 7e645c8..3a3d75b 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -53,6 +53,7 @@ $(eval $(call gb_Module_add_check_targets,sw,\
$(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_uwriter \
CppunitTest_sw_htmlexport \
+ CppunitTest_sw_htmlimport \
CppunitTest_sw_macros_test \
CppunitTest_sw_ooxmlexport \
CppunitTest_sw_ooxmlexport2 \
diff --git a/sw/qa/extras/htmlimport/data/picture.html b/sw/qa/extras/htmlimport/data/picture.html
new file mode 100644
index 0000000..c0b2e6c
--- /dev/null
+++ b/sw/qa/extras/htmlimport/data/picture.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+ <body>
+ <div>
+ <p>
+ This document should contain only one link. (Edit -> Links...)
+ </p>
+ <p>
+ The picture below is supposed to be fully inserted into the document, not just as a link.
+ <br/>
+ <a style="display:inline-block;" href="http://www.libreoffice.org/" title="Go to the Home of LibreOffice and the LibreOffice Community page">
+ <img src="../../../../../odk/docs/images/sdk_head-1.png" width="377" height="120px"/>
+ </a>
+ </p>
+ This one is supposed to be inserted as a link, since the source is "http://..." URL.
+ <br/>
+ <a style="display:inline-block;" href="http://www.libreoffice.org/" title="Go to the Home of LibreOffice and the LibreOffice Community page">
+ <img src="http://www.libreoffice.org/themes/libo/images/logo.png" width="218px" height="45px"/>
+ </a>
+ </p>
+ </div>
+ </body>
+</html>
diff --git a/sw/qa/extras/htmlimport/htmlimport.cxx b/sw/qa/extras/htmlimport/htmlimport.cxx
new file mode 100644
index 0000000..86b7b86
--- /dev/null
+++ b/sw/qa/extras/htmlimport/htmlimport.cxx
@@ -0,0 +1,35 @@
+/*
+ * 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 <swmodeltestbase.hxx>
+
+#include <sfx2/linkmgr.hxx>
+
+#include <docsh.hxx>
+#include <editsh.hxx>
+
+class HtmlImportTest : public SwModelTestBase
+{
+ public:
+ HtmlImportTest() : SwModelTestBase("sw/qa/extras/htmlimport/data/", "HTML (StarWriter)") {}
+};
+
+#define DECLARE_HTMLIMPORT_TEST(TestName, filename) DECLARE_SW_IMPORT_TEST(TestName, filename, HtmlImportTest)
+
+DECLARE_HTMLIMPORT_TEST(testPictureImport, "picture.html")
+{
+ SwXTextDocument* pTxtDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get());
+ CPPUNIT_ASSERT(pTxtDoc);
+ // The document contains one embeded picture and one stored as a link.
+ const sfx2::LinkManager& rLinkManager = pTxtDoc->GetDocShell()->GetDoc()->GetEditShell()->GetLinkManager();
+ CPPUNIT_ASSERT_EQUAL(size_t(1), rLinkManager.GetLinks().size());
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 3914a711060341345f15b83656457f90095f32d6
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Wed Sep 17 11:57:24 2014 +0200
bnc#580834: HTML import: Embed images if source URL is a local file.
Use also INET_PROT_FILE to determine whether to import images as links.
Change-Id: I072be21086505f6300463e4e3cfb276cbe506803
diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
index 19d11da..5a08056 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -696,23 +696,18 @@ IMAGE_SETEVENT:
Graphic aEmptyGrf;
INetURLObject aGraphicURL( sGrfNm );
- if( aGraphicURL.GetProtocol() == INET_PROT_DATA )
+ if (aGraphicURL.GetProtocol() == INET_PROT_DATA ||
+ aGraphicURL.GetProtocol() == INET_PROT_FILE)
{
- SvMemoryStream* aStream = aGraphicURL.getData();
- if( aStream )
- {
- GraphicFilter::GetGraphicFilter().ImportGraphic( aEmptyGrf, OUString(), *aStream );
- free( aStream );
- }
- else
- {
- aEmptyGrf.SetDefaultType();
- }
+ if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aEmptyGrf, aGraphicURL))
+ sGrfNm = "";
}
- else
+ if (!sGrfNm.isEmpty())
{
aEmptyGrf.SetDefaultType();
}
+
+ // passing empty sGrfNm here, means we don't want the graphic to be linked
SwFrmFmt *pFlyFmt = pDoc->getIDocumentContentOperations().Insert( *pPam, sGrfNm, aEmptyOUStr, &aEmptyGrf,
&aFrmSet, NULL, NULL );
SwGrfNode *pGrfNd = pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
More information about the Libreoffice-commits
mailing list