Kaydet (Commit) 0522b847 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Straighten the removeFragment code again

...what apparently happened is:

(1) First, 2c6363eb "Be less pathetic" replaced
    MediaDescriptor::impl_normalizeURL with removeFragment.

(2) Then, b378e754 "CMIS: fix file saving issue"
    (plus follow-up b50d3727 "WaE: unused
    function 'removeFragment'") removed calling removeFragment at all (but re-
    introduced a now bogus "Parse URL! ..." comment that (1) had removed), which

(3) 34f4d257 "CMIS file picker: it really does
    not like ID Mark" tried to revert again (but kept the bogus comment in), and

(4) odd commit 319b1603 "CMIS file picker: it
    really does not like ID Mark" (that looks like a merge conflict resolution
    gone wrong) erroneously re-introduced MediaDescriptor::impl_normalizeURL
    that (1) had removed, which caused a -Wunused-variable warning that

(5) 706c5a54 "-Werror,-Wunused-variable" tried
    to fix, but working under wrong assumptions.

The solution is to go effectively back to the code as it was after (1).

Change-Id: I62dfa9fa3adbea6b2cb10a509416fe3797c577b9
üst a0b389d6
......@@ -49,21 +49,22 @@ namespace comphelper{
namespace {
OUString removeFragment(OUString const & uri) {
css::uno::Reference< css::uri::XUriReference > ref(
css::uri::UriReferenceFactory::create(
comphelper::getProcessComponentContext())->
parse(uri));
if (ref.is()) {
ref->clearFragment();
return ref->getUriReference();
} else {
SAL_WARN("comphelper", "cannot parse <" << uri << ">");
return uri;
}
OUString removeFragment(OUString const & uri) {
css::uno::Reference< css::uri::XUriReference > ref(
css::uri::UriReferenceFactory::create(
comphelper::getProcessComponentContext())->
parse(uri));
if (ref.is()) {
ref->clearFragment();
return ref->getUriReference();
} else {
SAL_WARN("comphelper", "cannot parse <" << uri << ">");
return uri;
}
}
}
const OUString& MediaDescriptor::PROP_ABORTED()
{
static const OUString sProp("Aborted");
......@@ -483,9 +484,7 @@ sal_Bool MediaDescriptor::impl_addInputStream( sal_Bool bLockFile )
throw css::uno::Exception("Found no URL.",
css::uno::Reference< css::uno::XInterface >());
// Parse URL! Only the main part has to be used further. E.g. a jumpmark can make trouble
OUString sNormalizedURL = impl_normalizeURL( sURL );
return impl_openStreamWithURL( removeFragment(sNormalizedURL), bLockFile );
return impl_openStreamWithURL( removeFragment(sURL), bLockFile );
}
catch(const css::uno::Exception& ex)
{
......@@ -724,40 +723,6 @@ sal_Bool MediaDescriptor::impl_openStreamWithURL( const OUString& sURL, sal_Bool
return xInputStream.is();
}
OUString MediaDescriptor::impl_normalizeURL(const OUString& sURL)
{
/* Remove Jumpmarks (fragments) of an URL only here.
They are not part of any URL and as a result may be
no ucb content can be created then.
On the other side arguments must exists ... because
they are part of an URL.
Do not use the URLTransformer service here. Because
it parses the URL in another way. It's main part isnt enough
and it's complete part contains the jumpmark (fragment) parameter ...
*/
try
{
css::uno::Reference< css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
css::uno::Reference< css::uri::XUriReferenceFactory > xUriFactory = css::uri::UriReferenceFactory::create(xContext);;
css::uno::Reference< css::uri::XUriReference > xUriRef = xUriFactory->parse(sURL);
if (xUriRef.is())
{
xUriRef->clearFragment();
return xUriRef->getUriReference();
}
}
catch(const css::uno::RuntimeException&)
{ throw; }
catch(const css::uno::Exception&)
{}
// If an error ocurred ... return the original URL.
// It's a try .-)
return sURL;
}
} // namespace comphelper
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -289,18 +289,6 @@ class COMPHELPER_DLLPUBLIC MediaDescriptor : public SequenceAsHashMap
be created as new item. FALSE otherwise.
*/
COMPHELPER_DLLPRIVATE sal_Bool impl_addInputStream( sal_Bool bLockFile );
/** @short some URL parts can make trouble for opening streams (e.g. jumpmarks.)
An URL should be "normalized" before its used.
@param sURL
the original URL (e.g. including a jumpmark)
@return [string]
the "normalized" URL (e.g. without jumpmark)
*/
COMPHELPER_DLLPRIVATE OUString impl_normalizeURL(const OUString& sURL);
};
} // namespace comphelper
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment