loleaflet/Makefile.am            |   13 ++-
 loleaflet/html/loleaflet.html.m4 |   25 +++----
 loleaflet/js/global.js           |  137 +++++++++++++++++++++++++++------------
 loleaflet/js/main.js             |    3 
 loleaflet/src/core/Socket.js     |   15 +++-
 loleaflet/src/map/Map.js         |    4 -
 6 files changed, 133 insertions(+), 64 deletions(-)

New commits:
commit a5e3bcec43fa4e82639adfff15ec9f1fa11b32ff
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Sun Jan 27 16:46:41 2019 -0400
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Tue May 14 15:50:22 2019 +0200

    loleaflet: uglify global.js file
    
    Change-Id: Ibcc265830c10042a918784b350fe93566147993a

diff --git a/loleaflet/Makefile.am b/loleaflet/Makefile.am
index f0212d338..5054070fa 100644
--- a/loleaflet/Makefile.am
+++ b/loleaflet/Makefile.am
@@ -217,6 +217,10 @@ $(builddir)/dist/bundle.css: $(LOLEAFLET_CSS)
        @echo "Uglify loleaflet css files..."
        @NODE_PATH=$(abs_builddir)/node_modules $(NODE) 
node_modules/uglifycss/uglifycss $(LOLEAFLET_CSS) > $@
 
+$(builddir)/dist/global.js: $(srcdir)/js/global.js
+       @echo "Uglify global.js file..."
+       @NODE_PATH=$(abs_builddir)/node_modules $(NODE) 
node_modules/uglify-js/bin/uglifyjs $< --output $@
+
 $(builddir)/dist/bundle.js: $(NODE_MODULES_JS_SRC) \
        $(LOLEAFLET_PREFIX)/dist/loleaflet-src.js \
        $(builddir)/dist/global.js \
commit 18a4cd16da9e8d6708cd3c0ebbcd5b50e8cc5bbb
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Sun Jan 27 14:04:26 2019 -0400
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Tue May 14 15:50:22 2019 +0200

    loleaflet: improve early "websocket" connection
    
    Normally the "websocket" is created and start a connection when browser
    evaluate "bundle.js" after download it.
    So we create an early "websocket" connection after the browser parse
    "loleaflet.html" and start receiving tiles to improve load page
    performance
    
    Change-Id: I56fca7a2da39031222c1d43781825997221385a1

diff --git a/loleaflet/Makefile.am b/loleaflet/Makefile.am
index a952cac41..f0212d338 100644
--- a/loleaflet/Makefile.am
+++ b/loleaflet/Makefile.am
@@ -123,9 +123,6 @@ endif
 NODE_MODULES_JS_SRC = $(patsubst %.js,$(builddir)/%.js,$(NODE_MODULES_JS))
 NODE_MODULES_JS_DST = $(patsubst %.js,$(builddir)/dist/%.js,$(NODE_MODULES_JS))
 
-GLOBAL_JS =\
-       global.js
-
 LOLEAFLET_JS = $(strip $(shell NODE_PATH=$(abs_builddir)/node_modules $(NODE) 
-e "try {console.log(require('$(1)').getFiles().join(' '))} catch(e) {}"))
 LOPLUGIN_JS = $(strip $(shell NODE_PATH=$(abs_builddir)/node_modules $(NODE) 
-e "try {console.log(require('$(1)').deps.join(' '))} catch(e) {}"))
 
@@ -222,7 +219,7 @@ $(builddir)/dist/bundle.css: $(LOLEAFLET_CSS)
 
 $(builddir)/dist/bundle.js: $(NODE_MODULES_JS_SRC) \
        $(LOLEAFLET_PREFIX)/dist/loleaflet-src.js \
-       $(srcdir)/js/global.js \
+       $(builddir)/dist/global.js \
        $(srcdir)/js/jquery.mCustomScrollbar.js \
        $(srcdir)/js/w2ui-1.5.rc1.js \
        $(srcdir)/js/toolbar.js \
@@ -249,7 +246,8 @@ $(builddir)/dist/loleaflet.html: 
$(srcdir)/html/loleaflet.html.m4 $(LOLEAFLET_HT
                -DMOBILEAPPNAME="$(APP_NAME)" \
                -DLOLEAFLET_CSS="$(subst 
$(SPACE),$(COMMA),$(LOLEAFLET_CSS_M4))" \
                -DBUNDLE_CSS="$(abs_builddir)/dist/bundle.css" \
-               -DLOLEAFLET_JS="$(subst $(SPACE),$(COMMA),$(GLOBAL_JS) 
$(NODE_MODULES_JS) \
+               -DGLOBAL_JS="$(abs_builddir)/dist/global.js" \
+               -DLOLEAFLET_JS="$(subst $(SPACE),$(COMMA),$(NODE_MODULES_JS) \
                $(call LOLEAFLET_JS,$(srcdir)/build/build.js) \
                $(patsubst %.js,plugins/draw-$(DRAW_VERSION)/%.js,$(call 
LOLEAFLET_JS,$(srcdir)/plugins/draw-$(DRAW_VERSION)/build/build.js)) \
                $(patsubst %.js,plugins/path-transform/%.js,$(call 
LOPLUGIN_JS,$(srcdir)/plugins/path-transform/build/deps.js)) \
diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index 54dc9fb45..367ed3fe6 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -179,6 +179,7 @@ ifelse(MOBILEAPP,[true],
       window.outOfFocusTimeoutSecs = %OUT_OF_FOCUS_TIMEOUT_SECS%;
       window.idleTimeoutSecs = %IDLE_TIMEOUT_SECS%;
       window.tileSize = 256;])
+syscmd([cat ]GLOBAL_JS)dnl
     </script>
   <script defer>
 
diff --git a/loleaflet/js/global.js b/loleaflet/js/global.js
index 9b529af8b..1b7f07883 100644
--- a/loleaflet/js/global.js
+++ b/loleaflet/js/global.js
@@ -49,4 +49,59 @@
                }
        };
 
+       var docParams, wopiParams;
+       var filePath = global.getParameterByName('file_path');
+       var wopiSrc = global.getParameterByName('WOPISrc');
+       if (wopiSrc != '') {
+               global.docURL = decodeURIComponent(wopiSrc);
+               wopiSrc = '?WOPISrc=' + wopiSrc + '&compat=/ws';
+               if (global.accessToken !== '') {
+                       wopiParams = { 'access_token': global.accessToken, 
'access_token_ttl': global.accessTokenTTL };
+               }
+               else if (global.accessHeader !== '') {
+                       wopiParams = { 'access_header': global.accessHeader };
+               }
+               docParams = Object.keys(wopiParams).map(function(key) {
+                       return encodeURIComponent(key) + '=' + 
encodeURIComponent(wopiParams[key])
+               }).join('&');
+       } else {
+               global.docURL = filePath;
+       }
+
+       var websocketURI = global.host + global.serviceRoot + '/lool/' + 
encodeURIComponent(global.docURL + (docParams ? '?' + docParams : '')) + '/ws' 
+ wopiSrc;
+
+       try {
+               global.socket = new WebSocket(websocketURI);
+       } catch (err) {
+               console.log(err);
+       }
+
+       global.queueMsg = [];
+       if (global.socket && global.socket.readyState !== 3) {
+               global.socket.onopen = function () {
+                       if (global.socket.readyState === 1) {
+                               var ProtocolVersionNumber = '0.1';
+                               global.socket.send('loolclient ' + 
ProtocolVersionNumber);
+                               global.socket.send('load url=' + 
encodeURIComponent(global.docURL));
+                       }
+               }
+
+               global.socket.onerror = function (event) {
+                       console.log(event);
+               }
+
+               global.socket.onclose = function (event) {
+                       console.log(event);
+               }
+
+               global.socket.onmessage = function (event) {
+                       if (global.L && global.socket instanceof 
global.L.Socket) {
+                               global.socket._onMessage(event);
+                       } else {
+                               global.queueMsg.push(event.data);
+                       }
+               }
+
+               global.socket.binaryType = 'arraybuffer';
+       }
 }(window));
diff --git a/loleaflet/js/main.js b/loleaflet/js/main.js
index 15e859606..801cf33b6 100644
--- a/loleaflet/js/main.js
+++ b/loleaflet/js/main.js
@@ -79,8 +79,9 @@ map.addControl(L.control.columnHeader());
 map.addControl(L.control.rowHeader());
 map.addControl(L.control.contextMenu());
 map.addControl(L.control.infobar());
-map.loadDocument();
+map.loadDocument(global.socket);
 
+global.socket = map._socket;
 window.addEventListener('beforeunload', function () {
        if (map && map._socket) {
                map._socket.close();
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 884a0c8d2..290016fcd 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -50,7 +50,7 @@ L.Socket = L.Class.extend({
                this._msgQueue = [];
        },
 
-       connect: function() {
+       connect: function(socket) {
                var map = this._map;
                if (map.options.permission) {
                        map.options.docParams['permission'] = 
map.options.permission;
@@ -61,7 +61,9 @@ L.Socket = L.Class.extend({
                if (window.ThisIsAMobileApp) {
                        this.socket = new FakeWebSocket();
                        window.TheFakeWebSocket = this.socket;
-               } else {
+               } else if (socket && (socket.readyState === 1 || 
socket.readyState === 0)) {
+                       this.socket = socket;
+               } else  {
                        var wopiSrc = '';
                        if (map.options.wopiSrc != '') {
                                wopiSrc = '?WOPISrc=' + map.options.wopiSrc + 
'&compat=/ws';
@@ -105,6 +107,15 @@ L.Socket = L.Class.extend({
                        this._accessTokenExpireTimeout = 
setTimeout(L.bind(this._sessionExpiredWarning, this),
                                                                    
parseInt(map.options.docParams.access_token_ttl) - Date.now() - 
tokenExpiryWarning);
                }
+
+               // process messages for early socket connection
+               if (socket && ((socket.readyState === 1 || socket.readyState 
=== 0)) &&
+                       window.queueMsg && window.queueMsg.length > 0) {
+                       for (var it = 0; it < window.queueMsg.length; it++) {
+                               this._onMessage({data: window.queueMsg[it]});
+                       }
+                       window.queueMsg = [];
+               }
        },
 
        _sessionExpiredWarning: function() {
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 9e25fbe04..c1413504b 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -254,8 +254,8 @@ L.Map = L.Evented.extend({
                }, this);
        },
 
-       loadDocument: function() {
-               this._socket.connect();
+       loadDocument: function(socket) {
+               this._socket.connect(socket);
        },
 
        sendInitUNOCommands: function() {
commit f1d49854c75fb9049ae18092cb85c4915f6a9242
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Sun Jan 27 13:42:44 2019 -0400
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Tue May 14 15:50:22 2019 +0200

    loleaflet: expand inline bundle.css style into html
    
    Change-Id: Id26180777a1b9838c3a9b5dc1e541023d0299595

diff --git a/loleaflet/Makefile.am b/loleaflet/Makefile.am
index 8b93f4a8e..a952cac41 100644
--- a/loleaflet/Makefile.am
+++ b/loleaflet/Makefile.am
@@ -248,6 +248,7 @@ $(builddir)/dist/loleaflet.html: 
$(srcdir)/html/loleaflet.html.m4 $(LOLEAFLET_HT
                -DGTKAPP=$(ENABLE_GTKAPP) \
                -DMOBILEAPPNAME="$(APP_NAME)" \
                -DLOLEAFLET_CSS="$(subst 
$(SPACE),$(COMMA),$(LOLEAFLET_CSS_M4))" \
+               -DBUNDLE_CSS="$(abs_builddir)/dist/bundle.css" \
                -DLOLEAFLET_JS="$(subst $(SPACE),$(COMMA),$(GLOBAL_JS) 
$(NODE_MODULES_JS) \
                $(call LOLEAFLET_JS,$(srcdir)/build/build.js) \
                $(patsubst %.js,plugins/draw-$(DRAW_VERSION)/%.js,$(call 
LOLEAFLET_JS,$(srcdir)/plugins/draw-$(DRAW_VERSION)/build/build.js)) \
diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index b0e1bd5c1..54dc9fb45 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -44,16 +44,16 @@ var Base64ToArrayBuffer = function(base64Str) {
 </script>
 
 ifelse(MOBILEAPP,[true],
-  ifelse(DEBUG,[true],
+  [ifelse(DEBUG,[true],
     foreachq([fileCSS],[LOLEAFLET_CSS],[<link rel="stylesheet" href="fileCSS" 
/>
   ]),
-    [<link rel="stylesheet" href="bundle.css" />
-  ]),
-  ifelse(DEBUG,[true],
+    [<style>syscmd([cat ]BUNDLE_CSS)</style>
+  ])],
+  [ifelse(DEBUG,[true],
     foreachq([fileCSS],[LOLEAFLET_CSS],[<link rel="stylesheet" 
href="%SERVICE_ROOT%/loleaflet/%VERSION%/fileCSS" />
   ]),
-    [<link rel="stylesheet" 
href="%SERVICE_ROOT%/loleaflet/%VERSION%/bundle.css" />
-  ])dnl
+    [<style>syscmd([cat ]BUNDLE_CSS)</style>
+  ])]dnl
 )dnl
 <!--%BRANDING_CSS%--> <!-- add your logo here -->
 ifelse(IOSAPP,[true],
commit c3feda5e71eb0c414243aff396602ceffd0c21d4
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Sun Jan 27 13:27:37 2019 -0400
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Tue May 14 15:50:22 2019 +0200

    loleaflet: add defer attribute to the script tag
    
    A script that will not run until after the page has loaded
    
    Change-Id: I7a835138ba22e70150db4345629231c59b84973b

diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index 440454c5d..b0e1bd5c1 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -159,7 +159,7 @@ ifelse(MOBILEAPP,[true],
       <p>Copyright _YEAR_, Collabora Productivity Limited.</p>
     </div>
 
-    <script>
+    <script defer>
 ifelse(MOBILEAPP,[true],
      [window.host = '';
       window.serviceRoot = '';
@@ -180,7 +180,7 @@ ifelse(MOBILEAPP,[true],
       window.idleTimeoutSecs = %IDLE_TIMEOUT_SECS%;
       window.tileSize = 256;])
     </script>
-  <script>
+  <script defer>
 
 dnl# For use in conditionals in JS: window.ThisIsAMobileApp, 
window.ThisIsTheiOSApp,
 dnl# and window.ThisIsTheGtkApp
@@ -201,14 +201,14 @@ ifelse(GTKAPP,[true],
 
 ifelse(MOBILEAPP,[true],
   ifelse(DEBUG,[true],foreachq([fileJS],[LOLEAFLET_JS],
-  [    <script src="fileJS"></script>
+  [    <script src="fileJS" defer></script>
   ]),
-  [    <script src="bundle.js"></script>
+  [    <script src="bundle.js" defer></script>
   ]),
   ifelse(DEBUG,[true],foreachq([fileJS],[LOLEAFLET_JS],
-  [    <script src="%SERVICE_ROOT%/loleaflet/%VERSION%/fileJS"></script>
+  [    <script src="%SERVICE_ROOT%/loleaflet/%VERSION%/fileJS" defer></script>
   ]),
-  [    <script src="%SERVICE_ROOT%/loleaflet/%VERSION%/bundle.js"></script>
+  [    <script src="%SERVICE_ROOT%/loleaflet/%VERSION%/bundle.js" 
defer></script>
   ])
 )dnl
     <!--%BRANDING_JS%--> <!-- logo onclick handler -->
commit 33b248886d9d3fce1a908196398c2be910dd1bea
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Sat Jan 26 17:21:48 2019 -0400
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Tue May 14 15:50:22 2019 +0200

    loleaflet: indent global.js
    
    Change-Id: Ib04a18bcedb26ce267a80fd7990454f590de1a3d

diff --git a/loleaflet/js/global.js b/loleaflet/js/global.js
index c7fed9b39..9b529af8b 100644
--- a/loleaflet/js/global.js
+++ b/loleaflet/js/global.js
@@ -1,54 +1,52 @@
 /* -*- js-indent-level: 8 -*- */
-/* global loleafletLogging */
-/*eslint indent: [error, "tab", { "outerIIFEBody": 0 }]*/
 (function (global) {
 
-// If not debug, don't print anything on the console
-// except in tile debug mode (Ctrl-Shift-Alt-d)
-console.log2 = console.log;
-if (loleafletLogging !== 'true') {
-       var methods = ['warn', 'info', 'debug', 'trace', 'log', 'assert', 
'time', 'timeEnd'];
-       for (var i = 0; i < methods.length; i++) {
-               console[methods[i]] = function() {};
+       // If not debug, don't print anything on the console
+       // except in tile debug mode (Ctrl-Shift-Alt-d)
+       console.log2 = console.log;
+       if (global.loleafletLogging !== 'true') {
+               var methods = ['warn', 'info', 'debug', 'trace', 'log', 
'assert', 'time', 'timeEnd'];
+               for (var i = 0; i < methods.length; i++) {
+                       console[methods[i]] = function() {};
+               }
        }
-}
 
-// fix jquery-ui
-// var jQuery = require('jquery');
-global.require = function (path) {
-       if (path=='jquery') {
-               return global.jQuery;
-       }
-};
+       // fix jquery-ui
+       // var jQuery = require('jquery');
+       global.require = function (path) {
+               if (path=='jquery') {
+                       return global.jQuery;
+               }
+       };
 
-global.getParameterByName = function (name) {
-       name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
-       var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
-       var results = regex.exec(location.search);
-       return results === null ? '' : results[1].replace(/\+/g, ' ');
-};
+       global.getParameterByName = function (name) {
+               name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
+               var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
+               var results = regex.exec(location.search);
+               return results === null ? '' : results[1].replace(/\+/g, ' ');
+       };
 
-global._ = function (string) {
-       // In the mobile app case we can't use the stuff from l10n-for-node, as 
that assumes HTTP.
-       if (window.ThisIsTheiOSApp) {
-               // We use another approach just for iOS for now.
-               if (window.LOCALIZATIONS.hasOwnProperty(string)) {
-                       // window.webkit.messageHandlers.debug.postMessage('_(' 
+ string + '): YES: ' + window.LOCALIZATIONS[string]);
-                       var result = window.LOCALIZATIONS[string];
-                       if (window.LANG === 'de-CH') {
-                               result = result.replace(/ß/g, 'ss');
+       global._ = function (string) {
+               // In the mobile app case we can't use the stuff from 
l10n-for-node, as that assumes HTTP.
+               if (window.ThisIsTheiOSApp) {
+                       // We use another approach just for iOS for now.
+                       if (window.LOCALIZATIONS.hasOwnProperty(string)) {
+                               // 
window.webkit.messageHandlers.debug.postMessage('_(' + string + '): YES: ' + 
window.LOCALIZATIONS[string]);
+                               var result = window.LOCALIZATIONS[string];
+                               if (window.LANG === 'de-CH') {
+                                       result = result.replace(/ß/g, 'ss');
+                               }
+                               return result;
+                       } else {
+                               // 
window.webkit.messageHandlers.debug.postMessage('_(' + string + '): NO');
+                               return string;
                        }
-                       return result;
+               } else if (window.ThisIsAMobileApp) {
+                       // And bail out without translations on other mobile 
platforms.
+                       return string.toLocaleString();
                } else {
-                       // window.webkit.messageHandlers.debug.postMessage('_(' 
+ string + '): NO');
-                       return string;
+                       return string.toLocaleString();
                }
-       } else if (window.ThisIsAMobileApp) {
-               // And bail out without translations on other mobile platforms.
-               return string;
-       } else {
-               return string.toLocaleString();
-       }
-};
+       };
 
 }(window));
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to