From 8a3fc8de79d1166e72d2254c5553a9a80253fbd0 Mon Sep 17 00:00:00 2001 From: Ayu Ishii Date: Wed, 14 May 2025 15:52:53 -0700 Subject: [PATCH] QuotaExceededError: Update to a DOMException derived interface This change introduces a new QuotaExceededError class to update the existing QuotaExceededError so services can return `quota` and `requested` properties as needed. Implemented behind RuntimeEnabledFlag `QuotaExceededErrorUpdate`. Changes to update services throwing QuotaExceededError to use the new class will be made in following changes (except for IDB which triggered failures with this change). Proposal: https://github.com/whatwg/webidl/pull/1465 Chromestatus: https://chromestatus.com/feature/6194847180128256 Bug: 406162261 Change-Id: I68e91e15724e64c0995365ee63d4abe627fe06d3 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6516473 Reviewed-by: Domenic Denicola Commit-Queue: Ayu Ishii Reviewed-by: Joey Arhar Reviewed-by: Joe Mason Cr-Commit-Position: refs/heads/main@{#1460403} --- resources/testharness.js | 4 ++-- .../buckets/bucket-quota-indexeddb.tentative.https.any.js | 7 +++++-- .../es-exceptions/DOMException-constructor-behavior.any.js | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/resources/testharness.js b/resources/testharness.js index 6ccede34483b22..32f033a569b166 100644 --- a/resources/testharness.js +++ b/resources/testharness.js @@ -2321,7 +2321,6 @@ NetworkError: 19, AbortError: 20, URLMismatchError: 21, - QuotaExceededError: 22, TimeoutError: 23, InvalidNodeTypeError: 24, DataCloneError: 25, @@ -2336,7 +2335,8 @@ VersionError: 0, OperationError: 0, NotAllowedError: 0, - OptOutError: 0 + OptOutError: 0, + QuotaExceededError: 0 }; var code_name_map = {}; diff --git a/storage/buckets/bucket-quota-indexeddb.tentative.https.any.js b/storage/buckets/bucket-quota-indexeddb.tentative.https.any.js index ee9202777e7ec5..49cd7077b7908e 100644 --- a/storage/buckets/bucket-quota-indexeddb.tentative.https.any.js +++ b/storage/buckets/bucket-quota-indexeddb.tentative.https.any.js @@ -34,8 +34,11 @@ promise_test(async t => { type: 'binary/random' }), 2); - await promise_rejects_dom( - t, 'QuotaExceededError', transactionPromise(txn)); + try { + await transactionPromise(txn); + } catch (e) { + assert_equals(e.name, 'QuotaExceededError'); + } db.close(); }, 'IDB respects bucket quota'); diff --git a/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js b/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js index c4ddabdafd4597..5bb6da77a7d1ca 100644 --- a/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js +++ b/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js @@ -107,7 +107,6 @@ test(function() { {name: "NetworkError", code: 19}, {name: "AbortError", code: 20}, {name: "URLMismatchError", code: 21}, - {name: "QuotaExceededError", code: 22}, {name: "TimeoutError", code: 23}, {name: "InvalidNodeTypeError", code: 24}, {name: "DataCloneError", code: 25}, @@ -128,7 +127,9 @@ test(function() { {name: "ReadOnlyError", code: 0}, {name: "VersionError", code: 0}, {name: "OperationError", code: 0}, - {name: "NotAllowedError", code: 0} + {name: "NotAllowedError", code: 0}, + // See https://github.com/whatwg/webidl/pull/1465. + {name: "QuotaExceededError", code: 0} ].forEach(function(test_case) { test(function() { var ex = new DOMException("msg", test_case.name);