desktop/source/lib/lokinteractionhandler.cxx | 41 +++++++++++++++++++-------- 1 file changed, 30 insertions(+), 11 deletions(-)
New commits: commit 0543ac9016528aa9c49573b1b1115bb6fbddf0b4 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> Date: Wed Dec 7 16:06:26 2016 +0100 lokit: support password protected binary MS and OOXML documents Change-Id: Id7fa1f428d07271e71f3df962bd6718a35372389 Reviewed-on: https://gerrit.libreoffice.org/31737 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Tested-by: Jan Holesovsky <ke...@collabora.com> diff --git a/desktop/source/lib/lokinteractionhandler.cxx b/desktop/source/lib/lokinteractionhandler.cxx index 961c999..bb32fff 100644 --- a/desktop/source/lib/lokinteractionhandler.cxx +++ b/desktop/source/lib/lokinteractionhandler.cxx @@ -35,6 +35,8 @@ #include <com/sun/star/ucb/InteractiveNetworkResolveNameException.hpp> #include <com/sun/star/ucb/InteractiveNetworkWriteException.hpp> +#include <com/sun/star/task/DocumentMSPasswordRequest2.hpp> + #define LOK_USE_UNSTABLE_API #include <../../inc/lib/init.hxx> @@ -243,20 +245,37 @@ bool LOKInteractionHandler::handleNetworkException(const uno::Sequence<uno::Refe bool LOKInteractionHandler::handlePasswordRequest(const uno::Sequence<uno::Reference<task::XInteractionContinuation>> &rContinuations, const uno::Any &rRequest) { + bool bPasswordRequestFound = false; + bool bIsRequestPasswordToModify = false; + + OString sUrl; + task::DocumentPasswordRequest2 passwordRequest; - if (!(rRequest >>= passwordRequest)) + if (rRequest >>= passwordRequest) + { + bIsRequestPasswordToModify = passwordRequest.IsRequestPasswordToModify; + sUrl = passwordRequest.Name.toUtf8(); + bPasswordRequestFound = true; + } + + task::DocumentMSPasswordRequest2 passwordMSRequest; + if (rRequest >>= passwordMSRequest) + { + bIsRequestPasswordToModify = passwordMSRequest.IsRequestPasswordToModify; + sUrl = passwordMSRequest.Name.toUtf8(); + bPasswordRequestFound = true; + } + + if (!bPasswordRequestFound) return false; if (m_pLOKit->mpCallback && - m_pLOKit->hasOptionalFeature((passwordRequest.IsRequestPasswordToModify) - ? LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY - : LOK_FEATURE_DOCUMENT_PASSWORD)) + m_pLOKit->hasOptionalFeature(bIsRequestPasswordToModify ? LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY + : LOK_FEATURE_DOCUMENT_PASSWORD)) { - OString const url(passwordRequest.Name.toUtf8()); - m_pLOKit->mpCallback(passwordRequest.IsRequestPasswordToModify - ? LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY - : LOK_CALLBACK_DOCUMENT_PASSWORD, - url.getStr(), + m_pLOKit->mpCallback(bIsRequestPasswordToModify ? LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY + : LOK_CALLBACK_DOCUMENT_PASSWORD, + sUrl.getStr(), m_pLOKit->mpCallbackData); // block until SetPassword is called @@ -268,7 +287,7 @@ bool LOKInteractionHandler::handlePasswordRequest(const uno::Sequence<uno::Refer { if (m_usePassword) { - if (passwordRequest.IsRequestPasswordToModify) + if (bIsRequestPasswordToModify) { uno::Reference<task::XInteractionPassword2> const xIPW2(rContinuations[i], uno::UNO_QUERY); xIPW2->setPasswordToModify(m_Password); @@ -286,7 +305,7 @@ bool LOKInteractionHandler::handlePasswordRequest(const uno::Sequence<uno::Refer } else { - if (passwordRequest.IsRequestPasswordToModify) + if (bIsRequestPasswordToModify) { uno::Reference<task::XInteractionPassword2> const xIPW2(rContinuations[i], uno::UNO_QUERY); xIPW2->setRecommendReadOnly(true);
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits