Skip to content

Commit a7bea0c

Browse files
ayuishiiChromium LUCI CQ
authored andcommitted
QuotaExceededError: Update QuotaExceededError instances
This change updates services that use QuotaExceededError to use the new DOMException derived QuotaExceededError class when the flag is enabled. I've not been allowed to update external wpts until the webidl spec has been updated[0][1], so this change only updates tests for Chrome only wpts, and otherwise updates expectations for the external ones. External wpts will be updated when the webidl spec is merged and I am allowed to update the external wpts (as seen in chained CL). [0] Spec PR: whatwg/webidl#1465 [1] Discussion: web-platform-tests/wpt#52571 (comment) Bug: 406162261 Change-Id: Ie45d6095a3e4c21e21a35d2519d268580b8bc36b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6538066 Commit-Queue: Ayu Ishii <[email protected]> Reviewed-by: Daseul Lee <[email protected]> Cr-Commit-Position: refs/heads/main@{#1463139}
1 parent ba07707 commit a7bea0c

File tree

22 files changed

+168
-60
lines changed

22 files changed

+168
-60
lines changed

third_party/blink/renderer/core/dom/quota_exceeded_error.cc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,22 @@ void QuotaExceededError::Throw(ExceptionState& exception_state,
5656
}
5757
}
5858

59+
// static
60+
void QuotaExceededError::Reject(ScriptPromiseResolverBase* resolver,
61+
const String& message,
62+
std::optional<double> quota,
63+
std::optional<double> requested) {
64+
if (RuntimeEnabledFeatures::QuotaExceededErrorUpdateEnabled()) {
65+
ScriptState* script_state = resolver->GetScriptState();
66+
ScriptState::Scope scope(script_state);
67+
v8::Isolate* isolate = script_state->GetIsolate();
68+
resolver->Reject(Create(isolate, message, quota, requested));
69+
} else {
70+
resolver->RejectWithDOMException(DOMExceptionCode::kQuotaExceededError,
71+
message);
72+
}
73+
}
74+
5975
QuotaExceededError::QuotaExceededError(const String& message,
6076
const QuotaExceededErrorOptions* options)
6177
: DOMException(DOMExceptionCode::kQuotaExceededError, message),

third_party/blink/renderer/core/dom/quota_exceeded_error.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <optional>
99

10+
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
1011
#include "third_party/blink/renderer/core/core_export.h"
1112
#include "third_party/blink/renderer/core/dom/dom_exception.h"
1213
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
@@ -37,6 +38,12 @@ class CORE_EXPORT QuotaExceededError : public DOMException {
3738
std::optional<double> quota = std::nullopt,
3839
std::optional<double> requested = std::nullopt);
3940

