summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2016-01-26 15:35:42 +0100
committerJan Holesovsky <kendy@collabora.com>2016-01-27 08:26:19 +0000
commit23a0ee3c01c3588472e1c19605909d6b9401253c (patch)
treebd455470684500e310c1801fdde6fe2f528f93f9 /desktop
parentf8151c9ced1a2fdce6273fbbce2656bea25cf754 (diff)
libreofficekit: password interaction optional and off by default
Add setOptionalFeatures() function that clients must call during initialization, and enum LibreOfficeKitOptionalFeatures. Change-Id: I73035193c87033052921c3aad94fdc057fe81111 Reviewed-on: https://gerrit.libreoffice.org/21809 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'desktop')
-rw-r--r--desktop/inc/lib/init.hxx7
-rw-r--r--desktop/source/lib/init.cxx9
-rw-r--r--desktop/source/lib/lokinteractionhandler.cxx19
3 files changed, 28 insertions, 7 deletions
diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx
index ee598a0c07b0..d07729731b39 100644
--- a/desktop/inc/lib/init.hxx
+++ b/desktop/inc/lib/init.hxx
@@ -11,6 +11,7 @@
#define INCLUDED_DESKTOP_INC_LIB_INIT_HXX
#include <LibreOfficeKit/LibreOfficeKit.h>
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
#include <com/sun/star/frame/XStorable.hpp>
#include <com/sun/star/lang/XComponent.hpp>
#include <memory>
@@ -39,10 +40,16 @@ namespace desktop {
oslThread maThread;
LibreOfficeKitCallback mpCallback;
void *mpCallbackData;
+ int64_t mOptionalFeatures;
std::map<OString, rtl::Reference<LOKInteractionHandler>> mInteractionMap;
LibLibreOffice_Impl();
~LibLibreOffice_Impl();
+
+ bool hasOptionalFeature(LibreOfficeKitOptionalFeatures const feature)
+ {
+ return (mOptionalFeatures & feature) != 0;
+ }
};
}
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 88b5d1fc70b4..eecb16adb75f 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -427,6 +427,7 @@ static void lo_registerCallback (LibreOfficeKit* pThis,
LibreOfficeKitCallback pCallback,
void* pData);
static char* lo_getFilterTypes(LibreOfficeKit* pThis);
+static void lo_setOptionalFeatures(LibreOfficeKit* pThis, uint64_t features);
static void lo_setDocumentPassword(LibreOfficeKit* pThis,
const char* pURL,
const char* pPassword);
@@ -436,6 +437,7 @@ LibLibreOffice_Impl::LibLibreOffice_Impl()
, maThread(nullptr)
, mpCallback(nullptr)
, mpCallbackData(nullptr)
+ , mOptionalFeatures(0)
{
if(!m_pOfficeClass) {
m_pOfficeClass.reset(new LibreOfficeKitClass);
@@ -448,6 +450,7 @@ LibLibreOffice_Impl::LibLibreOffice_Impl()
m_pOfficeClass->documentLoadWithOptions = lo_documentLoadWithOptions;
m_pOfficeClass->registerCallback = lo_registerCallback;
m_pOfficeClass->getFilterTypes = lo_getFilterTypes;
+ m_pOfficeClass->setOptionalFeatures = lo_setOptionalFeatures;
m_pOfficeClass->setDocumentPassword = lo_setDocumentPassword;
gOfficeClass = m_pOfficeClass;
@@ -1619,6 +1622,12 @@ static char* lo_getFilterTypes(LibreOfficeKit* pThis)
return strdup(aStream.str().c_str());
}
+static void lo_setOptionalFeatures(LibreOfficeKit* pThis, uint64_t const features)
+{
+ LibLibreOffice_Impl *const pLib = static_cast<LibLibreOffice_Impl*>(pThis);
+ pLib->mOptionalFeatures = features;
+}
+
static void lo_setDocumentPassword(LibreOfficeKit* pThis,
const char* pURL, const char* pPassword)
{
diff --git a/desktop/source/lib/lokinteractionhandler.cxx b/desktop/source/lib/lokinteractionhandler.cxx
index 5f125c3a40c1..ea872ead048b 100644
--- a/desktop/source/lib/lokinteractionhandler.cxx
+++ b/desktop/source/lib/lokinteractionhandler.cxx
@@ -89,16 +89,21 @@ throw (uno::RuntimeException, std::exception)
task::DocumentPasswordRequest2 passwordRequest;
if (request >>= passwordRequest)
{
- OString const url(passwordRequest.Name.toUtf8());
- m_pLOKit->mpCallback(passwordRequest.IsRequestPasswordToModify
- ? LOK_CALLBACK_DOCUMENT_PASSWORD
- : LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY,
+ 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();
+ // block until SetPassword is called
+ m_havePassword.wait();
+ m_havePassword.reset();
+ }
for (sal_Int32 i = 0; i < rContinuations.getLength(); ++i)
{