[Libreoffice-commits] core.git: ucb/source
Giuseppe Castagno
giuseppe.castagno at acca-esse.eu
Fri Apr 15 10:04:57 UTC 2016
ucb/source/ucp/webdav-neon/webdavcontent.cxx | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
New commits:
commit 70bb8c257e7fc402da60fa70109cece1fe4c69d1
Author: Giuseppe Castagno <giuseppe.castagno at acca-esse.eu>
Date: Thu Mar 17 11:09:32 2016 +0100
Related tdf#88502 Add default XCommandEnvironment to ...
... Content::getResourceType
During WebDAV operation the css::ucb::XCommandEnvironment is almost always
needed.
Depending on the operation, sometimes the client doesn't set it, in order
to disable the exception processing that takes part in
ucbhelper::cancelCommandExecution.
Change-Id: Ib4bf6a7ca3a902437cab9050c3e310342c655ff2
Reviewed-on: https://gerrit.libreoffice.org/23327
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: jan iversen <jani at documentfoundation.org>
diff --git a/ucb/source/ucp/webdav-neon/webdavcontent.cxx b/ucb/source/ucp/webdav-neon/webdavcontent.cxx
index 50dc91c..50dce42 100644
--- a/ucb/source/ucp/webdav-neon/webdavcontent.cxx
+++ b/ucb/source/ucp/webdav-neon/webdavcontent.cxx
@@ -51,6 +51,7 @@
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/lang/IllegalAccessException.hpp>
#include <com/sun/star/task/PasswordContainerInteractionHandler.hpp>
+#include <com/sun/star/task/InteractionHandler.hpp>
#include <com/sun/star/ucb/CommandEnvironment.hpp>
#include <com/sun/star/ucb/CommandFailedException.hpp>
#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
@@ -3436,6 +3437,27 @@ Content::ResourceType Content::getResourceType(
}
else
{
+ // In case xEnv is present, uses the interaction handler provided
+ // in xEnv.
+ // In case xEnv is not present, supply a command env to PROPFIND()
+ // that contains an interaction handler in order to activate the
+ // credential dialog if the server request them.
+ // The command env is needed by lower level function for examples as
+ // NeonSession_CertificationNotify where it is used to check the server
+ // certificate or ask the user for a manual confirmation if the certificate
+ // needs the user visual check.
+ // xEnv is still used in cancelCommandExecution(), so the cancelling operates
+ // as the client application (e.g. framework) requested.
+ css::uno::Reference< css::ucb::XCommandEnvironment > xAuthEnv( xEnv );
+ if( !xAuthEnv.is() )
+ {
+ css:: uno::Reference< task::XInteractionHandler > xIH(
+ css::task::InteractionHandler::createWithParent( m_xContext, nullptr ), css::uno::UNO_QUERY_THROW );
+
+ xAuthEnv = css::ucb::CommandEnvironment::create(
+ m_xContext, xIH, css::uno::Reference< ucb::XProgressHandler >() ) ;
+ }
+
try
{
// Try to fetch some frequently used property value, e.g. those
@@ -3452,7 +3474,7 @@ Content::ResourceType Content::getResourceType(
ContentProperties::UCBNamesToDAVNames( aProperties, aPropNames );
- rResAccess->PROPFIND( DAVZERO, aPropNames, resources, xEnv );
+ rResAccess->PROPFIND( DAVZERO, aPropNames, resources, xAuthEnv );
if ( resources.size() == 1 )
{
More information about the Libreoffice-commits
mailing list