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') {