Kaydet (Commit) 70bb8c25 authored tarafından Giuseppe Castagno's avatar Giuseppe Castagno Kaydeden (comit) jan iversen

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/23327Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarjan iversen <jani@documentfoundation.org>
üst c5f7d39c
......@@ -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 )
{
......
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