[Libreoffice-commits] online.git: 3 commits - common/Session.cpp common/Session.hpp kit/ChildSession.cpp kit/ChildSession.hpp kit/Kit.cpp loolwsd.xml.in test/WhiteBoxTests.cpp wsd/ClientSession.cpp wsd/LOOLWSD.hpp
Michael Meeks (via logerrit)
logerrit at kemper.freedesktop.org
Mon Aug 26 20:29:55 UTC 2019
common/Session.cpp | 8 +++++++-
common/Session.hpp | 7 +++++++
kit/ChildSession.cpp | 5 +----
kit/ChildSession.hpp | 9 +--------
kit/Kit.cpp | 40 +++++++++++++++-------------------------
loolwsd.xml.in | 4 ++++
test/WhiteBoxTests.cpp | 10 ++--------
wsd/ClientSession.cpp | 9 +++++----
wsd/LOOLWSD.hpp | 2 +-
9 files changed, 43 insertions(+), 51 deletions(-)
New commits:
commit f384b8a414d9ce5a7ac78e7c20b6f33d9ba03f12
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Mon Aug 26 16:23:04 2019 -0400
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Mon Aug 26 16:29:12 2019 -0400
Add watermark opacity setting.
Change-Id: I839e8aef91acfed40d4afd8c1b50176ed54c670a
diff --git a/common/Session.cpp b/common/Session.cpp
index 5c8d11568..116d2786f 100644
--- a/common/Session.cpp
+++ b/common/Session.cpp
@@ -55,7 +55,8 @@ Session::Session(const std::string& name, const std::string& id, bool readOnly)
_isReadOnly(readOnly),
_docPassword(""),
_haveDocPassword(false),
- _isDocPasswordProtected(false)
+ _isDocPasswordProtected(false),
+ _watermarkOpacity(0.2)
{
}
@@ -156,6 +157,11 @@ void Session::parseDocOptions(const std::vector<std::string>& tokens, int& part,
Poco::URI::decode(value, _watermarkText);
++offset;
}
+ else if (name == "watermarkOpacity")
+ {
+ _watermarkOpacity = std::stod(value);
+ ++offset;
+ }
else if (name == "timestamp")
{
timestamp = value;
diff --git a/common/Session.hpp b/common/Session.hpp
index ddee50d55..6955b1e66 100644
--- a/common/Session.hpp
+++ b/common/Session.hpp
@@ -102,8 +102,12 @@ public:
const std::string& getDocOptions() const { return _docOptions; }
+ bool hasWatermark() const { return !_watermarkText.empty() && _watermarkOpacity > 0.0; }
+
const std::string& getWatermarkText() const { return _watermarkText; }
+ double getWatermarkOpacity() const { return _watermarkOpacity; }
+
const std::string& getLang() const { return _lang; }
bool getHaveDocPassword() const { return _haveDocPassword; }
@@ -203,6 +207,9 @@ private:
/// In case a watermark has to be rendered on each tile.
std::string _watermarkText;
+ /// Opacity in case a watermark has to be rendered on each tile.
+ double _watermarkOpacity;
+
/// Language for the document based on what the user has in the UI.
std::string _lang;
};
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 3569a5ffb..ad20beb86 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -593,7 +593,7 @@ public:
, _font("Liberation Sans")
, _width(0)
, _height(0)
- , _alphaLevel(0.2)
+ , _alphaLevel(session->getWatermarkOpacity())
{
}
diff --git a/loolwsd.xml.in b/loolwsd.xml.in
index 8475a23d3..8ae1c9bdd 100644
--- a/loolwsd.xml.in
+++ b/loolwsd.xml.in
@@ -107,6 +107,10 @@
<capabilities desc="Should we require capabilities to isolate processes into chroot jails" type="bool" default="true">true</capabilities>
</security>
+ <watermark>
+ <opacity desc="Opacity of on-screen watermark from 0.0 to 1.0" type="double" default="0.2"></opacity>
+ </watermark>
+
<storage desc="Backend storage">
<filesystem allow="false" />
<wopi desc="Allow/deny wopi storage. Mutually exclusive with webdav." allow="true">
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index cdd442fb7..69e67681f 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -773,6 +773,7 @@ bool ClientSession::loadDocument(const char* /*buffer*/, int /*length*/,
std::string encodedWatermarkText;
Poco::URI::encode(getWatermarkText(), "", encodedWatermarkText);
oss << " watermarkText=" << encodedWatermarkText;
+ oss << " watermarkOpacity=" << LOOLWSD::getConfigValue<double>("watermark.opacity", 0.2);
}
if (!getDocOptions().empty())
commit 327869fffe67761988a97475a5d17214aa0fac10
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Mon Aug 26 16:22:01 2019 -0400
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Mon Aug 26 16:29:12 2019 -0400
re-factor childsession onLoad callback to cleanup parameter clutter.
Change-Id: I0665db05845a910abf1cc56e13d2f9845cc5c373
diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp
index 6d7751fdc..0d2c0ad7a 100644
--- a/kit/ChildSession.cpp
+++ b/kit/ChildSession.cpp
@@ -579,10 +579,7 @@ bool ChildSession::loadDocument(const char * /*buffer*/, int /*length*/, const s
std::unique_lock<std::recursive_mutex> lock(Mutex);
- const bool loaded = _docManager->onLoad(getId(), getJailedFilePath(), getJailedFilePathAnonym(),
- getUserName(), getUserNameAnonym(),
- getDocPassword(), renderOpts, getHaveDocPassword(),
- getLang(), getWatermarkText(), doctemplate);
+ const bool loaded = _docManager->onLoad(getId(), getJailedFilePathAnonym(), renderOpts, doctemplate);
if (!loaded || _viewId < 0)
{
LOG_ERR("Failed to get LoKitDocument instance for [" << getJailedFilePathAnonym() << "].");
diff --git a/kit/ChildSession.hpp b/kit/ChildSession.hpp
index 4880bc4dc..bd0d12a1c 100644
--- a/kit/ChildSession.hpp
+++ b/kit/ChildSession.hpp
@@ -38,15 +38,8 @@ class DocumentManagerInterface
public:
/// Reqest loading a document, or a new view, if one exists.
virtual bool onLoad(const std::string& sessionId,
- const std::string& jailedFilePath,
- const std::string& jailedFilePathAnonym,
- const std::string& userName,
- const std::string& userNameAnonym,
- const std::string& docPassword,
+ const std::string& uriAnonym,
const std::string& renderOpts,
- const bool haveDocPassword,
- const std::string& lang,
- const std::string& watermarkText,
const std::string& docTemplate) = 0;
/// Unload a client session, which unloads the document
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 40fe64ff9..3569a5ffb 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -586,9 +586,10 @@ public:
class Watermark
{
public:
- Watermark(const std::shared_ptr<lok::Document>& loKitDoc, const std::string& text)
+ Watermark(const std::shared_ptr<lok::Document>& loKitDoc,
+ const std::shared_ptr<ChildSession> & session)
: _loKitDoc(loKitDoc)
- , _text(text)
+ , _text(session->getWatermarkText())
, _font("Liberation Sans")
, _width(0)
, _height(0)
@@ -1459,15 +1460,8 @@ private:
/// Load a document (or view) and register callbacks.
bool onLoad(const std::string& sessionId,
- const std::string& uri,
const std::string& uriAnonym,
- const std::string& userName,
- const std::string& userNameAnonym,
- const std::string& docPassword,
const std::string& renderOpts,
- const bool haveDocPassword,
- const std::string& lang,
- const std::string& watermarkText,
const std::string& docTemplate) override
{
std::unique_lock<std::mutex> lock(_mutex);
@@ -1477,9 +1471,7 @@ private:
" sessions. Another load in progress: " << _isLoading);
while (_isLoading)
- {
_cvLoading.wait(lock);
- }
// This shouldn't happen, but for sanity.
const auto it = _sessions.find(sessionId);
@@ -1497,10 +1489,8 @@ private:
try
{
- if (!load(session, uri, uriAnonym, userName, userNameAnonym, docPassword, renderOpts, haveDocPassword, lang, watermarkText, docTemplate))
- {
+ if (!load(session, renderOpts, docTemplate))
return false;
- }
}
catch (const std::exception& exc)
{
@@ -1737,19 +1727,19 @@ private:
}
std::shared_ptr<lok::Document> load(const std::shared_ptr<ChildSession>& session,
- const std::string& uri,
- const std::string& uriAnonym,
- const std::string& userName,
- const std::string& userNameAnonym,
- const std::string& docPassword,
const std::string& renderOpts,
- const bool haveDocPassword,
- const std::string& lang,
- const std::string& watermarkText,
const std::string& docTemplate)
{
const std::string sessionId = session->getId();
+ const std::string& uri = session->getJailedFilePath();
+ const std::string& uriAnonym = session->getJailedFilePathAnonym();
+ const std::string& userName = session->getUserName();
+ const std::string& userNameAnonym = session->getUserNameAnonym();
+ const std::string& docPassword = session->getDocPassword();
+ const bool haveDocPassword = session->getHaveDocPassword();
+ const std::string& lang = session->getLang();
+
std::string options;
if (!lang.empty())
options = "Language=" + lang;
@@ -1816,8 +1806,8 @@ private:
// No support for changing them after opening a document.
_renderOpts = renderOpts;
- if (!watermarkText.empty())
- _docWatermark.reset(new Watermark(_loKitDocument, watermarkText));
+ if (session->hasWatermark())
+ _docWatermark.reset(new Watermark(_loKitDocument, session));
}
else
{
diff --git a/test/WhiteBoxTests.cpp b/test/WhiteBoxTests.cpp
index fddf5e7bd..3f5f028cf 100644
--- a/test/WhiteBoxTests.cpp
+++ b/test/WhiteBoxTests.cpp
@@ -491,16 +491,10 @@ public:
: _tileQueue(new TileQueue())
{
}
+
bool onLoad(const std::string& /*sessionId*/,
- const std::string& /*jailedFilePath*/,
- const std::string& /*jailedFilePathAnonym*/,
- const std::string& /*userName*/,
- const std::string& /*userNameAnonym*/,
- const std::string& /*docPassword*/,
+ const std::string& /*uriAnonym*/,
const std::string& /*renderOpts*/,
- const bool /*haveDocPassword*/,
- const std::string& /*lang*/,
- const std::string& /*watermarkText*/,
const std::string& /*docTemplate*/) override
{
return false;
diff --git a/wsd/LOOLWSD.hpp b/wsd/LOOLWSD.hpp
index 7c4103e3b..f8708b63d 100644
--- a/wsd/LOOLWSD.hpp
+++ b/wsd/LOOLWSD.hpp
@@ -122,7 +122,7 @@ public:
}
/// Returns the value of the specified application configuration,
- /// of the default, if one doesn't exist.
+ /// or the default, if one doesn't exist.
template<typename T>
static
T getConfigValue(const std::string& name, const T def)
commit 7850c944e204c3a7d62029b2b319eb836c4c06d3
Author: DarkByt31 <avihs.29 at gmail.com>
AuthorDate: Fri Aug 23 23:27:24 2019 +0530
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Mon Aug 26 16:29:12 2019 -0400
tdf#107038 Poco::Timestamp replacement with std::chrono
Change-Id: I85e041a778f14071e55fa6bd05b7b145f7887c57
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index 00ca2d506..cdd442fb7 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -243,7 +243,7 @@ void ClientSession::handleClipboardRequest(DocumentBroker::ClipboardRequest
{
std::ostringstream oss;
oss << "HTTP/1.1 400 Bad Request\r\n"
- << "Date: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+ << "Date: " << Util::getHttpTimeNow() << "\r\n"
<< "User-Agent: " << WOPI_AGENT_STRING << "\r\n"
<< "Content-Length: 0\r\n"
<< "\r\n";
@@ -278,7 +278,7 @@ void ClientSession::handleClipboardRequest(DocumentBroker::ClipboardRequest
// FIXME: work harder for error detection ?
std::ostringstream oss;
oss << "HTTP/1.1 200 OK\r\n"
- << "Date: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+ << "Date: " << Util::getHttpTimeNow() << "\r\n"
<< "User-Agent: " << WOPI_AGENT_STRING << "\r\n"
<< "Content-Length: 0\r\n"
<< "\r\n";
@@ -289,7 +289,7 @@ void ClientSession::handleClipboardRequest(DocumentBroker::ClipboardRequest
{
std::ostringstream oss;
oss << "HTTP/1.1 400 Bad Request\r\n"
- << "Date: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+ << "Date: " << Util::getHttpTimeNow() << "\r\n"
<< "User-Agent: " << WOPI_AGENT_STRING << "\r\n"
<< "Content-Length: 0\r\n"
<< "\r\n";
@@ -1296,7 +1296,7 @@ bool ClientSession::handleKitToClientMessage(const char* buffer, const int lengt
{
std::ostringstream oss;
oss << "HTTP/1.1 200 OK\r\n"
- << "Last-Modified: " << Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::HTTP_FORMAT) << "\r\n"
+ << "Last-Modified: " << Util::getHttpTimeNow() << "\r\n"
<< "User-Agent: " << WOPI_AGENT_STRING << "\r\n"
<< "Content-Length: " << (empty ? 0 : (payload->size() - header)) << "\r\n"
<< "Content-Type: application/octet-stream\r\n"
More information about the Libreoffice-commits
mailing list