[Libreoffice-commits] online.git: loolwsd/ChildSession.cpp loolwsd/ChildSession.hpp loolwsd/LOOLKit.cpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Wed May 18 11:31:28 UTC 2016


 loolwsd/ChildSession.cpp |   95 +++++++++++++++++++++++------------------------
 loolwsd/ChildSession.hpp |    6 +-
 loolwsd/LOOLKit.cpp      |    4 -
 3 files changed, 52 insertions(+), 53 deletions(-)

New commits:
commit 5a8b3c816978ed5b0cd6147d0452e19aac00f51d
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Wed May 18 06:51:14 2016 -0400

    loolwsd: LibreOfficeKitDocument* -> shared_ptr<lok::Document>
    
    Change-Id: Ie94882482729e4d6bb69c9f92badd375231fece2
    Reviewed-on: https://gerrit.libreoffice.org/25094
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/ChildSession.cpp b/loolwsd/ChildSession.cpp
index 06a94c5..be23b7f 100644
--- a/loolwsd/ChildSession.cpp
+++ b/loolwsd/ChildSession.cpp
@@ -292,7 +292,6 @@ ChildSession::ChildSession(const std::string& id,
                            OnLoadCallback onLoad,
                            OnUnloadCallback onUnload) :
     LOOLSession(id, Kind::ToMaster, ws),
-    _loKitDocument(nullptr),
     _multiView(std::getenv("LOK_VIEW_CALLBACK")),
     _jailId(jailId),
     _viewId(0),
@@ -323,7 +322,7 @@ void ChildSession::disconnect()
         std::unique_lock<std::recursive_mutex> lock(Mutex);
 
         if (_multiView)
-            _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+            _loKitDocument->setView(_viewId);
 
         _onUnload(getId());
 
@@ -345,9 +344,9 @@ bool ChildSession::_handleInput(const char *buffer, int length)
         std::unique_lock<std::recursive_mutex> lock(Mutex);
 
         if (_multiView)
-            _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+            _loKitDocument->setView(_viewId);
 
-        const int curPart = _loKitDocument->pClass->getPart(_loKitDocument);
+        const int curPart = _loKitDocument->getPart();
         sendTextFrame("curpart: part=" + std::to_string(curPart));
         sendTextFrame("setpart: part=" + std::to_string(curPart));
 
