comphelper/source/misc/stillreadwriteinteraction.cxx | 18 +++++++++++++----- include/comphelper/stillreadwriteinteraction.hxx | 5 +++-- sfx2/source/dialog/filedlghelper.cxx | 1 - 3 files changed, 16 insertions(+), 8 deletions(-)
New commits: commit ecba128020572966a161899083b7147e2adc5766 Author: Giuseppe Castagno <giuseppe.casta...@acca-esse.eu> Date: Fri Aug 5 17:44:25 2016 +0200 Fix certificate validation interaction This enables the certificate validation when StillReadWriteInteraction::StillReadWriteInteraction interaction handler is used. Certificate validation is needed for Web/WebDAV files. Change-Id: I38cba9fc8b586953477d7df02acfcc8347603220 Reviewed-on: https://gerrit.libreoffice.org/27914 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Giuseppe Castagno <giuseppe.casta...@acca-esse.eu> diff --git a/comphelper/source/misc/stillreadwriteinteraction.cxx b/comphelper/source/misc/stillreadwriteinteraction.cxx index 8b80d5c..f4fdf76 100644 --- a/comphelper/source/misc/stillreadwriteinteraction.cxx +++ b/comphelper/source/misc/stillreadwriteinteraction.cxx @@ -29,14 +29,16 @@ #include <com/sun/star/ucb/AuthenticationRequest.hpp> +#include <com/sun/star/ucb/CertificateValidationRequest.hpp> + namespace comphelper{ StillReadWriteInteraction::StillReadWriteInteraction(const css::uno::Reference< css::task::XInteractionHandler >& xHandler, - const css::uno::Reference< css::task::XInteractionHandler >& xAuthenticationHandler) + const css::uno::Reference< css::task::XInteractionHandler >& xAuxiliaryHandler) : m_bUsed (false) , m_bHandledByMySelf (false) , m_bHandledByInternalHandler(false) - , m_xAuthenticationHandler(xAuthenticationHandler) + , m_xAuxiliaryHandler(xAuxiliaryHandler) { ::std::vector< ::ucbhelper::InterceptedInteraction::InterceptedRequest > lInterceptions; ::ucbhelper::InterceptedInteraction::InterceptedRequest aInterceptedRequest; @@ -56,6 +58,11 @@ StillReadWriteInteraction::StillReadWriteInteraction(const css::uno::Reference< aInterceptedRequest.Continuation = cppu::UnoType<css::task::XInteractionApprove>::get(); lInterceptions.push_back(aInterceptedRequest); + aInterceptedRequest.Handle = HANDLE_CERTIFICATEVALIDATIONREQUESTEXCEPTION; + aInterceptedRequest.Request <<= css::ucb::CertificateValidationRequest(); + aInterceptedRequest.Continuation = cppu::UnoType<css::task::XInteractionApprove>::get(); + lInterceptions.push_back(aInterceptedRequest); + setInterceptedHandler(xHandler); setInterceptions(lInterceptions); } @@ -105,12 +112,13 @@ ucbhelper::InterceptedInteraction::EInterceptionState StillReadWriteInteraction: bAbort = true; } break; + case HANDLE_CERTIFICATEVALIDATIONREQUESTEXCEPTION: case HANDLE_AUTHENTICATIONREQUESTEXCEPTION: { -//use internal authentication dedicated handler and return - if (m_xAuthenticationHandler.is()) +//use internal auxiliary handler and return + if (m_xAuxiliaryHandler.is()) { - m_xAuthenticationHandler->handle(xRequest); + m_xAuxiliaryHandler->handle(xRequest); return ::ucbhelper::InterceptedInteraction::E_INTERCEPTED; } else //simply abort diff --git a/include/comphelper/stillreadwriteinteraction.hxx b/include/comphelper/stillreadwriteinteraction.hxx index 95d9bb5..dcad760 100644 --- a/include/comphelper/stillreadwriteinteraction.hxx +++ b/include/comphelper/stillreadwriteinteraction.hxx @@ -34,6 +34,7 @@ private: static const sal_Int32 HANDLE_INTERACTIVEIOEXCEPTION = 0; static const sal_Int32 HANDLE_UNSUPPORTEDDATASINKEXCEPTION = 1; static const sal_Int32 HANDLE_AUTHENTICATIONREQUESTEXCEPTION = 2; + static const sal_Int32 HANDLE_CERTIFICATEVALIDATIONREQUESTEXCEPTION = 3; bool m_bUsed; bool m_bHandledByMySelf; @@ -41,14 +42,14 @@ private: public: StillReadWriteInteraction(const css::uno::Reference< css::task::XInteractionHandler >& xHandler, - const css::uno::Reference< css::task::XInteractionHandler >& xAuthenticationHandler); + const css::uno::Reference< css::task::XInteractionHandler >& xAuxiliaryHandler); void resetInterceptions(); void resetErrorStates(); bool wasWriteError() { return (m_bUsed && m_bHandledByMySelf);} private: - css::uno::Reference< css::task::XInteractionHandler > m_xAuthenticationHandler; + css::uno::Reference< css::task::XInteractionHandler > m_xAuxiliaryHandler; virtual ucbhelper::InterceptedInteraction::EInterceptionState intercepted(const ::ucbhelper::InterceptedInteraction::InterceptedRequest& aRequest, const css::uno::Reference< css::task::XInteractionRequest >& xRequest) override; diff --git a/sfx2/source/dialog/filedlghelper.cxx b/sfx2/source/dialog/filedlghelper.cxx index 79d48f1..cf5866e 100644 --- a/sfx2/source/dialog/filedlghelper.cxx +++ b/sfx2/source/dialog/filedlghelper.cxx @@ -46,7 +46,6 @@ #include <comphelper/fileurl.hxx> #include <comphelper/processfactory.hxx> #include <comphelper/sequenceashashmap.hxx> -#include <comphelper/stillreadwriteinteraction.hxx> #include <comphelper/string.hxx> #include <comphelper/types.hxx> #include <tools/urlobj.hxx> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits