summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2016-02-02 11:54:35 +0100
committerJan Holesovsky <kendy@collabora.com>2016-02-03 10:33:04 +0100
commitad680b8600aac8c26996b3af2d1414c3c0ebe4ee (patch)
treeef0ac6797b15ba18575c9be1afb78ea97d116c5d /desktop
parent483d0e85fad6f8f787ada28bc16242c43f7496b4 (diff)
lok interaction handler: Move password handling to an own method.
Change-Id: I1b3cfdef5f4f81c9138ad5600e43755841df5d75
Diffstat (limited to 'desktop')
-rw-r--r--desktop/source/lib/lokinteractionhandler.cxx110
-rw-r--r--desktop/source/lib/lokinteractionhandler.hxx3
2 files changed, 57 insertions, 56 deletions
diff --git a/desktop/source/lib/lokinteractionhandler.cxx b/desktop/source/lib/lokinteractionhandler.cxx
index ea872ead048b..5bb164c7d2ca 100644
--- a/desktop/source/lib/lokinteractionhandler.cxx
+++ b/desktop/source/lib/lokinteractionhandler.cxx
@@ -25,7 +25,6 @@
#include <com/sun/star/task/XInteractionAbort.hpp>
#include <com/sun/star/task/XInteractionApprove.hpp>
#include <com/sun/star/task/XInteractionPassword2.hpp>
-#include <com/sun/star/task/DocumentPasswordRequest2.hpp>
#include <../../inc/lib/init.hxx>
@@ -79,76 +78,75 @@ throw (uno::RuntimeException, std::exception)
handleInteractionRequest(xRequest);
}
-sal_Bool SAL_CALL LOKInteractionHandler::handleInteractionRequest(
- const uno::Reference<task::XInteractionRequest>& xRequest)
-throw (uno::RuntimeException, std::exception)
+sal_Bool LOKInteractionHandler::handlePasswordRequest(const uno::Sequence<uno::Reference<task::XInteractionContinuation>> &rContinuations, const task::DocumentPasswordRequest2& passwordRequest)
{
- uno::Sequence<uno::Reference<task::XInteractionContinuation>> const &rContinuations = xRequest->getContinuations();
-
- uno::Any const request(xRequest->getRequest());
- task::DocumentPasswordRequest2 passwordRequest;
- if (request >>= passwordRequest)
+ if (m_pLOKit->hasOptionalFeature((passwordRequest.IsRequestPasswordToModify)
+ ? LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY
+ : LOK_FEATURE_DOCUMENT_PASSWORD))
{
- if (m_pLOKit->hasOptionalFeature((passwordRequest.IsRequestPasswordToModify)
- ? 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->mpCallbackData);
-
- // block until SetPassword is called
- m_havePassword.wait();
- m_havePassword.reset();
- }
+ 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->mpCallbackData);
+
+ // block until SetPassword is called
+ m_havePassword.wait();
+ m_havePassword.reset();
+ }
- for (sal_Int32 i = 0; i < rContinuations.getLength(); ++i)
+ for (sal_Int32 i = 0; i < rContinuations.getLength(); ++i)
+ {
+ if (m_usePassword)
{
- if (m_usePassword)
+ if (passwordRequest.IsRequestPasswordToModify)
{
- if (passwordRequest.IsRequestPasswordToModify)
- {
- uno::Reference<task::XInteractionPassword2> const xIPW2(
- rContinuations[i], uno::UNO_QUERY);
- xIPW2->setPasswordToModify(m_Password);
- xIPW2->select();
- }
- else
- {
- uno::Reference<task::XInteractionPassword> const xIPW(
- rContinuations[i], uno::UNO_QUERY);
- if (xIPW.is())
- {
- xIPW->setPassword(m_Password);
- xIPW->select();
- }
- }
+ uno::Reference<task::XInteractionPassword2> const xIPW2(rContinuations[i], uno::UNO_QUERY);
+ xIPW2->setPasswordToModify(m_Password);
+ xIPW2->select();
}
else
{
- if (passwordRequest.IsRequestPasswordToModify)
+ uno::Reference<task::XInteractionPassword> const xIPW(rContinuations[i], uno::UNO_QUERY);
+ if (xIPW.is())
{
- uno::Reference<task::XInteractionPassword2> const xIPW2(
- rContinuations[i], uno::UNO_QUERY);
- xIPW2->setRecommendReadOnly(true);
- xIPW2->select();
+ xIPW->setPassword(m_Password);
+ xIPW->select();
}
- else
+ }
+ }
+ else
+ {
+ if (passwordRequest.IsRequestPasswordToModify)
+ {
+ uno::Reference<task::XInteractionPassword2> const xIPW2(rContinuations[i], uno::UNO_QUERY);
+ xIPW2->setRecommendReadOnly(true);
+ xIPW2->select();
+ }
+ else
+ {
+ uno::Reference<task::XInteractionAbort> const xAbort(rContinuations[i], uno::UNO_QUERY);
+ if (xAbort.is())
{
- uno::Reference<task::XInteractionAbort> const xAbort(
- rContinuations[i], uno::UNO_QUERY);
- if (xAbort.is())
- {
- xAbort->select();
- }
+ xAbort->select();
}
}
}
- return sal_True;
}
+ return sal_True;
+}
+
+sal_Bool SAL_CALL LOKInteractionHandler::handleInteractionRequest(
+ const uno::Reference<task::XInteractionRequest>& xRequest)
+throw (uno::RuntimeException, std::exception)
+{
+ uno::Sequence<uno::Reference<task::XInteractionContinuation>> const &rContinuations = xRequest->getContinuations();
+
+ uno::Any const request(xRequest->getRequest());
+ task::DocumentPasswordRequest2 passwordRequest;
+ if (request >>= passwordRequest)
+ return handlePasswordRequest(rContinuations, passwordRequest);
// TODO: add LOK api that allows handling this for real, for the moment we
// just set the interaction as 'Approved'
diff --git a/desktop/source/lib/lokinteractionhandler.hxx b/desktop/source/lib/lokinteractionhandler.hxx
index 85a71da7efae..e21d7570f253 100644
--- a/desktop/source/lib/lokinteractionhandler.hxx
+++ b/desktop/source/lib/lokinteractionhandler.hxx
@@ -25,6 +25,7 @@
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/task/DocumentPasswordRequest2.hpp>
#include <com/sun/star/task/InteractionHandler.hpp>
namespace desktop { struct LibLibreOffice_Impl; }
@@ -50,6 +51,8 @@ private:
LOKInteractionHandler(const LOKInteractionHandler&) = delete;
LOKInteractionHandler& operator=(const LOKInteractionHandler&) = delete;
+ sal_Bool handlePasswordRequest(const css::uno::Sequence<css::uno::Reference<css::task::XInteractionContinuation>> &rContinuations, const css::task::DocumentPasswordRequest2& passwordRequest);
+
public:
void SetPassword(char const* pPassword);