[Libreoffice-commits] online.git: android/app loleaflet/html loleaflet/js loleaflet/src loleaflet/util

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Feb 13 20:19:40 UTC 2019


 android/app/src/main/java/org/libreoffice/androidapp/JavaScriptInterface.java |   22 --------
 android/app/src/main/java/org/libreoffice/androidapp/MainActivity.java        |   26 +++++++++
 loleaflet/html/loleaflet.html.m4                                              |   27 +++++++---
 loleaflet/js/global.js                                                        |    4 -
 loleaflet/js/toolbar.js                                                       |    2 
 loleaflet/src/control/Control.Menubar.js                                      |    2 
 loleaflet/src/core/Socket.js                                                  |    4 -
 loleaflet/src/map/handler/Map.FileInserter.js                                 |    6 +-
 loleaflet/util/create-l10n-all-js.pl                                          |    2 
 9 files changed, 55 insertions(+), 40 deletions(-)

New commits:
commit 7604f9b21813c19a0644ae28ac987a541bebd699
Author:     Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Feb 13 21:16:42 2019 +0100
Commit:     Jan Holesovsky <kendy at collabora.com>
CommitDate: Wed Feb 13 21:18:57 2019 +0100

    android: Pass the messages from JS to the MainActivity.
    
    Change-Id: Id2d5bac0f67668305ed47276614fde590d461901

