summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2019-01-09 10:54:10 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2019-06-28 11:40:20 +0200
commitc614e1fb800e531afd52c89a133a98c6e075b8c9 (patch)
tree8947bc7dc84440a1017c8046fe5a24662022e0b7 /framework
parent04146296b204da35c01420844930ae0c58fc8c89 (diff)
tdf#126121: WebDAV redirection detection
This rewrites URI of a document opened from a WebDAV mapped UNC path on Windows (like "file://server/DavWWWRoot/Dir/Doc.odt") into HTTP URI (like "http://server/Dir/Doc.odt"). This allows using WebDAV protocol for these files, and e.g. get information about other user who locked the document to show when asking if open read-only or a copy. Change-Id: I643fa8df30d4b163783b279b1b973304fcafff37 Reviewed-on: https://gerrit.libreoffice.org/71746 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/74833
Diffstat (limited to 'framework')
-rw-r--r--framework/source/loadenv/loadenv.cxx11
1 files changed, 8 insertions, 3 deletions
diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx
index 2963013872f9..830b1faa6f64 100644
--- a/framework/source/loadenv/loadenv.cxx
+++ b/framework/source/loadenv/loadenv.cxx
@@ -89,6 +89,7 @@
#include <cppuhelper/implbase.hxx>
#include <comphelper/profilezone.hxx>
#include <classes/taskcreator.hxx>
+#include <tools/fileutil.hxx>
const char PROP_TYPES[] = "Types";
const char PROP_NAME[] = "Name";
@@ -246,21 +247,25 @@ void LoadEnv::initializeLoading(const OUString& sURL, const uno::Sequence<beans:
m_bReactivateControllerOnError = false;
m_bLoaded = false;
+ OUString aRealURL;
+ if (!tools::IsMappedWebDAVPath(sURL, &aRealURL))
+ aRealURL = sURL;
+
// try to find out, if its really a content, which can be loaded or must be "handled"
// We use a default value for this in-parameter. Then we have to start a complex check method
// internally. But if this check was already done outside it can be suppressed to perform
// the load request. We take over the result then!
- m_eContentType = LoadEnv::classifyContent(sURL, lMediaDescriptor);
+ m_eContentType = LoadEnv::classifyContent(aRealURL, lMediaDescriptor);
if (m_eContentType == E_UNSUPPORTED_CONTENT)
throw LoadEnvException(LoadEnvException::ID_UNSUPPORTED_CONTENT, "from LoadEnv::initializeLoading");
// make URL part of the MediaDescriptor
// It doesn't matter if it is already an item of it.
// It must be the same value... so we can overwrite it :-)
- m_lMediaDescriptor[utl::MediaDescriptor::PROP_URL()] <<= sURL;
+ m_lMediaDescriptor[utl::MediaDescriptor::PROP_URL()] <<= aRealURL;
// parse it - because some following code require that
- m_aURL.Complete = sURL;
+ m_aURL.Complete = aRealURL;
uno::Reference<util::XURLTransformer> xParser(util::URLTransformer::create(m_xContext));
xParser->parseStrict(m_aURL);