From b0821fe9ce017ea1fdec191622f27c31af9c4f0f Mon Sep 17 00:00:00 2001 From: gorogoroumaru Date: Mon, 11 Jan 2021 07:15:32 +0900 Subject: [PATCH] fix(op_crate/web): fix atob to throw spec aligned DOMException (#8798) --- cli/tests/unit/text_encoding_test.ts | 15 +++++++++++++++ op_crates/web/08_text_encoding.js | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cli/tests/unit/text_encoding_test.ts b/cli/tests/unit/text_encoding_test.ts index 5ae64cbce8..4b7f75232b 100644 --- a/cli/tests/unit/text_encoding_test.ts +++ b/cli/tests/unit/text_encoding_test.ts @@ -50,6 +50,21 @@ unitTest(function atobThrows2(): void { assert(threw); }); +unitTest(function atobThrows3(): void { + let threw = false; + try { + atob("foobar!!"); + } catch (e) { + if ( + e instanceof DOMException && + e.toString().startsWith("InvalidCharacterError:") + ) { + threw = true; + } + } + assert(threw); +}); + unitTest(function btoaFailed(): void { const text = "你好"; assertThrows(() => { diff --git a/op_crates/web/08_text_encoding.js b/op_crates/web/08_text_encoding.js index 59c1aba8f7..cf435adc5b 100644 --- a/op_crates/web/08_text_encoding.js +++ b/op_crates/web/08_text_encoding.js @@ -105,7 +105,7 @@ if (rem === 1 || /[^+/0-9A-Za-z]/.test(s)) { throw new DOMException( "The string to be decoded is not correctly encoded", - "DataDecodeError", + "InvalidCharacterError", ); }