diff --git a/src/webview/MessageListWeb.js b/src/webview/MessageListWeb.js index dc760b11e1c..330a6526b86 100644 --- a/src/webview/MessageListWeb.js +++ b/src/webview/MessageListWeb.js @@ -10,6 +10,7 @@ import getHtml from './html/html'; import renderMessagesAsHtml from './html/renderMessagesAsHtml'; import { getInputMessages } from './webViewHandleUpdates'; import * as webViewEventHandlers from './webViewEventHandlers'; +import { base64Utf8Encode } from '../utils/encoding'; export default class MessageListWeb extends Component { context: Context; @@ -29,7 +30,7 @@ export default class MessageListWeb extends Component { sendMessages = (messages: WebviewInputMessage[]): void => { if (this.webview && messages.length > 0) { - this.webview.postMessage(JSON.stringify(messages), '*'); + this.webview.postMessage(base64Utf8Encode(JSON.stringify(messages)), '*'); } }; diff --git a/src/webview/js/generatedEs3.js b/src/webview/js/generatedEs3.js index 85021763fc8..752916bca8b 100644 --- a/src/webview/js/generatedEs3.js +++ b/src/webview/js/generatedEs3.js @@ -228,7 +228,8 @@ var messageHandlers = { document.addEventListener('message', function (e) { scrollEventsDisabled = true; - var messages = JSON.parse(e.data); + var decodedData = decodeURIComponent(escape(window.atob(e.data))); + var messages = JSON.parse(decodedData); messages.forEach(function (msg) { messageHandlers[msg.type](msg); }); diff --git a/src/webview/js/js.js b/src/webview/js/js.js index d1ed3f06370..18e33479fcd 100644 --- a/src/webview/js/js.js +++ b/src/webview/js/js.js @@ -252,7 +252,8 @@ const messageHandlers = { document.addEventListener('message', e => { scrollEventsDisabled = true; // $FlowFixMe - const messages: WebviewInputMessage[] = JSON.parse(e.data); + const decodedData = decodeURIComponent(escape(window.atob(e.data))); + const messages: WebviewInputMessage[] = JSON.parse(decodedData); messages.forEach((msg: WebviewInputMessage) => { // $FlowFixMe messageHandlers[msg.type](msg);