diff options
author | gorogoroumaru <zokutyou2@gmail.com> | 2021-01-11 07:15:32 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-11 09:15:32 +1100 |
commit | b0821fe9ce017ea1fdec191622f27c31af9c4f0f (patch) | |
tree | 7ab8c24d7a01f2dae996c1194d899ada90ce6ff7 | |
parent | 1a6ce29f3d11e5f0d0d022914e3f9fbcfa487294 (diff) |
fix(op_crate/web): fix atob to throw spec aligned DOMException (#8798)
-rw-r--r-- | cli/tests/unit/text_encoding_test.ts | 15 | ||||
-rw-r--r-- | op_crates/web/08_text_encoding.js | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/cli/tests/unit/text_encoding_test.ts b/cli/tests/unit/text_encoding_test.ts index 5ae64cbce..4b7f75232 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 59c1aba8f..cf435adc5 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", ); } |