loleaflet/reference.html     |    5 +++--
 loleaflet/src/core/Socket.js |   11 +++++++++++
 wsd/DocumentBroker.cpp       |   11 ++++++++++-
 3 files changed, 24 insertions(+), 3 deletions(-)

New commits:
commit 5cd5fb1c33f0e1b6df280d6fd78b163e0ea44471
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Fri Apr 26 12:06:17 2019 +0200
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Fri May 3 17:54:49 2019 +0200

    Handle storage load errors
    
    Pass information about storage loading failures
    to the wopi host.
    
    Change-Id: I8da3a80e47b15f246343dc8e4199d8f860e1fb8a
    Reviewed-on: https://gerrit.libreoffice.org/71526
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>
    Tested-by: Jan Holesovsky <ke...@collabora.com>

diff --git a/loleaflet/reference.html b/loleaflet/reference.html
index 58bdb351b..2fb7c801f 100644
--- a/loleaflet/reference.html
+++ b/loleaflet/reference.html
@@ -2765,10 +2765,11 @@ Editor to WOPI host
                    can be shown. <br/>
                    Accompanying keys: <i>Features</i>: This client's 
capabilities.
                    Supported values are: <i>VersionStates</i>. Tells the host 
that client supports different version states. See <a 
href="#loleaflet-postmessage-versioning">Version Restore</a> for more 
details.<br/>
-                   When Status is Document_Loaded, document has been completely
+                   When Status is <i>Document_Loaded</i>, document has been 
completely
                    loaded and host can also start using PostMessage API.<br/>
                    Accompanying keys:
-                   <i>DocumentLoadedTime</i>
+                       <i>DocumentLoadedTime</i><br/>
+                       When Status is <i>Failed</i>, document hasn't been 
loaded but host can show the loleaflet frame to present an error for a user.
                </td>
        </tr>
 </table>
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index a73c71e00..0e27a7096 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -307,6 +307,17 @@ L.Socket = L.Class.extend({
                        this._map.fire('wopiprops', wopiInfo);
                        return;
                }
+               else if (textMsg.startsWith('loadstorage: ')) {
+                       if (textMsg.substring(textMsg.indexOf(':') + 2) === 
'failed') {
+                               console.debug('Loading document from a storage 
failed');
+                               this._map.fire('postMessage', {
+                                       msgId: 'App_LoadingStatus',
+                                       args: {
+                                               Status: 'Failed'
+                                       }
+                               });
+                       }
+               }
                else if (textMsg.startsWith('lastmodtime: ')) {
                        var time = textMsg.substring(textMsg.indexOf(' '));
                        this._map.updateModificationIndicator(time);
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index b6d6bef07..191c76ce8 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -492,7 +492,16 @@ bool DocumentBroker::load(const 
std::shared_ptr<ClientSession>& session, const s
         const Poco::URI& uriPublic = session->getPublicUri();
         LOG_DBG("Loading, and creating new storage instance for URI [" << 
LOOLWSD::anonymizeUrl(uriPublic.toString()) << "].");
 
-        _storage = StorageBase::create(uriPublic, jailRoot, 
jailPath.toString());
+        try
+        {
+            _storage = StorageBase::create(uriPublic, jailRoot, 
jailPath.toString());
+        }
+        catch (...)
+        {
+            session->sendMessage("loadstorage: failed");
+            throw;
+        }
+
         if (_storage == nullptr)
         {
             // We should get an exception, not null.
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to