From 4f5e262344e76eca3791b2602afa4c542b37e1e4 Mon Sep 17 00:00:00 2001 From: Jan Holesovsky Date: Tue, 19 Feb 2019 23:56:59 +0100 Subject: [PATCH] Revert "android: Various fixes to make the sending from the core to JS..." Lets leave this optimization for later, this is incomplete, and does not fix the problem which it was originally supposed to address. This reverts commit bce922e8fd50b5344b083aedfe04ed072661795b. Change-Id: I5d2ee19058261c7612d36014181f509604c8acde --- android/app/src/main/cpp/androidapp.cpp | 7 ++++--- .../org/libreoffice/androidapp/MainActivity.java | 2 +- gtk/mobile.cpp | 6 +++--- ios/Mobile/Document.mm | 6 +++--- loleaflet/html/loleaflet.html.m4 | 12 +++++++++++- loleaflet/src/core/Socket.js | 5 +---- 6 files changed, 23 insertions(+), 15 deletions(-) diff --git a/android/app/src/main/cpp/androidapp.cpp b/android/app/src/main/cpp/androidapp.cpp index 97000797aa..89a703ceb4 100644 --- a/android/app/src/main/cpp/androidapp.cpp +++ b/android/app/src/main/cpp/androidapp.cpp @@ -64,14 +64,14 @@ static void send2JS(jclass mainActivityClz, jobject mainActivityObj, const std:: { // The data needs to be an ArrayBuffer std::stringstream ss; - ss << "{'base64data':'"; + ss << "Base64ToArrayBuffer('"; Poco::Base64Encoder encoder(ss); encoder.rdbuf()->setLineLength(0); // unlimited encoder << std::string(buffer.data(), buffer.size()); encoder.close(); - ss << "'}"; + ss << "')"; js = ss.str(); } @@ -93,8 +93,9 @@ static void send2JS(jclass mainActivityClz, jobject mainActivityObj, const std:: data.push_back(ubufp[i]); } } + data.push_back(0); - js = "{'data':'" + std::string(data.data(), data.size()) + "'}"; + js = std::string(data.data(), data.size()); } std::string subjs = js.substr(0, std::min(std::string::size_type(SHOW_JS_MAXLEN), js.length())); 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 88601d0beb..564df1911d 100644 --- a/android/app/src/main/java/org/libreoffice/androidapp/MainActivity.java +++ b/android/app/src/main/java/org/libreoffice/androidapp/MainActivity.java @@ -181,7 +181,7 @@ public class MainActivity extends AppCompatActivity { mWebView.post(new Runnable() { public void run() { Log.i(TAG,"Forwarding to the WebView: " + message); - mWebView.loadUrl("javascript:window.TheFakeWebSocket.onmessage(" + message + ");"); + mWebView.loadUrl("javascript:window.TheFakeWebSocket.onmessage({'data': '" + message + "'});"); } }); } diff --git a/gtk/mobile.cpp b/gtk/mobile.cpp index b2c346f7c2..929e07d17c 100644 --- a/gtk/mobile.cpp +++ b/gtk/mobile.cpp @@ -58,11 +58,11 @@ static void send2JS(const std::vector& buffer) if (newline != nullptr) { // The data needs to be an ArrayBuffer - js = "window.TheFakeWebSocket.onmessage({'base64data':'"; + js = "window.TheFakeWebSocket.onmessage({'data': Base64ToArrayBuffer('"; gchar *base64 = g_base64_encode((const guchar*)buffer.data(), buffer.size()); js = js + std::string(base64); g_free(base64); - js = js + "'});"; + js = js + "')});"; } else { @@ -84,7 +84,7 @@ static void send2JS(const std::vector& buffer) } data.push_back(0); - js = "window.TheFakeWebSocket.onmessage({'data':'"; + js = "window.TheFakeWebSocket.onmessage({'data': '"; js = js + std::string(buffer.data(), buffer.size()); js = js + "'});"; } diff --git a/ios/Mobile/Document.mm b/ios/Mobile/Document.mm index 804ba65d25..70d130d64c 100644 --- a/ios/Mobile/Document.mm +++ b/ios/Mobile/Document.mm @@ -82,9 +82,9 @@ const char *newline = (const char *)memchr(buffer, '\n', length); if (newline != nullptr) { // The data needs to be an ArrayBuffer - js = @"window.TheFakeWebSocket.onmessage({'base64data':'"; + js = @"window.TheFakeWebSocket.onmessage({'data': Base64ToArrayBuffer('"; js = [js stringByAppendingString: [[NSData dataWithBytes:buffer length:length] base64EncodedStringWithOptions:0]]; - js = [js stringByAppendingString:@"'});"]; + js = [js stringByAppendingString:@"')});"]; NSString *subjs = [js substringToIndex:std::min(100ul, js.length)]; if (subjs.length < js.length) subjs = [subjs stringByAppendingString:@"..."]; @@ -116,7 +116,7 @@ } data.push_back(0); - js = @"window.TheFakeWebSocket.onmessage({'data':'"; + js = @"window.TheFakeWebSocket.onmessage({'data': '"; js = [js stringByAppendingString:[NSString stringWithUTF8String:data.data()]]; js = [js stringByAppendingString:@"'});"]; diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4 index a8233ba82b..f43dd488f2 100644 --- a/loleaflet/html/loleaflet.html.m4 +++ b/loleaflet/html/loleaflet.html.m4 @@ -12,7 +12,7 @@ define([_foreachq],[ifelse([$#],[3],[],[define([$1],[$4])$2[]$0([$1],[$2],shift( ifelse(MOBILEAPP,[true], diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js index 649dcddfd2..19c49ddef2 100644 --- a/loleaflet/src/core/Socket.js +++ b/loleaflet/src/core/Socket.js @@ -241,10 +241,7 @@ L.Socket = L.Class.extend({ _onMessage: function (e) { var imgBytes, index, textMsg; - if (typeof(e.base64data) === 'string') { - textMsg = atob(e.base64data); - } - else if (typeof (e.data) === 'string') { + if (typeof (e.data) === 'string') { textMsg = e.data; } else if (typeof (e.data) === 'object') {