mirror of
https://github.com/servo/servo.git
synced 2025-09-30 00:29:14 +01:00
script: Implement QuotaExceededError WebIDL interface (#38507)
Implements the new WebIDL interface for QuotaExceededError and uses it in appropriate places. Testing: WPT tests. Now passing many more in `tests/wpt/tests/WebCryptoAPI/getRandomValues.any.js` and `tests/wpt/tests/webstorage/storage_session_setitem_quotaexceedederr.window.js`. Fixes: #38489 --------- Signed-off-by: Rahul Menon <menonrahul02@gmail.com>
This commit is contained in:
parent
fad247c802
commit
b5932e5abf
14 changed files with 173 additions and 67 deletions
|
@ -6,6 +6,7 @@ use js::error::throw_type_error;
|
|||
use js::jsapi::JS_IsExceptionPending;
|
||||
|
||||
use crate::codegen::PrototypeList::proto_id_to_name;
|
||||
use crate::num::Finite;
|
||||
use crate::script_runtime::JSContext as SafeJSContext;
|
||||
|
||||
/// DOM exceptions that can be thrown by a native DOM method.
|
||||
|
@ -55,7 +56,10 @@ pub enum Error {
|
|||
/// NoModificationAllowedError DOMException
|
||||
NoModificationAllowed,
|
||||
/// QuotaExceededError DOMException
|
||||
QuotaExceeded,
|
||||
QuotaExceeded {
|
||||
quota: Option<Finite<f64>>,
|
||||
requested: Option<Finite<f64>>,
|
||||
},
|
||||
/// TypeMismatchError DOMException
|
||||
TypeMismatch,
|
||||
/// InvalidModificationError DOMException
|
||||
|
|
|
@ -11,7 +11,7 @@ use malloc_size_of::{MallocSizeOf, MallocSizeOfOps};
|
|||
use num_traits::Float;
|
||||
|
||||
/// Encapsulates the IDL restricted float type.
|
||||
#[derive(Clone, Copy, Eq, JSTraceable, PartialEq)]
|
||||
#[derive(Clone, Copy, Debug, Eq, JSTraceable, PartialEq)]
|
||||
pub struct Finite<T: Float>(T);
|
||||
|
||||
impl<T: Float> Finite<T> {
|
||||
|
|
21
components/script_bindings/webidls/QuotaExceededError.webidl
Normal file
21
components/script_bindings/webidls/QuotaExceededError.webidl
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// https://heycam.github.io/webidl/#quotaexceedederror
|
||||
|
||||
[
|
||||
Exposed=(Window,Worker,Worklet,DissimilarOriginWindow),
|
||||
// Serializable
|
||||
]
|
||||
interface QuotaExceededError : DOMException {
|
||||
[Throws] constructor(optional DOMString message = "", optional QuotaExceededErrorOptions options = {});
|
||||
|
||||
readonly attribute double? quota;
|
||||
readonly attribute double? requested;
|
||||
};
|
||||
|
||||
dictionary QuotaExceededErrorOptions {
|
||||
double quota;
|
||||
double requested;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue