loleaflet/src/core/Browser.js          |  109 ++++++++++++++++++++++++++++++---
 loleaflet/src/layer/tile/TileLayer.js  |    3 
 loleaflet/src/map/handler/Map.Print.js |    6 +
 wsd/reference.txt                      |    4 +
 4 files changed, 109 insertions(+), 13 deletions(-)

New commits:
commit 7c6d4719dabbaf479c4e7f7bb56c26970a7e6371
Author: Pranav Kant <[email protected]>
Date:   Wed Dec 14 19:06:26 2016 +0530

    loleaflet: Print dialog for MS edge too
    
    MS Edge seems to be very problematic when one tries to load the
    pdf blob into the print iframe and issue a print command to it.
    
    Lets fallback to print prompt as we have in firefox
    
    Change-Id: I97fc394d0053030231c524efb6bf808d32a9aa07

diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index d93ed2e..0f5ca9f 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -465,7 +465,7 @@ L.TileLayer = L.GridLayer.extend({
 
                this._map.hideBusy();
                if (command.id === 'print') {
-                       if (L.Browser.gecko || this._map.options.print === 
false) {
+                       if (L.Browser.gecko || L.Browser.edge || 
this._map.options.print === false) {
                                // the print dialog doesn't work well on firefox
                                this._map.fire('print', {url: url});
                        }
commit 1bfbd6990cbc289734d06776326ca1ecefb1ce90
Author: Pranav Kant <[email protected]>
Date:   Wed Dec 14 19:05:34 2016 +0530

    loleaflet: Reuse L.Browser instead of our own logic
    
    Change-Id: I479d6aa3de657ba032e3bb7e5039d5744a859163

diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index a4856f1..d93ed2e 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -465,8 +465,7 @@ L.TileLayer = L.GridLayer.extend({
 
                this._map.hideBusy();
                if (command.id === 'print') {
-                       var isFirefox = typeof InstallTrigger !== 'undefined' 
|| navigator.userAgent.search('Firefox') >= 0;
-                       if (isFirefox || this._map.options.print === false) {
+                       if (L.Browser.gecko || this._map.options.print === 
false) {
                                // the print dialog doesn't work well on firefox
                                this._map.fire('print', {url: url});
                        }
commit a0036f24bac8fdfd67055935aa756c873db30fe7
Author: Pranav Kant <[email protected]>
Date:   Wed Dec 14 19:03:13 2016 +0530

    Pick changes from upstream Leaflet
    
    Only the changes made to src/core/Browser.js
    
    Change-Id: I96f95e59a50fabea7dad1a8836e78aebac9112c8

diff --git a/loleaflet/src/core/Browser.js b/loleaflet/src/core/Browser.js
index 1a71e4a..fd9d7a8 100644
--- a/loleaflet/src/core/Browser.js
+++ b/loleaflet/src/core/Browser.js
@@ -1,5 +1,16 @@
 /*
- * L.Browser handles different browser and feature detections for internal 
Leaflet use.
+ * @namespace Browser
+ * @aka L.Browser
+ *
+ * A namespace with static properties for browser/feature detection used by 
Leaflet internally.
+ *
+ * @example
+ *
+ * ```js
+ * if (L.Browser.ielt9) {
+ *   alert('Upgrade your browser, dude!');
+ * }
+ * ```
  */
 
 (function () {
@@ -13,44 +24,124 @@
            phantomjs = ua.indexOf('phantom') !== -1,
            android23 = ua.search('android [23]') !== -1,
            chrome    = ua.indexOf('chrome') !== -1,
+           gecko     = ua.indexOf('gecko') !== -1  && !webkit && !window.opera 
&& !ie,
 
-           mobile = typeof orientation !== 'undefined',
-           msPointer = navigator.msPointerEnabled && 
navigator.msMaxTouchPoints && !window.PointerEvent,
-           pointer = (window.PointerEvent && navigator.pointerEnabled && 
navigator.maxTouchPoints) || msPointer,
+           win = navigator.platform.indexOf('Win') === 0,
+
+           mobile = typeof orientation !== 'undefined' || ua.indexOf('mobile') 
!== -1,
+           msPointer = !window.PointerEvent && window.MSPointerEvent,
+           pointer = window.PointerEvent || msPointer,
 
            ie3d = ie && ('transition' in doc.style),
            webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new 
window.WebKitCSSMatrix()) && !android23,
            gecko3d = 'MozPerspective' in doc.style,
-           opera3d = 'OTransition' in doc.style;
+           opera12 = 'OTransition' in doc.style;
+
 
-       var touch = !window.L_NO_TOUCH && !phantomjs && (pointer || 
'ontouchstart' in window ||
+       var touch = !window.L_NO_TOUCH && (pointer || 'ontouchstart' in window 
||
                        (window.DocumentTouch && document instanceof 
window.DocumentTouch));
 
        L.Browser = {
+
+               // @property ie: Boolean
+               // `true` for all Internet Explorer versions (not Edge).
                ie: ie,
+
+               // @property ielt9: Boolean
+               // `true` for Internet Explorer versions less than 9.
                ielt9: ie && !document.addEventListener,
+
+               // @property edge: Boolean
+               // `true` for the Edge web browser.
+               edge: 'msLaunchUri' in navigator && !('documentMode' in 
document),
+
+               // @property webkit: Boolean
+               // `true` for webkit-based browsers like Chrome and Safari 
(including mobile versions).
                webkit: webkit,
-               gecko: (ua.indexOf('gecko') !== -1) && !webkit && !window.opera 
&& !ie,
+
+               // @property gecko: Boolean
+               // `true` for gecko-based browsers like Firefox.
+               gecko: gecko,
+
+               // @property android: Boolean
+               // `true` for any browser running on an Android platform.
                android: ua.indexOf('android') !== -1,
+
+               // @property android23: Boolean
+               // `true` for browsers running on Android 2 or Android 3.
                android23: android23,
+
+               // @property chrome: Boolean
+               // `true` for the Chrome browser.
                chrome: chrome,
+
+               // @property safari: Boolean
+               // `true` for the Safari browser.
                safari: !chrome && ua.indexOf('safari') !== -1,
 
+
+               // @property win: Boolean
+               // `true` when the browser is running in a Windows platform
+               win: win,
+
+
+               // @property ie3d: Boolean
+               // `true` for all Internet Explorer versions supporting CSS 
transforms.
                ie3d: ie3d,
+
+               // @property webkit3d: Boolean
+               // `true` for webkit-based browsers supporting CSS transforms.
                webkit3d: webkit3d,
+
+               // @property gecko3d: Boolean
+               // `true` for gecko-based browsers supporting CSS transforms.
                gecko3d: gecko3d,
-               opera3d: opera3d,
-               any3d: !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d || 
opera3d) && !phantomjs,
 
+               // @property opera12: Boolean
+               // `true` for the Opera browser supporting CSS transforms 
(version 12 or later).
+               opera12: opera12,
+
+               // @property any3d: Boolean
+               // `true` for all browsers supporting CSS transforms.
+               any3d: !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && 
!opera12 && !phantomjs,
+
+
+               // @property mobile: Boolean
+               // `true` for all browsers running in a mobile device.
                mobile: mobile,
+
+               // @property mobileWebkit: Boolean
+               // `true` for all webkit-based browsers in a mobile device.
                mobileWebkit: mobile && webkit,
+
+               // @property mobileWebkit3d: Boolean
+               // `true` for all webkit-based browsers in a mobile device 
supporting CSS transforms.
                mobileWebkit3d: mobile && webkit3d,
+
+               // @property mobileOpera: Boolean
+               // `true` for the Opera browser in a mobile device.
                mobileOpera: mobile && window.opera,
 
+               // @property mobileGecko: Boolean
+               // `true` for gecko-based browsers running in a mobile device.
+               mobileGecko: mobile && gecko,
+
+
+               // @property touch: Boolean
+               // `true` for all browsers supporting [touch 
events](https://developer.mozilla.org/docs/Web/API/Touch_events).
                touch: !!touch,
+
+               // @property msPointer: Boolean
+               // `true` for browsers implementing the Microsoft touch events 
model (notably IE10).
                msPointer: !!msPointer,
+
+               // @property pointer: Boolean
+               // `true` for all browsers supporting [pointer 
events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).
                pointer: !!pointer,
 
+
+               // @property retina: Boolean
+               // `true` for browsers on a high-resolution "retina" screen.
                retina: (window.devicePixelRatio || (window.screen.deviceXDPI / 
window.screen.logicalXDPI)) > 1
        };
 
commit 7ed38a20117210a4cca9ec23adbe1f4ab028aeec
Author: Pranav Kant <[email protected]>
Date:   Wed Dec 14 18:16:46 2016 +0530

    loleaflet: Pass print frame as argument to close function
    
    Removing this._printIframe may still cause leakage here as
    this._printIframe is overwritten everytime user issues a print
    command.
    
    Change-Id: I06f45604940380b809bc262f07b9b6a8aa7d9a87

diff --git a/loleaflet/src/map/handler/Map.Print.js 
b/loleaflet/src/map/handler/Map.Print.js
index 6ec4c2e..8f32fb6 100644
--- a/loleaflet/src/map/handler/Map.Print.js
+++ b/loleaflet/src/map/handler/Map.Print.js
@@ -50,11 +50,11 @@ L.Map.Print = L.Handler.extend({
                this._printIframe.contentWindow.focus(); // Required for IE
                this._printIframe.contentWindow.print();
                // couldn't find another way to remove it
-               setTimeout(L.bind(this._closePrintIframe, this), 300 * 1000);
+               setTimeout(L.bind(this._closePrintIframe, this, 
this._printIframe), 300 * 1000);
        },
 
-       _closePrintIframe: function () {
-               L.DomUtil.remove(this._printIframe);
+       _closePrintIframe: function (printIframe) {
+               L.DomUtil.remove(printIframe);
                this._map.focus();
        }
 });
commit e255fe64d22ebc1a1f8c015114b2684b27f9d1ca
Author: Pranav Kant <[email protected]>
Date:   Wed Dec 14 18:14:52 2016 +0530

    loleaflet: bump timeout for closing print iframe to 5 minutes
    
    Change-Id: If58a28ef5c856b4ab5e497028fbcabf7b954b282

diff --git a/loleaflet/src/map/handler/Map.Print.js 
b/loleaflet/src/map/handler/Map.Print.js
index 5fa56c8..6ec4c2e 100644
--- a/loleaflet/src/map/handler/Map.Print.js
+++ b/loleaflet/src/map/handler/Map.Print.js
@@ -50,10 +50,10 @@ L.Map.Print = L.Handler.extend({
                this._printIframe.contentWindow.focus(); // Required for IE
                this._printIframe.contentWindow.print();
                // couldn't find another way to remove it
-               setTimeout(L.bind(this._closePrintDialog, this), 1000);
+               setTimeout(L.bind(this._closePrintIframe, this), 300 * 1000);
        },
 
-       _closePrintDialog: function () {
+       _closePrintIframe: function () {
                L.DomUtil.remove(this._printIframe);
                this._map.focus();
        }
commit 9d039cbd5a65945b0fbb758f2841d725e4bd2a99
Author: Pranav Kant <[email protected]>
Date:   Wed Dec 14 18:14:28 2016 +0530

    Revert "loleaflet: print dialog: it seems that this magic hack is no more 
needed"
    
    This reverts commit 8c522c44d101c0c5e3e1c51b59249266cef4e9d3.
    
    We need to remove the iframe otherwise it will leak.

diff --git a/loleaflet/src/map/handler/Map.Print.js 
b/loleaflet/src/map/handler/Map.Print.js
index c2f8265..5fa56c8 100644
--- a/loleaflet/src/map/handler/Map.Print.js
+++ b/loleaflet/src/map/handler/Map.Print.js
@@ -49,6 +49,8 @@ L.Map.Print = L.Handler.extend({
        _onIframeLoaded: function () {
                this._printIframe.contentWindow.focus(); // Required for IE
                this._printIframe.contentWindow.print();
+               // couldn't find another way to remove it
+               setTimeout(L.bind(this._closePrintDialog, this), 1000);
        },
 
        _closePrintDialog: function () {
commit 23ab2202594aca7fd10ade6b95a4c9e6df417fe4
Author: Pranav Kant <[email protected]>
Date:   Wed Dec 14 13:51:48 2016 +0530

    Document owner termination feature
    
    Change-Id: If9e09ba781e0cb53a6a96a6acdaac8995fa8f348

diff --git a/wsd/reference.txt b/wsd/reference.txt
index 33c2876..4e9f5b4 100644
--- a/wsd/reference.txt
+++ b/wsd/reference.txt
@@ -43,5 +43,9 @@ DisableExport
 DisableCopy
        Disables copy/paste from/to the document in libreoffice online backend
 
+EnableOwnerTermination
+       If set to true, it allows the document owner (the one with OwnerId =
+       UserId) to send a 'closedocument' message (see protocol.txt)
+
 Note that it is possible to just hide print,save,export options while still
 being able to access them from WOPI hosts using PostMessage API (see 
loleaflet/reference.html)
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to