diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2019-01-09 10:54:10 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2019-06-28 11:40:20 +0200 |
commit | c614e1fb800e531afd52c89a133a98c6e075b8c9 (patch) | |
tree | 8947bc7dc84440a1017c8046fe5a24662022e0b7 /framework | |
parent | 04146296b204da35c01420844930ae0c58fc8c89 (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.cxx | 11 |
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); |