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
