Skip to content

Commit d63ed6c

Browse files
perf: Stop using additional encoding for messages in mobile
1 parent 809ca87 commit d63ed6c

File tree

2 files changed

+3
-10
lines changed

2 files changed

+3
-10
lines changed

packages/snaps-controllers/src/services/webview/WebViewMessageStream.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { PostMessageEvent } from '@metamask/post-message-stream';
22
import { BasePostMessageStream } from '@metamask/post-message-stream';
33
import { isValidStreamMessage } from '@metamask/post-message-stream/dist/utils';
44
import { logError } from '@metamask/snaps-utils';
5-
import { assert, bytesToBase64, stringToBytes } from '@metamask/utils';
5+
import { assert } from '@metamask/utils';
66

77
export type WebViewInterface = {
88
injectJavaScript(js: string): void;
@@ -65,12 +65,7 @@ export class WebViewMessageStream extends BasePostMessageStream {
6565
data,
6666
});
6767

68-
// To prevent XSS, we base64 encode the message before injecting it.
69-
// This adds significant performance overhead.
70-
// TODO: Should we use mobile native base64 here?
71-
const bytes = stringToBytes(json);
72-
const base64 = bytesToBase64(bytes);
73-
this.#webView.injectJavaScript(`window.postMessage('${base64}')`);
68+
this.#webView.injectJavaScript(`window.postMessage('${json}')`);
7469
}
7570

7671
private _onMessage(event: PostMessageEvent): void {

packages/snaps-execution-environments/src/webview/WebViewExecutorStream.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type { PostMessageEvent } from '@metamask/post-message-stream';
22
import { BasePostMessageStream } from '@metamask/post-message-stream';
33
import { isValidStreamMessage } from '@metamask/post-message-stream/dist/utils';
4-
import { base64ToBytes, bytesToString } from '@metamask/utils';
54

65
type WebViewExecutorStreamArgs = {
76
name: string;
@@ -66,8 +65,7 @@ export class WebViewExecutorStream extends BasePostMessageStream {
6665
return;
6766
}
6867

69-
const bytes = base64ToBytes(event.data);
70-
const message = JSON.parse(bytesToString(bytes));
68+
const message = JSON.parse(event.data);
7169

7270
// Notice that we don't check targetWindow or targetOrigin here.
7371
// This doesn't seem possible to do in RN.

0 commit comments

Comments
 (0)