Skip to content

Commit b20df4f

Browse files
Fix test
1 parent 49825c2 commit b20df4f

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ export class WebViewMessageStream extends BasePostMessageStream {
6565
data,
6666
});
6767

68+
// To prevent XSS, we encode the message before injecting it.
69+
// This adds significant performance overhead for larger messages.
6870
const bytes = new Uint8Array(stringToBytes(json));
6971

7072
this.#webView.injectJavaScript(`window.postMessage([${bytes.toString()}])`);

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { sleep } from '@metamask/snaps-utils/test-utils';
2-
import { bytesToBase64, stringToBytes } from '@metamask/utils';
2+
import { stringToBytes } from '@metamask/utils';
33

44
import { WebViewExecutorStream } from './WebViewExecutorStream';
55

@@ -8,9 +8,8 @@ describe('WebViewExecutorStream', () => {
88
const addEventListener = jest.fn();
99
const postMessage = jest.fn().mockImplementation((message) => {
1010
const bytes = stringToBytes(message);
11-
const base64 = bytesToBase64(bytes);
1211
addEventListener.mock.calls.forEach(([_type, listener]) => {
13-
setTimeout(() => listener({ data: base64 }));
12+
setTimeout(() => listener({ data: Array.from(bytes) }));
1413
});
1514
});
1615
const mockWindow = {

0 commit comments

Comments
 (0)