diff --git a/android/app/src/main/java/org/libreoffice/androidapp/JavaScriptInterface.java b/android/app/src/main/java/org/libreoffice/androidapp/JavaScriptInterface.java
deleted file mode 100644
index c1d28c8ed..000000000
--- a/android/app/src/main/java/org/libreoffice/androidapp/JavaScriptInterface.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-package org.libreoffice.androidapp;
-
-import android.webkit.JavascriptInterface;
-
-public class JavaScriptInterface {
-
-    @JavascriptInterface
-    public String getString(String aString) {
-        return aString + " -> came from JAVA";
-    }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/android/app/src/main/java/org/libreoffice/androidapp/MainActivity.java b/android/app/src/main/java/org/libreoffice/androidapp/MainActivity.java
index 504b7592a..ae27334c6 100644
--- a/android/app/src/main/java/org/libreoffice/androidapp/MainActivity.java
+++ b/android/app/src/main/java/org/libreoffice/androidapp/MainActivity.java
@@ -10,7 +10,9 @@
 package org.libreoffice.androidapp;
 
 import android.os.Bundle;
+import android.util.Log;
 import android.view.View;
+import android.webkit.JavascriptInterface;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
@@ -19,6 +21,7 @@ import android.widget.Button;
 import androidx.appcompat.app.AppCompatActivity;
 
 public class MainActivity extends AppCompatActivity {
+    final static String TAG = "MainActivity";
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -32,7 +35,7 @@ public class MainActivity extends AppCompatActivity {
 
         WebSettings browserSettings = browser.getSettings();
         browserSettings.setJavaScriptEnabled(true);
-        browser.addJavascriptInterface(new JavaScriptInterface(), "MainHandler");
+        browser.addJavascriptInterface(this, "LOOLMessageHandler");
 
         browser.loadUrl("file:///android_asset/dist/loleaflet.html?file_path=" +
                 "file:///android_asset/dist/hello-world.odt" + // TODO the real URL here
@@ -53,6 +56,27 @@ public class MainActivity extends AppCompatActivity {
         System.loadLibrary("androidapp");
     }
     public native void createLOOLWSD();
+
+    /** Passing messages from JS (instead of the websocket communication). */
+    @JavascriptInterface
+    public void postMobileMessage(String message)
+    {
+        Log.d(TAG, "postMobileMessage: " + message);
+    }
+
+    /** Passing messages from JS (instead of the websocket communication). */
+    @JavascriptInterface
+    public void postMobileError(String message)
+    {
+        Log.d(TAG, "postMobileError: " + message);
+    }
+
+    /** Passing messages from JS (instead of the websocket communication). */
+    @JavascriptInterface
+    public void postMobileDebug(String message)
+    {
+        Log.d(TAG, "postMobileDebug: " + message);
+    }
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index fbfa87b03..8c8eadd50 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -178,17 +178,30 @@ ifelse(MOBILEAPP,[true],
 dnl# For use in conditionals in JS: window.ThisIsAMobileApp, window.ThisIsTheiOSApp,
 dnl# and window.ThisIsTheGtkApp
 ifelse(MOBILEAPP,[true],
-  [window.ThisIsAMobileApp = true;
-   window.MobileAppName='MOBILEAPPNAME'],
-  [window.ThisIsAMobileApp = false;]
+  [   window.ThisIsAMobileApp = true;
+   window.MobileAppName='MOBILEAPPNAME';],
+  [   window.ThisIsAMobileApp = false;]
 )
 ifelse(IOSAPP,[true],
-  [window.ThisIsTheiOSApp = true;],
-  [window.ThisIsTheiOSApp = false;]
+  [   window.ThisIsTheiOSApp = true;
+   window.postMobileMessage = function(msg) { window.webkit.messageHandlers.lool.postMessage.postMessage(msg, '*'); };
+   window.postMobileError   = function(msg) { window.webkit.messageHandlers.error.postMessage(msg, '*'); };
+   window.postMobileDebug   = function(msg) { window.webkit.messageHandlers.debug.postMessage(msg, '*'); };],
+  [   window.ThisIsTheiOSApp = false;]
 )
 ifelse(GTKAPP,[true],
-  [window.ThisIsTheGtkApp = true;],
-  [window.ThisIsTheGtkApp = false;]
+  [   window.ThisIsTheGtkApp = true;
+   window.postMobileMessage = function(msg) { window.webkit.messageHandlers.lool.postMessage.postMessage(msg, '*'); };
+   window.postMobileError   = function(msg) { window.webkit.messageHandlers.error.postMessage(msg, '*'); };
+   window.postMobileDebug   = function(msg) { window.webkit.messageHandlers.debug.postMessage(msg, '*'); };],
+  [   window.ThisIsTheGtkApp = false;]
+)
+ifelse(ANDROIDAPP,[true],
+  [   window.ThisIsTheAndroidApp = true;
+   window.postMobileMessage = function(msg) { window.LOOLMessageHandler.postMobileMessage(msg); };
+   window.postMobileError   = function(msg) { window.LOOLMessageHandler.postMobileError(msg); };
+   window.postMobileDebug   = function(msg) { window.LOOLMessageHandler.postMobileDebug(msg); };],
+  [   window.ThisIsTheAndroidApp = false;]
 )
   </script>
 
diff --git a/loleaflet/js/global.js b/loleaflet/js/global.js
index c7fed9b39..53f58d659 100644
--- a/loleaflet/js/global.js
+++ b/loleaflet/js/global.js
@@ -33,14 +33,14 @@ global._ = function (string) {
 	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]);
+			// window.postMobileDebug('_(' + 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');
+			// window.postMobileDebug('_(' + string + '): NO');
 			return string;
 		}
 	} else if (window.ThisIsAMobileApp) {
diff --git a/loleaflet/js/toolbar.js b/loleaflet/js/toolbar.js
index b6673b5e0..a90b5169c 100644
--- a/loleaflet/js/toolbar.js
+++ b/loleaflet/js/toolbar.js
@@ -291,7 +291,7 @@ function onClick(e, id, item, subItem) {
 	}
 	else if (id === 'close' || id === 'closemobile') {
 		if (window.ThisIsAMobileApp) {
-			window.webkit.messageHandlers.lool.postMessage('BYE', '*');
+			window.postMobileMessage('BYE');
 		} else {
 			map.fire('postMessage', {msgId: 'close', args: {EverModified: map._everModified, Deprecated: true}});
 			map.fire('postMessage', {msgId: 'UI_Close', args: {EverModified: map._everModified}});
diff --git a/loleaflet/src/control/Control.Menubar.js b/loleaflet/src/control/Control.Menubar.js
index 8e2c7b680..2c3d45b2a 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -772,7 +772,7 @@ L.Control.Menubar = L.Control.extend({
 			this._map.fire('postMessage', {msgId: 'UI_FileVersions'});
 		} else if (id === 'closedocument') {
 			if (window.ThisIsAMobileApp) {
-				window.webkit.messageHandlers.lool.postMessage('BYE', '*');
+				window.postMobileMessage('BYE');
 			} else {
 				this._map.fire('postMessage', {msgId: 'close', args: {EverModified: this._map._everModified, Deprecated: true}});
 				this._map.fire('postMessage', {msgId: 'UI_Close', args: {EverModified: this._map._everModified}});
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 741cfe3a7..19c49ddef 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -29,7 +29,7 @@ FakeWebSocket.prototype.close = function() {
 
 FakeWebSocket.prototype.send = function(data) {
 	this.sendCounter++;
-	window.webkit.messageHandlers.lool.postMessage(data, '*');
+	window.postMobileMessage(data);
 }
 
 L.Socket = L.Class.extend({
@@ -95,7 +95,7 @@ L.Socket = L.Class.extend({
 			// map.options.doc, as in the websocketURI above? On the other hand, the app
 			// code that handles this special message knows the document to be edited
 			// anyway, and can send it on as necessary to the Online code.
-			window.webkit.messageHandlers.lool.postMessage('HULLO', '*');
+			window.postMobileMessage('HULLO');
 			// A FakeWebSocket is immediately open.
 			this.socket.onopen();
 		}
diff --git a/loleaflet/src/map/handler/Map.FileInserter.js b/loleaflet/src/map/handler/Map.FileInserter.js
index 63c94a63e..91a51e786 100644
--- a/loleaflet/src/map/handler/Map.FileInserter.js
+++ b/loleaflet/src/map/handler/Map.FileInserter.js
@@ -85,15 +85,15 @@ L.Map.FileInserter = L.Handler.extend({
 					for (var i = 0; i < byteBuffer.length; i++) {
 						strBytes += String.fromCharCode(byteBuffer[i]);
 					}
-					window.webkit.messageHandlers.lool.postMessage('insertfile name=' + aFile.name + ' type=graphic' +
+					window.postMobileMessage('insertfile name=' + aFile.name + ' type=graphic' +
 										       ' data=' + window.btoa(strBytes));
 				};
 			})(file);
 			reader.onerror = function(e) {
-				window.webkit.messageHandlers.error.postMessage('Error when reading file: ' + e);
+				window.postMobileError('Error when reading file: ' + e);
 			};
 			reader.onprogress = function(e) {
-				window.webkit.messageHandlers.debug.postMessage('FileReader progress: ' + Math.round(e.loaded*100 / e.total) + '%');
+				window.postMobileDebug('FileReader progress: ' + Math.round(e.loaded*100 / e.total) + '%');
 			};
 			reader.readAsArrayBuffer(file);
 		} else {
diff --git a/loleaflet/util/create-l10n-all-js.pl b/loleaflet/util/create-l10n-all-js.pl
index 293cdb1e9..013f340b3 100644
--- a/loleaflet/util/create-l10n-all-js.pl
+++ b/loleaflet/util/create-l10n-all-js.pl
@@ -30,7 +30,7 @@ sub insert($) {
 
 print "\
 window.LANG = window.getParameterByName('lang');
-window.webkit.messageHandlers.debug.postMessage('LANG is ' + window.LANG);
+window.postMobileDebug('LANG is ' + window.LANG);
 
 var onlylang = window.LANG;
 var hyphen = onlylang.indexOf('-');


More information about the Libreoffice-commits mailing list