@@ -603,14 +602,14 @@ bool ChildSession::loadDocument(const char * /*buffer*/, int /*length*/, StringT
 
     if (_multiView)
     {
-        _viewId = _loKitDocument->pClass->getView(_loKitDocument);
-        _loKitDocument->pClass->initializeForRendering(_loKitDocument, (renderOpts.empty() ? nullptr : renderOpts.c_str()));
+        _viewId = _loKitDocument->getView();
+        _loKitDocument->initializeForRendering((renderOpts.empty() ? nullptr : renderOpts.c_str()));
     }
 
-    _docType = LOKitHelper::getDocumentTypeAsString(_loKitDocument);
+    _docType = LOKitHelper::getDocumentTypeAsString(_loKitDocument->get());
     if (_docType != "text" && part != -1)
     {
-        _loKitDocument->pClass->setPart(_loKitDocument, part);
+        _loKitDocument->setPart(part);
     }
 
     // Respond by the document status, which has no arguments.
@@ -636,7 +635,7 @@ void ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, Str
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-       _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+       _loKitDocument->setView(_viewId);
 
     URI::decode(font, decodedFont);
     std::string response = "renderfont: " + Poco::cat(std::string(" "), tokens.begin() + 1, tokens.end()) + "\n";
@@ -647,7 +646,7 @@ void ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, Str
 
     Timestamp timestamp;
     int width, height;
-    unsigned char *pixmap = _loKitDocument->pClass->renderFont(_loKitDocument, decodedFont.c_str(), &width, &height);
+    unsigned char *pixmap = _loKitDocument->renderFont(decodedFont.c_str(), &width, &height);
     Log::trace("renderFont [" + font + "] rendered in " + std::to_string(timestamp.elapsed()/1000.) + "ms");
 
     if (pixmap != nullptr)
@@ -669,9 +668,9 @@ bool ChildSession::getStatus(const char* /*buffer*/, int /*length*/)
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    const auto status = LOKitHelper::documentStatus(_loKitDocument);
+    const auto status = LOKitHelper::documentStatus(_loKitDocument->get());
     if (status.empty())
     {
         Log::error("Failed to get document status.");
@@ -694,9 +693,9 @@ bool ChildSession::getCommandValues(const char* /*buffer*/, int /*length*/, Stri
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    sendTextFrame("commandvalues: " + std::string(_loKitDocument->pClass->getCommandValues(_loKitDocument, command.c_str())));
+    sendTextFrame("commandvalues: " + std::string(_loKitDocument->getCommandValues(command.c_str())));
     return true;
 }
 
@@ -705,9 +704,9 @@ bool ChildSession::getPartPageRectangles(const char* /*buffer*/, int /*length*/)
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    sendTextFrame("partpagerectangles: " + std::string(_loKitDocument->pClass->getPartPageRectangles(_loKitDocument)));
+    sendTextFrame("partpagerectangles: " + std::string(_loKitDocument->getPartPageRectangles()));
     return true;
 }
 
@@ -728,9 +727,9 @@ bool ChildSession::clientZoom(const char* /*buffer*/, int /*length*/, StringToke
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    _loKitDocument->pClass->setClientZoom(_loKitDocument, tilePixelWidth, tilePixelHeight, tileTwipWidth, tileTwipHeight);
+    _loKitDocument->setClientZoom(tilePixelWidth, tilePixelHeight, tileTwipWidth, tileTwipHeight);
     return true;
 }
 
@@ -754,9 +753,9 @@ bool ChildSession::clientVisibleArea(const char* /*buffer*/, int /*length*/, Str
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    _loKitDocument->pClass->setClientVisibleArea(_loKitDocument, x, y, width, height);
+    _loKitDocument->setClientVisibleArea(x, y, width, height);
     return true;
 }
 
@@ -788,7 +787,7 @@ bool ChildSession::downloadAs(const char* /*buffer*/, int /*length*/, StringToke
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     //TODO: Cleanup the file after downloading.
-    _loKitDocument->pClass->saveAs(_loKitDocument, url.c_str(),
+    _loKitDocument->saveAs(url.c_str(),
             format.size() == 0 ? nullptr :format.c_str(),
             filterOptions.size() == 0 ? nullptr : filterOptions.c_str());
 
@@ -817,9 +816,9 @@ bool ChildSession::getTextSelection(const char* /*buffer*/, int /*length*/, Stri
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    char *textSelection = _loKitDocument->pClass->getTextSelection(_loKitDocument, mimeType.c_str(), nullptr);
+    char *textSelection = _loKitDocument->getTextSelection(mimeType.c_str(), nullptr);
 
     sendTextFrame("textselectioncontent: " + std::string(textSelection));
 
@@ -844,10 +843,10 @@ bool ChildSession::paste(const char* buffer, int length, StringTokenizer& tokens
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    Log::info("Calling _loKit->pClass->paste()");
-    _loKitDocument->pClass->paste(_loKitDocument, mimeType.c_str(), data, size);
+    Log::info("Calling _loKit->paste()");
+    _loKitDocument->paste(mimeType.c_str(), data, size);
     Log::info("paste() returned");
 
     return true;
@@ -877,9 +876,9 @@ bool ChildSession::insertFile(const char* /*buffer*/, int /*length*/, StringToke
                 "\"value\":\"" + fileName + "\""
             "}}";
         if (_multiView)
-            _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+            _loKitDocument->setView(_viewId);
 
-        _loKitDocument->pClass->postUnoCommand(_loKitDocument, command.c_str(), arguments.c_str(), false);
+        _loKitDocument->postUnoCommand(command.c_str(), arguments.c_str(), false);
     }
 
     return true;
@@ -919,9 +918,9 @@ bool ChildSession::keyEvent(const char* /*buffer*/, int /*length*/, StringTokeni
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    _loKitDocument->pClass->postKeyEvent(_loKitDocument, type, charcode, keycode);
+    _loKitDocument->postKeyEvent(type, charcode, keycode);
 
     return true;
 }
@@ -965,9 +964,9 @@ bool ChildSession::mouseEvent(const char* /*buffer*/, int /*length*/, StringToke
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    _loKitDocument->pClass->postMouseEvent(_loKitDocument, type, x, y, count, buttons, modifier);
+    _loKitDocument->postMouseEvent(type, x, y, count, buttons, modifier);
 
     return true;
 }
@@ -983,18 +982,18 @@ bool ChildSession::unoCommand(const char* /*buffer*/, int /*length*/, StringToke
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
     // we need to get LOK_CALLBACK_UNO_COMMAND_RESULT callback when saving
     const bool bNotify = (tokens[1] == ".uno:Save");
 
     if (tokens.count() == 2)
     {
-        _loKitDocument->pClass->postUnoCommand(_loKitDocument, tokens[1].c_str(), nullptr, bNotify);
+        _loKitDocument->postUnoCommand(tokens[1].c_str(), nullptr, bNotify);
     }
     else
     {
-        _loKitDocument->pClass->postUnoCommand(_loKitDocument, tokens[1].c_str(),
+        _loKitDocument->postUnoCommand(tokens[1].c_str(),
                                                Poco::cat(std::string(" "), tokens.begin() + 2, tokens.end()).c_str(),
                                                bNotify);
     }
@@ -1022,9 +1021,9 @@ bool ChildSession::selectText(const char* /*buffer*/, int /*length*/, StringToke
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    _loKitDocument->pClass->setTextSelection(_loKitDocument, type, x, y);
+    _loKitDocument->setTextSelection(type, x, y);
 
     return true;
 }
@@ -1048,9 +1047,9 @@ bool ChildSession::selectGraphic(const char* /*buffer*/, int /*length*/, StringT
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    _loKitDocument->pClass->setGraphicSelection(_loKitDocument, type, x, y);
+    _loKitDocument->setGraphicSelection(type, x, y);
 
     return true;
 }
@@ -1066,9 +1065,9 @@ bool ChildSession::resetSelection(const char* /*buffer*/, int /*length*/, String
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    _loKitDocument->pClass->resetSelection(_loKitDocument);
+    _loKitDocument->resetSelection();
 
     return true;
 }
@@ -1097,9 +1096,9 @@ bool ChildSession::saveAs(const char* /*buffer*/, int /*length*/, StringTokenize
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    bool success = _loKitDocument->pClass->saveAs(_loKitDocument, url.c_str(),
+    bool success = _loKitDocument->saveAs(url.c_str(),
             format.size() == 0 ? nullptr :format.c_str(),
             filterOptions.size() == 0 ? nullptr : filterOptions.c_str());
 
@@ -1124,12 +1123,12 @@ bool ChildSession::setClientPart(const char* /*buffer*/, int /*length*/, StringT
 
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
-    if (part != _loKitDocument->pClass->getPart(_loKitDocument))
+    if (part != _loKitDocument->getPart())
     {
         if (_multiView)
-            _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+            _loKitDocument->setView(_viewId);
 
-        _loKitDocument->pClass->setPart(_loKitDocument, part);
+        _loKitDocument->setPart(part);
     }
 
     return true;
@@ -1148,9 +1147,9 @@ bool ChildSession::setPage(const char* /*buffer*/, int /*length*/, StringTokeniz
     std::unique_lock<std::recursive_mutex> lock(Mutex);
 
     if (_multiView)
-        _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+        _loKitDocument->setView(_viewId);
 
-    _loKitDocument->pClass->setPart(_loKitDocument, page);
+    _loKitDocument->setPart(page);
     return true;
 }
 
diff --git a/loolwsd/ChildSession.hpp b/loolwsd/ChildSession.hpp
index 9795366..61557f6 100644
--- a/loolwsd/ChildSession.hpp
+++ b/loolwsd/ChildSession.hpp
@@ -20,7 +20,7 @@
 #include "LibreOfficeKit.hpp"
 
 class CallbackWorker;
-typedef std::function<LibreOfficeKitDocument*(const std::string&, const std::string&, const std::string&, const std::string&, bool)> OnLoadCallback;
+typedef std::function<std::shared_ptr<lok::Document>(const std::string&, const std::string&, const std::string&, const std::string&, bool)> OnLoadCallback;
 typedef std::function<void(const std::string&)> OnUnloadCallback;
 
 class ChildSession final : public LOOLSession
@@ -48,7 +48,7 @@ public:
 
     const std::string& getDocType() const { return _docType; }
 
-    LibreOfficeKitDocument *getLoKitDocument() const { return _loKitDocument; }
+    LibreOfficeKitDocument *getLoKitDocument() const { return _loKitDocument->get(); }
 
     void loKitCallback(const int nType, const char* pPayload);
 
@@ -84,7 +84,7 @@ private:
     virtual bool _handleInput(const char *buffer, int length) override;
 
 private:
-    LibreOfficeKitDocument *_loKitDocument;
+    std::shared_ptr<lok::Document> _loKitDocument;
     std::string _docType;
     const bool _multiView;
     const std::string _jailId;
diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp
index 43c0aca..c864691 100644
--- a/loolwsd/LOOLKit.cpp
+++ b/loolwsd/LOOLKit.cpp
@@ -843,7 +843,7 @@ private:
     }
 
     /// Load a document (or view) and register callbacks.
-    LibreOfficeKitDocument* onLoad(const std::string& sessionId,
+    std::shared_ptr<lok::Document> onLoad(const std::string& sessionId,
                                    const std::string& uri,
                                    const std::string& docPassword,
                                    const std::string& renderOpts,
@@ -882,7 +882,7 @@ private:
         --_isLoading;
         _cvLoading.notify_one();
 
-        return _loKitDocument->get();
+        return _loKitDocument;
     }
 
     void onUnload(const std::string& sessionId)


More information about the Libreoffice-commits mailing list