android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java |    6 
++++++
 loleaflet/src/control/Control.AlertDialog.js                         |    6 
+++++-
 loleaflet/src/control/Control.Infobar.js                             |    6 
+++++-
 loleaflet/src/control/Control.Menubar.js                             |    7 
++++++-
 loleaflet/src/control/Toolbar.js                                     |    2 +-
 loleaflet/src/core/Socket.js                                         |    4 
++--
 6 files changed, 25 insertions(+), 6 deletions(-)

New commits:
commit 2174206de1a8f5a87efef934b208c8b95db03447
Author:     Jan Holesovsky <ke...@collabora.com>
AuthorDate: Fri Feb 14 15:22:46 2020 +0100
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Fri Feb 14 15:43:58 2020 +0100

    android: Don't hang after returning from a hyperlink.
    
    It seems that it is actually the webview that gets into a weird state
    after returning from the url.  Unfortunately intercepting the calls via
    shouldOverrideUrlLoading() in a WebViewClient does not help, so the only
    way seems to be to make sure we actually don't have any clickable URL
    anywhere, and for the rest, we issue a 'HYPERLINK' postMobileMessage...
    
    Change-Id: I62dc2cfbe867e97aec7fac5f83c4399814ef2ce4
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/88720
    Tested-by: Jan Holesovsky <ke...@collabora.com>
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>

diff --git 
a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java 
b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
index 424e0cd09..7033707e5 100644
--- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
+++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
@@ -785,6 +785,12 @@ public class LOActivity extends AppCompatActivity {
                 }
                 return false;
             }
+            case "HYPERLINK": {
+                Intent intent = new Intent(Intent.ACTION_VIEW);
+                intent.setData(Uri.parse(messageAndParam[1]));
+                startActivity(intent);
+                return false;
+            }
         }
         return true;
     }
diff --git a/loleaflet/src/control/Control.AlertDialog.js 
b/loleaflet/src/control/Control.AlertDialog.js
index c73d87d92..20404dcb5 100644
--- a/loleaflet/src/control/Control.AlertDialog.js
+++ b/loleaflet/src/control/Control.AlertDialog.js
@@ -62,7 +62,11 @@ L.Control.AlertDialog = L.Control.extend({
                                        type: 'button',
                                        className: 'vex-dialog-button-primary',
                                        click: function openClick () {
-                                               window.open(url, '_blank');
+                                               if (window.ThisIsAMobileApp) {
+                                                       
window.postMobileMessage('HYPERLINK ' + url);
+                                               } else {
+                                                       window.open(url, 
'_blank');
+                                               }
                                                vex.closeAll();
                                        }
                                });
diff --git a/loleaflet/src/control/Control.Infobar.js 
b/loleaflet/src/control/Control.Infobar.js
index b00d0cdb2..48b92c8a1 100644
--- a/loleaflet/src/control/Control.Infobar.js
+++ b/loleaflet/src/control/Control.Infobar.js
@@ -22,7 +22,11 @@ L.Control.Infobar = L.Control.extend({
                                        return;
 
                                if (e.action.startsWith('http')) { // We have a 
link
-                                       var win = window.open(e.action, 
'_blank');
+                                       if (window.ThisIsAMobileApp) {
+                                               
window.postMobileMessage('HYPERLINK ' + e.action);
+                                       } else {
+                                               var win = window.open(e.action, 
'_blank');
+                                       }
                                        win.focus();
                                }
                        };
diff --git a/loleaflet/src/control/Control.Menubar.js 
b/loleaflet/src/control/Control.Menubar.js
index 1a5cdc19d..6ea82050f 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -1155,7 +1155,12 @@ L.Control.Menubar = L.Control.extend({
                } else if (id === 'about') {
                        this._map.showLOAboutDialog();
                } else if (id === 'report-an-issue') {
-                       
window.open('https://bugs.documentfoundation.org/enter_bug.cgi?product=LibreOffice%20Online',
 '_blank');
+                       var bugLink = 
'https://bugs.documentfoundation.org/enter_bug.cgi?product=LibreOffice%20Online';
+                       if (window.ThisIsAMobileApp) {
+                               window.postMobileMessage('HYPERLINK ' + 
bugLink);
+                       } else {
+                               window.open(bugLink, '_blank');
+                       }
                } else if (id === 'inserthyperlink') {
                        this._map.showHyperlinkDialog();
                } else if (id === 'keyboard-shortcuts' || id === 'online-help') 
{
diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js
index 2d9e007f2..e6316188a 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -358,7 +358,7 @@ L.Map.include({
                content.find('#product-name').text(productName);
                var productString = _('This version of %productName is powered 
by');
                var productNameWithURL;
-               if (!window.ThisIsTheiOSApp)
+               if (!window.ThisIsAMobileApp)
                        productNameWithURL = '<a href="' + 
sanitizeUrl.sanitizeUrl(productURL) +
                                                                 '" 
target="_blank">' + productName + '</a>';
                else
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 5978d5e81..49bdc41d5 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -278,7 +278,7 @@ L.Socket = L.Class.extend({
                        this.WSDServer = 
JSON.parse(textMsg.substring(textMsg.indexOf('{')));
                        var h = this.WSDServer.Hash;
                        if (parseInt(h,16).toString(16) === 
h.toLowerCase().replace(/^0+/, '')) {
-                               if (!window.ThisIsTheiOSApp) {
+                               if (!window.ThisIsAMobileApp) {
                                        h = '<a target="_blank" 
href="https://hub.libreoffice.org/git-online/' + h + '">' + h + '</a>';
                                }
                                
$('#loolwsd-version').html(this.WSDServer.Version + ' (git hash: ' + h + ')');
@@ -302,7 +302,7 @@ L.Socket = L.Class.extend({
                else if (textMsg.startsWith('lokitversion ')) {
                        var lokitVersionObj = 
JSON.parse(textMsg.substring(textMsg.indexOf('{')));
                        h = lokitVersionObj.BuildId.substring(0, 7);
-                       if (!window.ThisIsTheiOSApp && 
parseInt(h,16).toString(16) === h.toLowerCase().replace(/^0+/, '')) {
+                       if (!window.ThisIsAMobileApp && 
parseInt(h,16).toString(16) === h.toLowerCase().replace(/^0+/, '')) {
                                h = '<a target="_blank" 
href="https://hub.libreoffice.org/git-core/' + h + '">' + h + '</a>';
                        }
                        $('#lokit-version').html(lokitVersionObj.ProductName + 
' ' +
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to