summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2022-10-23 17:56:50 -0400
committerMiklos Vajna <vmiklos@collabora.com>2022-11-04 08:28:25 +0100
commitf994f4312d8e166e79b36f7bf0f8c41c3f1082f4 (patch)
tree8dbceee4fbd364103de4571effa5083eda06755b /sd
parent2cfd5a875231cc9ae59cc495ba82efc54de2016d (diff)
svg: export embedded video
Change-Id: Ie5dcd1fb4abbaf53f48107e7def0f42daad24596 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142145 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/qa/unit/SVGExportTests.cxx35
-rw-r--r--sd/qa/unit/data/odp/slide-video-thumbnail.odpbin0 -> 38222 bytes
2 files changed, 35 insertions, 0 deletions
diff --git a/sd/qa/unit/SVGExportTests.cxx b/sd/qa/unit/SVGExportTests.cxx
index 9dfe60abfd82..1f973645142a 100644
--- a/sd/qa/unit/SVGExportTests.cxx
+++ b/sd/qa/unit/SVGExportTests.cxx
@@ -32,6 +32,9 @@
#define SVG_USE *[name()='use']
#define SVG_PATTERN *[name()='pattern']
#define SVG_RECT *[name()='rect']
+#define SVG_FOREIGNOBJECT *[name()='foreignObject']
+#define SVG_BODY *[name()='body']
+#define SVG_VIDEO *[name()='video']
using namespace css;
@@ -175,6 +178,37 @@ public:
assertXPathContent(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[7]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN ), "<number>");
}
+ void testSVGExportEmbeddedVideo()
+ {
+ loadFromURL(u"slide-video-thumbnail.odp");
+ utl::TempFileNamed aTempFile = save("impress_svg_Export");
+
+ xmlDocUniquePtr svgDoc = parseXml(aTempFile);
+ CPPUNIT_ASSERT(svgDoc);
+
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG ), 1);
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2] ), "class", "SlideGroup");
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1] ), "visibility", "hidden");
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1] ), "id", "container-id1");
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1] ), "class", "Slide");
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1] ), "class", "Page");
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1] ), "class", "TitleText");
+
+ // First one has no valid video, so we just generate the stock thumbnail as an image.
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[2] ), "class", "com.sun.star.presentation.MediaShape");
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[2]/SVG_G[1]/SVG_IMAGE ), 1);
+
+ // The second one is a valid video, with the thumbnail embedded.
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[5] ), "class", "com.sun.star.drawing.MediaShape");
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[5]/SVG_G[1] ), 1);
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[5]/SVG_G[1]/SVG_FOREIGNOBJECT ), 1);
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[5]/SVG_G[1]/SVG_FOREIGNOBJECT/SVG_BODY ), 1);
+ assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[5]/SVG_G[1]/SVG_FOREIGNOBJECT/SVG_BODY/SVG_VIDEO ), "preload", "auto");
+
+ const OUString poster = getXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_G[2]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[1]/SVG_G[5]/SVG_G[1]/SVG_FOREIGNOBJECT/SVG_BODY/SVG_VIDEO), "poster");
+ CPPUNIT_ASSERT_MESSAGE("The video poster is invalid", poster.startsWith("data:image/png;base64,"));
+ }
+
void testSVGExportSlideBitmapBackground()
{
loadFromURL(u"slide-bitmap-background.odp");
@@ -295,6 +329,7 @@ public:
CPPUNIT_TEST(testSVGExportJavascriptURL);
CPPUNIT_TEST(testSVGExportSlideCustomBackground);
CPPUNIT_TEST(testSVGExportTextFieldsInMasterPage);
+ CPPUNIT_TEST(testSVGExportEmbeddedVideo);
CPPUNIT_TEST(testSVGExportSlideBitmapBackground);
CPPUNIT_TEST(testSVGExportSlideTileBitmapBackground);
CPPUNIT_TEST(testSVGPlaceholderLocale);
diff --git a/sd/qa/unit/data/odp/slide-video-thumbnail.odp b/sd/qa/unit/data/odp/slide-video-thumbnail.odp
new file mode 100644
index 000000000000..2bb4ed5a86ac
--- /dev/null
+++ b/sd/qa/unit/data/odp/slide-video-thumbnail.odp
Binary files differ