41+
// For throwing a QuotaExceededError from ScriptPromiseResolverBase::Reject.
42+
static void Reject(ScriptPromiseResolverBase* resolver,
43+
const String& message,
44+
std::optional<double> quota = std::nullopt,
45+
std::optional<double> requested = std::nullopt);
46+
4047
QuotaExceededError(const String& message,
4148
const QuotaExceededErrorOptions* options);
4249
QuotaExceededError(const String& message,

third_party/blink/renderer/modules/ai/ai_writing_assistance_create_client.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "base/task/sequenced_task_runner.h"
99
#include "third_party/blink/renderer/bindings/modules/v8/v8_create_monitor_callback.h"
10+
#include "third_party/blink/renderer/core/dom/quota_exceeded_error.h"
1011
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
1112
#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h"
1213
#include "third_party/blink/renderer/modules/ai/ai_context_observer.h"
@@ -137,9 +138,8 @@ class AIWritingAssistanceCreateClient
137138
break;
138139
}
139140
case AIManagerCreateClientError::kInitialInputTooLarge: {
140-
this->GetResolver()->RejectWithDOMException(
141-
DOMExceptionCode::kQuotaExceededError,
142-
kExceptionMessageInputTooLarge);
141+
QuotaExceededError::Reject(this->GetResolver(),
142+
kExceptionMessageInputTooLarge);
143143
break;
144144
}
145145
case AIManagerCreateClientError::kUnsupportedLanguage: {

third_party/blink/renderer/modules/ai/exception_helpers.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,15 @@
88
#include "base/notreached.h"
99
#include "third_party/blink/public/mojom/ai/ai_manager.mojom-blink-forward.h"
1010
#include "third_party/blink/public/mojom/ai/ai_manager.mojom-shared.h"
11+
#include "third_party/blink/renderer/bindings/core/v8/v8_quota_exceeded_error_options.h"
1112
#include "third_party/blink/renderer/core/dom/dom_exception.h"
13+
#include "third_party/blink/renderer/core/dom/quota_exceeded_error.h"
1214
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
1315
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
1416
#include "third_party/blink/renderer/platform/bindings/exception_code.h"
1517
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
1618
#include "third_party/blink/renderer/platform/bindings/script_state.h"
19+
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
1720
#include "third_party/blink/renderer/platform/wtf/casting.h"
1821

1922
namespace blink {
@@ -230,6 +233,11 @@ DOMException* ConvertModelStreamingResponseErrorToDOMException(
230233
kExceptionMessageSessionDestroyed,
231234
DOMException::GetErrorName(DOMExceptionCode::kInvalidStateError));
232235
case ModelStreamingResponseStatus::kErrorInputTooLarge:
236+
if (RuntimeEnabledFeatures::QuotaExceededErrorUpdateEnabled()) {
237+
return QuotaExceededError::Create(
238+
kExceptionMessageInputTooLarge,
239+
MakeGarbageCollected<QuotaExceededErrorOptions>());
240+
}
233241
return DOMException::Create(
234242
kExceptionMessageInputTooLarge,
235243
DOMException::GetErrorName(DOMExceptionCode::kQuotaExceededError));

third_party/blink/renderer/modules/ai/language_model_create_client.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "third_party/blink/renderer/bindings/modules/v8/v8_language_model_prompt_dict.h"
1010
#include "third_party/blink/renderer/bindings/modules/v8/v8_union_language_model_prompt_content.h"
1111
#include "third_party/blink/renderer/bindings/modules/v8/v8_union_languagemodelpromptdict_string.h"
12+
#include "third_party/blink/renderer/core/dom/quota_exceeded_error.h"
1213
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
1314
#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h"
1415
#include "third_party/blink/renderer/modules/ai/ai_interface_proxy.h"
@@ -181,9 +182,7 @@ void LanguageModelCreateClient::OnError(
181182
break;
182183
}
183184
case AIManagerCreateClientError::kInitialInputTooLarge: {
184-
GetResolver()->RejectWithDOMException(
185-
DOMExceptionCode::kQuotaExceededError,
186-
kExceptionMessageInputTooLarge);
185+
QuotaExceededError::Reject(GetResolver(), kExceptionMessageInputTooLarge);
187186
break;
188187
}
189188
case AIManagerCreateClientError::kUnsupportedLanguage: {

third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "third_party/blink/renderer/bindings/modules/v8/v8_background_fetch_options.h"
1616
#include "third_party/blink/renderer/bindings/modules/v8/v8_image_resource.h"
1717
#include "third_party/blink/renderer/core/dom/dom_exception.h"
18+
#include "third_party/blink/renderer/core/dom/quota_exceeded_error.h"
1819
#include "third_party/blink/renderer/core/fetch/body.h"
1920
#include "third_party/blink/renderer/core/fetch/body_stream_buffer.h"
2021
#include "third_party/blink/renderer/core/fetch/request.h"
@@ -295,8 +296,7 @@ void BackgroundFetchManager::DidFetch(
295296
"There is no service worker available to service the fetch."));
296297
return;
297298
case mojom::blink::BackgroundFetchError::QUOTA_EXCEEDED:
298-
resolver->RejectWithDOMException(DOMExceptionCode::kQuotaExceededError,
299-
"Quota exceeded.");
299+
QuotaExceededError::Reject(resolver, "Quota exceeded.");
300300
return;
301301
case mojom::blink::BackgroundFetchError::REGISTRATION_LIMIT_EXCEEDED:
302302
resolver->Reject(V8ThrowException::CreateTypeError(

third_party/blink/renderer/modules/buckets/storage_bucket_manager.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
1212
#include "third_party/blink/renderer/bindings/modules/v8/v8_storage_bucket_options.h"
1313
#include "third_party/blink/renderer/core/dom/dom_exception.h"
14+
#include "third_party/blink/renderer/core/dom/quota_exceeded_error.h"
1415
#include "third_party/blink/renderer/core/execution_context/navigator_base.h"
1516
#include "third_party/blink/renderer/modules/buckets/storage_bucket.h"
1617
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
@@ -235,9 +236,7 @@ void StorageBucketManager::DidOpen(
235236
"Unknown error occured while creating a bucket."));
236237
return;
237238
case mojom::blink::BucketError::kQuotaExceeded:
238-
resolver->Reject(MakeGarbageCollected<DOMException>(
239-
DOMExceptionCode::kQuotaExceededError,
240-
"Too many buckets created."));
239+
QuotaExceededError::Reject(resolver, "Too many buckets created.");
241240
return;
242241
case mojom::blink::BucketError::kInvalidExpiration:
243242
resolver->Reject(V8ThrowException::CreateTypeError(

third_party/blink/renderer/modules/cache_storage/cache_storage_error.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom-blink.h"
88
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
99
#include "third_party/blink/renderer/core/dom/dom_exception.h"
10+
#include "third_party/blink/renderer/core/dom/quota_exceeded_error.h"
1011
#include "third_party/blink/renderer/modules/cache_storage/cache.h"
1112
#include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h"
1213
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
@@ -48,7 +49,6 @@ void RejectCacheStorageWithError(ScriptPromiseResolverBase* resolver,
4849
mojom::blink::CacheStorageError web_error,
4950
const String& message) {
5051
String final_message =
51-
5252
!message.empty() ? message : GetDefaultMessage(web_error);
5353
switch (web_error) {
5454
case mojom::CacheStorageError::kSuccess:
@@ -67,8 +67,7 @@ void RejectCacheStorageWithError(ScriptPromiseResolverBase* resolver,
6767
final_message);
6868
return;
6969
case mojom::CacheStorageError::kErrorQuotaExceeded:
70-
resolver->RejectWithDOMException(DOMExceptionCode::kQuotaExceededError,
71-
final_message);
70+
QuotaExceededError::Reject(resolver, final_message);
7271
return;
7372
case mojom::CacheStorageError::kErrorCacheNameNotFound:
7473
resolver->RejectWithDOMException(DOMExceptionCode::kNotFoundError,

third_party/blink/renderer/modules/crypto/crypto.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "third_party/blink/renderer/modules/crypto/crypto.h"
3030

3131
#include "crypto/random.h"
32+
#include "third_party/blink/renderer/core/dom/quota_exceeded_error.h"
3233
#include "third_party/blink/renderer/core/typed_arrays/dom_array_buffer_view.h"
3334
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
3435
#include "third_party/blink/renderer/platform/wtf/uuid.h"
@@ -65,8 +66,8 @@ NotShared<DOMArrayBufferView> Crypto::getRandomValues(
6566
return NotShared<DOMArrayBufferView>(nullptr);
6667
}
6768
if (array->byteLength() > 65536) {
68-
exception_state.ThrowDOMException(
69-
DOMExceptionCode::kQuotaExceededError,
69+
QuotaExceededError::Throw(
70+
exception_state,
7071
String::Format("The ArrayBufferView's byte length (%zu) exceeds the "
7172
"number of bytes of entropy available via this API "
7273
"(65536).",

third_party/blink/renderer/modules/encryptedmedia/content_decryption_module_result_promise.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h"
1515
#include "third_party/blink/renderer/core/dom/document.h"
1616
#include "third_party/blink/renderer/core/dom/dom_exception.h"
17+
#include "third_party/blink/renderer/core/dom/quota_exceeded_error.h"
1718
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
1819
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
1920
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
@@ -39,8 +40,7 @@ void WebCdmExceptionToPromiseRejection(
3940
message);
4041
return;
4142
case kWebContentDecryptionModuleExceptionQuotaExceededError:
42-
resolver->RejectWithDOMException(DOMExceptionCode::kQuotaExceededError,
43-
message);
43+
QuotaExceededError::Reject(resolver, message);
4444
return;
4545
}
4646

0 commit comments

Comments
 (0)