Skip to content

Commit b3af864

Browse files
Encode as bytes
1 parent 93d2c03 commit b3af864

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

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

Lines changed: 4 additions & 2 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 } from '@metamask/utils';
5+
import { assert, stringToBytes } from '@metamask/utils';
66

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

68-
this.#webView.injectJavaScript(`window.postMessage('${json}')`);
68+
const bytes = new Uint8Array(stringToBytes(json));
69+
70+
this.#webView.injectJavaScript(`window.postMessage([${bytes.toString()}])`);
6971
}
7072

7173
private _onMessage(event: PostMessageEvent): void {

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
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 { bytesToString } from '@metamask/utils';
45

56
type WebViewExecutorStreamArgs = {
67
name: string;
@@ -61,11 +62,12 @@ export class WebViewExecutorStream extends BasePostMessageStream {
6162
}
6263

6364
private _onMessage(event: PostMessageEvent): void {
64-
if (typeof event.data !== 'string') {
65+
if (!Array.isArray(event.data)) {
6566
return;
6667
}
6768

68-
const message = JSON.parse(event.data);
69+
const json = bytesToString(new Uint8Array(event.data as number[]));
70+
const message = JSON.parse(json);
6971

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

0 commit comments

Comments
 (0)