[Libreoffice-commits] core.git: sfx2/qa sfx2/source
Stephan Bergmann
sbergman at redhat.com
Mon Oct 7 03:26:01 PDT 2013
sfx2/qa/complex/sfx2/DocumentProperties.java | 3 ++-
sfx2/source/doc/SfxDocumentMetaData.cxx | 15 +++++++++++----
2 files changed, 13 insertions(+), 5 deletions(-)
New commits:
commit 6adddbc2a80456cc2ad3b62deada7ecd4a6cf641
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon Oct 7 12:10:14 2013 +0200
Use URL as fallback for DocumentBaseURL in css.document.MediaDescriptor
...in SfxDocumentMetaData::getURLProperties, to avoid
"tools/source/fsys/urlobj.cxx:1741: cannot make <[...]> absolute against broken
base <>" warnings when SvXMLImport::GetAbsoluteReference tries to make absolute
against an erroneously empty base URI any relative URIs contained in the
document's meta data.
As a consequence, such relative URIs contained in the document's meta data will
now be made absolute upon loading in SfxDocumentMetaData::getURLProperties.
However, I saw no negative consequences of that (other than having to adapt
sfx2/qa/complex/sfx2/DocumentProperties.java in the obvious way). Whether a
document written out again contains such meta data URIs as absolute or relative
is only controlled by "Tools - Options... - Load/Save - General - Save - Save
URLs relative to file system" and not affected by this fix. (I verified that by
loading sfx2/qa/complex/sfx2/testdocuments/TEST.odt, which contains a relative
meta:auto-reload xlink:href="../TEST.odt" in its meta.xml, and saving it as a
new file, with and without "Save URLs relative to file system" checked, and
inspecting the resulting documen's meta.xml entries.)
Change-Id: Ia1b6004c8597a726eb59c6b2234fd3ecb0bdcc09
diff --git a/sfx2/qa/complex/sfx2/DocumentProperties.java b/sfx2/qa/complex/sfx2/DocumentProperties.java
index 88f0f4c..0588979 100644
--- a/sfx2/qa/complex/sfx2/DocumentProperties.java
+++ b/sfx2/qa/complex/sfx2/DocumentProperties.java
@@ -199,7 +199,8 @@ public class DocumentProperties
assertTrue("TemplateURL",
xDP.getTemplateURL().endsWith("memmodern.ott"));
assertEquals("TemplateDate", 17, xDP.getTemplateDate().Hours);
- assertEquals("AutoloadURL", "../TEST.odt", xDP.getAutoloadURL());
+ assertTrue(
+ "AutoloadURL", xDP.getAutoloadURL().endsWith("/TEST.odt"));
assertEquals("AutoloadSecs", 0, xDP.getAutoloadSecs());
assertEquals("DefaultTarget", "_blank", xDP.getDefaultTarget());
assertEquals("EditingCycles", 3, xDP.getEditingCycles());
diff --git a/sfx2/source/doc/SfxDocumentMetaData.cxx b/sfx2/source/doc/SfxDocumentMetaData.cxx
index fe9cc58..4e89b6a 100644
--- a/sfx2/source/doc/SfxDocumentMetaData.cxx
+++ b/sfx2/source/doc/SfxDocumentMetaData.cxx
@@ -649,12 +649,14 @@ SfxDocumentMetaData::getURLProperties(
{
css::uno::Reference< css::beans::XPropertyBag> xPropArg = css::beans::PropertyBag::createDefault( m_xContext );
try {
+ css::uno::Any baseUri;
for (sal_Int32 i = 0; i < i_rMedium.getLength(); ++i) {
if (i_rMedium[i].Name == "DocumentBaseURL") {
- xPropArg->addProperty(
- OUString("BaseURI"),
- css::beans::PropertyAttribute::MAYBEVOID,
- i_rMedium[i].Value);
+ baseUri = i_rMedium[i].Value;
+ } else if (i_rMedium[i].Name == "URL") {
+ if (!baseUri.hasValue()) {
+ baseUri = i_rMedium[i].Value;
+ }
} else if (i_rMedium[i].Name == "HierarchicalDocumentName") {
xPropArg->addProperty(
OUString("StreamRelPath"),
@@ -662,6 +664,11 @@ SfxDocumentMetaData::getURLProperties(
i_rMedium[i].Value);
}
}
+ if (baseUri.hasValue()) {
+ xPropArg->addProperty(
+ "BaseURI", css::beans::PropertyAttribute::MAYBEVOID,
+ baseUri);
+ }
xPropArg->addProperty(OUString("StreamName"),
css::beans::PropertyAttribute::MAYBEVOID,
css::uno::makeAny(OUString(s_meta)));
More information about the Libreoffice-commits
mailing list