tdf#103274: Add helper for a default XCommandEnvironment reference.
This helper should be used where the empty XCommandEnvironment e.g. something like: css::uno::Reference< css::ucb::XCommandEnvironment >() is currently used. See comment in the committed code (include/unotools/ucbhelper.hxx) for details. A case use is presented in this commit, please see: sfx2/source/doc/docfile.cxx for details. Change-Id: Ieb97c0ed61f31ef8df532c8be0e7ff1035327915 Reviewed-on: https://gerrit.libreoffice.org/29927 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Giuseppe Castagno <giuseppe.castagno@acca-esse.eu>
This commit is contained in:
parent
3c4f17b571
commit
26c99e42db
@ -80,6 +80,36 @@ UNOTOOLS_DLLPUBLIC bool IsSubPath(
|
|||||||
UNOTOOLS_DLLPUBLIC bool EqualURLs(
|
UNOTOOLS_DLLPUBLIC bool EqualURLs(
|
||||||
OUString const & url1, OUString const & url2);
|
OUString const & url1, OUString const & url2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a default XCommandEnvironment to be used
|
||||||
|
* when creating a ucbhelper::Content.
|
||||||
|
*
|
||||||
|
* Due to the way the WebDAV UCP provider works, an interaction handler
|
||||||
|
* is always needed:
|
||||||
|
* 1) to activate the credential dialog or to provide the cached credentials
|
||||||
|
* whenever the server requests them;
|
||||||
|
*
|
||||||
|
* 2) in case of ssl connection (https) to activate the dialog to show the
|
||||||
|
* certificate if said certificate looks wrong or dubious.
|
||||||
|
*
|
||||||
|
* This helper provides the XCommandEnvironment with an interaction
|
||||||
|
* handler that intercepts:
|
||||||
|
* 1) css::ucb::AuthenticationRequest()
|
||||||
|
* 2) css::ucb::CertificateValidationRequest()
|
||||||
|
* 3) css::ucb::InteractiveIOException()
|
||||||
|
* 4) css::ucb::UnsupportedDataSinkException()
|
||||||
|
*
|
||||||
|
* Exception 1) and 2) will be passed to the UI handler, e.g. shown to
|
||||||
|
* the user for interaction.
|
||||||
|
*
|
||||||
|
* Exception 3) and 4) will be have a default 'Abort' result.
|
||||||
|
* See comphelper::StillReadWriteInteraction for details.
|
||||||
|
* comphelper::StillReadWriteInteraction was introduced in
|
||||||
|
* commit bbe51f039dffca2506ea542feb78571b6358b981.
|
||||||
|
*/
|
||||||
|
UNOTOOLS_DLLPUBLIC
|
||||||
|
css::uno::Reference< css::ucb::XCommandEnvironment > getDefaultCommandEnvironment();
|
||||||
|
|
||||||
} }
|
} }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -394,8 +394,11 @@ util::DateTime SfxMedium::GetInitFileDate( bool bIgnoreOldValue )
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
uno::Reference< css::ucb::XCommandEnvironment > xDummyEnv;
|
// add a default css::ucb::XCommandEnvironment
|
||||||
::ucbhelper::Content aContent( GetURLObject().GetMainURL( INetURLObject::NO_DECODE ), xDummyEnv, comphelper::getProcessComponentContext() );
|
// in order to have the WebDAV UCP provider manage http/https authentication correctly
|
||||||
|
::ucbhelper::Content aContent( GetURLObject().GetMainURL( INetURLObject::NO_DECODE ),
|
||||||
|
utl::UCBContentHelper::getDefaultCommandEnvironment(),
|
||||||
|
comphelper::getProcessComponentContext() );
|
||||||
|
|
||||||
aContent.getPropertyValue("DateModified") >>= pImpl->m_aDateTime;
|
aContent.getPropertyValue("DateModified") >>= pImpl->m_aDateTime;
|
||||||
pImpl->m_bGotDateTime = true;
|
pImpl->m_bGotDateTime = true;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||||
#include <com/sun/star/sdbc/XResultSet.hpp>
|
#include <com/sun/star/sdbc/XResultSet.hpp>
|
||||||
#include <com/sun/star/task/XInteractionHandler.hpp>
|
#include <com/sun/star/task/XInteractionHandler.hpp>
|
||||||
|
#include <com/sun/star/task/InteractionHandler.hpp>
|
||||||
#include <com/sun/star/ucb/CommandAbortedException.hpp>
|
#include <com/sun/star/ucb/CommandAbortedException.hpp>
|
||||||
#include <com/sun/star/ucb/ContentInfo.hpp>
|
#include <com/sun/star/ucb/ContentInfo.hpp>
|
||||||
#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
|
#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
|
||||||
@ -46,6 +47,7 @@
|
|||||||
#include <com/sun/star/util/DateTime.hpp>
|
#include <com/sun/star/util/DateTime.hpp>
|
||||||
#include <comphelper/processfactory.hxx>
|
#include <comphelper/processfactory.hxx>
|
||||||
#include <cppuhelper/exc_hlp.hxx>
|
#include <cppuhelper/exc_hlp.hxx>
|
||||||
|
#include <comphelper/simplefileaccessinteraction.hxx>
|
||||||
#include <osl/file.hxx>
|
#include <osl/file.hxx>
|
||||||
#include <rtl/string.h>
|
#include <rtl/string.h>
|
||||||
#include <rtl/ustring.h>
|
#include <rtl/ustring.h>
|
||||||
@ -120,6 +122,22 @@ DateTime convert(css::util::DateTime const & dt) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
css::uno::Reference< css::ucb::XCommandEnvironment > utl::UCBContentHelper::getDefaultCommandEnvironment()
|
||||||
|
{
|
||||||
|
css::uno::Reference< css::task::XInteractionHandler > xIH(
|
||||||
|
css::task::InteractionHandler::createWithParent(
|
||||||
|
comphelper::getProcessComponentContext(), nullptr ) );
|
||||||
|
|
||||||
|
css::uno::Reference< css::ucb::XProgressHandler > xProgress;
|
||||||
|
ucbhelper::CommandEnvironment* pCommandEnv =
|
||||||
|
new ::ucbhelper::CommandEnvironment(
|
||||||
|
new comphelper::SimpleFileAccessInteraction( xIH ), xProgress );
|
||||||
|
|
||||||
|
css::uno::Reference < css::ucb::XCommandEnvironment > xEnv(
|
||||||
|
static_cast< css::ucb::XCommandEnvironment* >(pCommandEnv), css::uno::UNO_QUERY );
|
||||||
|
return xEnv;
|
||||||
|
}
|
||||||
|
|
||||||
bool utl::UCBContentHelper::IsDocument(OUString const & url) {
|
bool utl::UCBContentHelper::IsDocument(OUString const & url) {
|
||||||
try {
|
try {
|
||||||
return content(url).isDocument();
|
return content(url).isDocument();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user