diff --git a/components/script/dom/abortcontroller.rs b/components/script/dom/abortcontroller.rs new file mode 100644 index 00000000000..beaeaece49f --- /dev/null +++ b/components/script/dom/abortcontroller.rs @@ -0,0 +1,59 @@ +/* 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/. */ + +use dom_struct::dom_struct; +use js::jsapi::Value; +use js::rust::{Handle, HandleObject}; + +use crate::dom::abortsignal::AbortSignal; +use crate::dom::bindings::codegen::Bindings::AbortControllerBinding::AbortControllerMethods; +use crate::dom::bindings::reflector::{reflect_dom_object_with_proto, Reflector}; +use crate::dom::bindings::root::{Dom, DomRoot}; +use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::JSContext; + +#[dom_struct] +pub struct AbortController { + reflector_: Reflector, + signal: Dom, +} + +impl AbortController { + pub fn new_inherited(signal: &AbortSignal) -> AbortController { + AbortController { + reflector_: Reflector::new(), + signal: Dom::from_ref(signal), + } + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option, + ) -> DomRoot { + reflect_dom_object_with_proto( + Box::new(AbortController::new_inherited(&AbortSignal::new(global))), + global, + proto, + ) + } + + #[allow(non_snake_case)] + pub fn Constructor( + global: &GlobalScope, + proto: Option, + ) -> DomRoot { + AbortController::new_with_proto(global, proto) + } +} + +impl AbortControllerMethods for AbortController { + /// + fn Signal(&self) -> DomRoot { + DomRoot::from_ref(&self.signal) + } + /// + fn Abort(&self, _cx: JSContext, reason: Handle<'_, Value>) { + self.signal.signal_abort(reason); + } +} diff --git a/components/script/dom/abortsignal.rs b/components/script/dom/abortsignal.rs new file mode 100644 index 00000000000..75a7568559c --- /dev/null +++ b/components/script/dom/abortsignal.rs @@ -0,0 +1,139 @@ +/* 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/. */ + +use std::rc::Rc; + +use dom_struct::dom_struct; +use js::conversions::ToJSValConvertible; +use js::jsapi::{ExceptionStackBehavior, Heap, JS_IsExceptionPending}; +use js::jsval::{JSVal, UndefinedValue}; +use js::rust::wrappers::JS_SetPendingException; +use js::rust::HandleValue; + +use crate::dom::bindings::cell::DomRefCell; +use crate::dom::bindings::codegen::Bindings::AbortSignalBinding::AbortSignalMethods; +use crate::dom::bindings::codegen::Bindings::EventListenerBinding::EventListener; +use crate::dom::bindings::codegen::Bindings::EventTargetBinding::EventListenerOptions; +use crate::dom::bindings::inheritance::Castable; +use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::str::DOMString; +use crate::dom::domexception::DOMErrorName; +use crate::dom::event::{Event, EventBubbles, EventCancelable}; +use crate::dom::eventtarget::EventTarget; +use crate::dom::globalscope::GlobalScope; +use crate::dom::types::DOMException; +use crate::script_runtime::JSContext; + +#[derive(JSTraceable, MallocSizeOf)] +pub enum AbortAlgorithm { + RemoveEventListener( + DomRoot, + DOMString, + #[ignore_malloc_size_of = "Rc"] Rc, + #[ignore_malloc_size_of = "generated"] EventListenerOptions, + ), +} +impl AbortAlgorithm { + fn exec(self) { + match self { + Self::RemoveEventListener(target, ty, listener, options) => { + target.remove_event_listener(ty, Some(listener), options) + }, + } + } +} + +#[dom_struct] +pub struct AbortSignal { + event_target: EventTarget, + #[ignore_malloc_size_of = "Defined in rust-mozjs"] + reason: Heap, + abort_algorithms: DomRefCell>, +} + +impl AbortSignal { + pub fn new_inherited() -> Self { + Self { + event_target: EventTarget::new_inherited(), + reason: Heap::default(), + abort_algorithms: DomRefCell::default(), + } + } + pub fn new(global: &GlobalScope) -> DomRoot { + reflect_dom_object(Box::new(Self::new_inherited()), global) + } + /// + pub fn add_abort_algorithm(&self, alg: AbortAlgorithm) { + if !self.Aborted() { + self.abort_algorithms.borrow_mut().push(alg); + } + } + /// + #[allow(unsafe_code)] + pub fn signal_abort(&self, reason: HandleValue) { + // 1. If signal is aborted, then return. + if self.Aborted() { + return; + } + // 2. Set signal’s abort reason to reason if it is given; otherwise to a new "AbortError" DOMException. + let cx = *GlobalScope::get_cx(); + rooted!(in(cx) let mut new_reason = UndefinedValue()); + let reason = if reason.is_undefined() { + let exception = DOMException::new(&self.global(), DOMErrorName::AbortError); + unsafe { + exception.to_jsval(cx, new_reason.handle_mut()); + }; + new_reason.handle() + } else { + reason + }; + self.reason.set(reason.get()); + + // 3. For each algorithm of signal’s abort algorithms: run algorithm. + // 4. Empty signal’s abort algorithms. + for algorithm in self.abort_algorithms.borrow_mut().drain(..) { + algorithm.exec(); + } + + // 5. Fire an event named abort at signal. + let event = Event::new( + &self.global(), + atom!("abort"), + EventBubbles::DoesNotBubble, + EventCancelable::Cancelable, + ); + event.fire(self.upcast()); + // 6. For each dependentSignal of signal’s dependent signals, + // signal abort on dependentSignal with signal’s abort reason. + // TODO + } +} + +impl AbortSignalMethods for AbortSignal { + // https://dom.spec.whatwg.org/#dom-abortsignal-onabort + event_handler!(Abort, GetOnabort, SetOnabort); + /// + fn Aborted(&self) -> bool { + !self.reason.get().is_undefined() + } + /// + fn Reason(&self, _cx: JSContext) -> JSVal { + self.reason.get() + } + #[allow(unsafe_code)] + /// + fn ThrowIfAborted(&self) { + let reason = self.reason.get(); + if !reason.is_undefined() { + let cx = *GlobalScope::get_cx(); + unsafe { + assert!(!JS_IsExceptionPending(cx)); + rooted!(in(cx) let mut thrown = UndefinedValue()); + reason.to_jsval(cx, thrown.handle_mut()); + JS_SetPendingException(cx, thrown.handle(), ExceptionStackBehavior::Capture); + } + } + } +} diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 891f24f95ac..f9a7b2f5aaa 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -2167,7 +2167,8 @@ class CGImports(CGWrapper): """ Generates the appropriate import/use statements. """ - def __init__(self, child, descriptors, callbacks, dictionaries, enums, typedefs, imports, config): + def __init__(self, child, descriptors, callbacks, dictionaries, enums, typedefs, imports, config, + current_name=None): """ Adds a set of imports. """ @@ -2269,7 +2270,8 @@ class CGImports(CGWrapper): parentName = descriptor.getParentName() while parentName: descriptor = descriptorProvider.getDescriptor(parentName) - extras += [descriptor.path, descriptor.bindingPath] + if current_name != descriptor.ifaceName: + extras += [descriptor.path, descriptor.bindingPath] parentName = descriptor.getParentName() elif t.isType() and t.isRecord(): extras += ['crate::dom::bindings::record::Record'] @@ -6890,7 +6892,7 @@ class CGBindingRoot(CGThing): DomRoot codegen class for binding generation. Instantiate the class, and call declare or define to generate header or cpp code (respectively). """ - def __init__(self, config, prefix, webIDLFile): + def __init__(self, config, prefix, webIDLFile, name): descriptors = config.getDescriptors(webIDLFile=webIDLFile, hasInterfaceObject=True) # We also want descriptors that have an interface prototype object @@ -6958,7 +6960,7 @@ class CGBindingRoot(CGThing): # These are the global imports (outside of the generated module) curr = CGImports(curr, descriptors=callbackDescriptors, callbacks=mainCallbacks, dictionaries=dictionaries, enums=enums, typedefs=typedefs, - imports=['crate::dom::bindings::import::base::*'], config=config) + imports=['crate::dom::bindings::import::base::*'], config=config, current_name=name) # Add the auto-generated comment. curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT + ALLOWED_WARNINGS) diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index e49afb42b67..d96106a26dd 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -232,6 +232,7 @@ class Descriptor(DescriptorProvider): self.register = desc.get('register', True) self.path = desc.get('path', pathDefault) self.inRealmMethods = [name for name in desc.get('inRealms', [])] + self.ifaceName = ifaceName self.bindingPath = f"crate::dom::bindings::codegen::Bindings::{ifaceName}Binding::{ifaceName}_Binding" self.outerObjectHook = desc.get('outerObjectHook', 'None') self.proxy = False diff --git a/components/script/dom/bindings/codegen/run.py b/components/script/dom/bindings/codegen/run.py index a632abc1d9b..28e12989771 100644 --- a/components/script/dom/bindings/codegen/run.py +++ b/components/script/dom/bindings/codegen/run.py @@ -52,8 +52,9 @@ def main(): for webidl in webidls: filename = os.path.join(webidls_dir, webidl) - prefix = "Bindings/%sBinding" % webidl[:-len(".webidl")] - module = CGBindingRoot(config, prefix, filename).define() + name = webidl[:-len(".webidl")] + prefix = "Bindings/%sBinding" % name + module = CGBindingRoot(config, prefix, filename, name).define() if module: with open(os.path.join(out_dir, prefix + ".rs"), "wb") as f: f.write(module.encode("utf-8")) diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index e3a4844dc2a..165167751cc 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -23,6 +23,7 @@ use servo_atoms::Atom; use servo_url::ServoUrl; use super::bindings::trace::HashMapTracedValues; +use crate::dom::abortsignal::AbortAlgorithm; use crate::dom::beforeunloadevent::BeforeUnloadEvent; use crate::dom::bindings::callback::{CallbackContainer, CallbackFunction, ExceptionHandling}; use crate::dom::bindings::cell::DomRefCell; @@ -704,7 +705,7 @@ impl EventTarget { None => return, }; let mut handlers = self.handlers.borrow_mut(); - let entry = match handlers.entry(Atom::from(ty)) { + let entry = match handlers.entry(Atom::from(ty.clone())) { Occupied(entry) => entry.into_mut(), Vacant(entry) => entry.insert(EventListeners(vec![])), }; @@ -716,12 +717,20 @@ impl EventTarget { }; let new_entry = EventListenerEntry { phase, - listener: EventListenerType::Additive(listener), + listener: EventListenerType::Additive(Rc::clone(&listener)), once: options.once, }; if !entry.contains(&new_entry) { entry.push(new_entry); } + if let Some(signal) = options.signal { + signal.add_abort_algorithm(AbortAlgorithm::RemoveEventListener( + DomRoot::from_ref(&self), + ty, + listener, + options.parent, + )); + }; } // https://dom.spec.whatwg.org/#dom-eventtarget-removeeventlistener @@ -801,6 +810,7 @@ impl From for AddEventListenerOptions { AddEventListenerOptionsOrBoolean::Boolean(capture) => Self { parent: EventListenerOptions { capture }, once: false, + signal: None, }, } } diff --git a/components/script/dom/mediaquerylist.rs b/components/script/dom/mediaquerylist.rs index 685e66f0390..86331d72e08 100644 --- a/components/script/dom/mediaquerylist.rs +++ b/components/script/dom/mediaquerylist.rs @@ -100,6 +100,7 @@ impl MediaQueryListMethods for MediaQueryList { AddEventListenerOptions { parent: EventListenerOptions { capture: false }, once: false, + signal: None, }, ); } diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs index 3c738b52d3b..569f7056c3d 100644 --- a/components/script/dom/mod.rs +++ b/components/script/dom/mod.rs @@ -209,6 +209,8 @@ pub mod types { include!(concat!(env!("OUT_DIR"), "/InterfaceTypes.rs")); } +pub mod abortcontroller; +pub mod abortsignal; pub mod abstractrange; pub mod abstractworker; pub mod abstractworkerglobalscope; diff --git a/components/script/dom/webidls/AbortController.webidl b/components/script/dom/webidls/AbortController.webidl new file mode 100644 index 00000000000..f3b9636d650 --- /dev/null +++ b/components/script/dom/webidls/AbortController.webidl @@ -0,0 +1,13 @@ +/* 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://dom.spec.whatwg.org/#interface-abortcontroller +[Exposed=*] +interface AbortController { + constructor(); + + [SameObject] readonly attribute AbortSignal signal; + + undefined abort(optional any reason); +}; diff --git a/components/script/dom/webidls/AbortSignal.webidl b/components/script/dom/webidls/AbortSignal.webidl new file mode 100644 index 00000000000..30a2a29e5e6 --- /dev/null +++ b/components/script/dom/webidls/AbortSignal.webidl @@ -0,0 +1,17 @@ +/* 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://dom.spec.whatwg.org/#interface-AbortSignal +[Exposed=*] +interface AbortSignal : EventTarget { + // [NewObject] static AbortSignal abort(optional any reason); + // [Exposed=(Window,Worker), NewObject] static AbortSignal timeout([EnforceRange] unsigned long long milliseconds); + // [NewObject] static AbortSignal _any(sequence signals); + + readonly attribute boolean aborted; + readonly attribute any reason; + undefined throwIfAborted(); + + attribute EventHandler onabort; +}; diff --git a/components/script/dom/webidls/EventTarget.webidl b/components/script/dom/webidls/EventTarget.webidl index 82e8c967483..3ef976222cd 100644 --- a/components/script/dom/webidls/EventTarget.webidl +++ b/components/script/dom/webidls/EventTarget.webidl @@ -31,4 +31,5 @@ dictionary EventListenerOptions { dictionary AddEventListenerOptions : EventListenerOptions { // boolean passive = false; boolean once = false; + AbortSignal signal; }; diff --git a/tests/wpt/meta-legacy-layout/dom/abort/abort-signal-any.any.js.ini b/tests/wpt/meta-legacy-layout/dom/abort/abort-signal-any.any.js.ini index f1013fd736d..acf2ed0c7f0 100644 --- a/tests/wpt/meta-legacy-layout/dom/abort/abort-signal-any.any.js.ini +++ b/tests/wpt/meta-legacy-layout/dom/abort/abort-signal-any.any.js.ini @@ -1,5 +1,62 @@ [abort-signal-any.any.worker.html] - expected: ERROR + [AbortSignal.any() works with an empty array of signals] + expected: FAIL + + [AbortSignal.any() follows a single signal (using AbortController)] + expected: FAIL + + [AbortSignal.any() follows multiple signals (using AbortController)] + expected: FAIL + + [AbortSignal.any() returns an aborted signal if passed an aborted signal (using AbortController)] + expected: FAIL + + [AbortSignal.any() can be passed the same signal more than once (using AbortController)] + expected: FAIL + + [AbortSignal.any() uses the first instance of a duplicate signal (using AbortController)] + expected: FAIL + + [AbortSignal.any() signals are composable (using AbortController)] + expected: FAIL + + [AbortSignal.any() works with signals returned by AbortSignal.timeout() (using AbortController)] + expected: FAIL + + [AbortSignal.any() works with intermediate signals (using AbortController)] + expected: FAIL + + [Abort events for AbortSignal.any() signals fire in the right order (using AbortController)] + expected: FAIL + [abort-signal-any.any.html] - expected: ERROR + [AbortSignal.any() works with an empty array of signals] + expected: FAIL + + [AbortSignal.any() follows a single signal (using AbortController)] + expected: FAIL + + [AbortSignal.any() follows multiple signals (using AbortController)] + expected: FAIL + + [AbortSignal.any() returns an aborted signal if passed an aborted signal (using AbortController)] + expected: FAIL + + [AbortSignal.any() can be passed the same signal more than once (using AbortController)] + expected: FAIL + + [AbortSignal.any() uses the first instance of a duplicate signal (using AbortController)] + expected: FAIL + + [AbortSignal.any() signals are composable (using AbortController)] + expected: FAIL + + [AbortSignal.any() works with signals returned by AbortSignal.timeout() (using AbortController)] + expected: FAIL + + [AbortSignal.any() works with intermediate signals (using AbortController)] + expected: FAIL + + [Abort events for AbortSignal.any() signals fire in the right order (using AbortController)] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini b/tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini index d232779c742..2b8152719d8 100644 --- a/tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini +++ b/tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini @@ -3,33 +3,9 @@ [AbortController() basics] expected: FAIL - [AbortController abort() should fire event synchronously] - expected: FAIL - - [controller.signal should always return the same object] - expected: FAIL - [controller.abort() should do nothing the second time it is called] expected: FAIL - [event handler should not be called if added after controller.abort()] - expected: FAIL - - [the abort event should have the right properties] - expected: FAIL - - [AbortController abort(reason) should set signal.reason] - expected: FAIL - - [aborting AbortController without reason creates an "AbortError" DOMException] - expected: FAIL - - [AbortController abort(undefined) creates an "AbortError" DOMException] - expected: FAIL - - [AbortController abort(null) should set signal.reason] - expected: FAIL - [static aborting signal should have right properties] expected: FAIL @@ -42,48 +18,18 @@ [throwIfAborted() should throw primitive abort.reason if signal aborted] expected: FAIL - [throwIfAborted() should not throw if signal not aborted] - expected: FAIL - [AbortSignal.reason returns the same DOMException] expected: FAIL - [AbortController.signal.reason returns the same DOMException] - expected: FAIL - [event.any.worker.html] type: testharness [AbortController() basics] expected: FAIL - [AbortController abort() should fire event synchronously] - expected: FAIL - - [controller.signal should always return the same object] - expected: FAIL - [controller.abort() should do nothing the second time it is called] expected: FAIL - [event handler should not be called if added after controller.abort()] - expected: FAIL - - [the abort event should have the right properties] - expected: FAIL - - [AbortController abort(reason) should set signal.reason] - expected: FAIL - - [aborting AbortController without reason creates an "AbortError" DOMException] - expected: FAIL - - [AbortController abort(undefined) creates an "AbortError" DOMException] - expected: FAIL - - [AbortController abort(null) should set signal.reason] - expected: FAIL - [static aborting signal should have right properties] expected: FAIL @@ -96,11 +42,5 @@ [throwIfAborted() should throw primitive abort.reason if signal aborted] expected: FAIL - [throwIfAborted() should not throw if signal not aborted] - expected: FAIL - [AbortSignal.reason returns the same DOMException] expected: FAIL - - [AbortController.signal.reason returns the same DOMException] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/dom/events/AddEventListenerOptions-signal.any.js.ini b/tests/wpt/meta-legacy-layout/dom/events/AddEventListenerOptions-signal.any.js.ini index a21bffac131..a7194da1b36 100644 --- a/tests/wpt/meta-legacy-layout/dom/events/AddEventListenerOptions-signal.any.js.ini +++ b/tests/wpt/meta-legacy-layout/dom/events/AddEventListenerOptions-signal.any.js.ini @@ -1,68 +1,14 @@ [AddEventListenerOptions-signal.any.html] - [Passing an AbortSignal to addEventListener works with the once flag] - expected: FAIL - - [Adding then aborting a listener in another listener does not call it] - expected: FAIL - - [Passing an AbortSignal to addEventListener works with the capture flag] - expected: FAIL - [Aborting from a listener does not call future listeners] expected: FAIL - [Passing an AbortSignal to multiple listeners] - expected: FAIL - - [Passing an AbortSignal to addEventListener does not prevent removeEventListener] - expected: FAIL - - [Aborting from a nested listener should remove it] - expected: FAIL - - [Removing a once listener works with a passed signal] - expected: FAIL - [Passing an AbortSignal to addEventListener options should allow removing a listener] expected: FAIL - [Passing null as the signal should throw] - expected: FAIL - - [Passing null as the signal should throw (listener is also null)] - expected: FAIL - [AddEventListenerOptions-signal.any.worker.html] - [Passing an AbortSignal to addEventListener works with the once flag] - expected: FAIL - - [Adding then aborting a listener in another listener does not call it] - expected: FAIL - - [Passing an AbortSignal to addEventListener works with the capture flag] - expected: FAIL - [Aborting from a listener does not call future listeners] expected: FAIL - [Passing an AbortSignal to multiple listeners] - expected: FAIL - - [Passing an AbortSignal to addEventListener does not prevent removeEventListener] - expected: FAIL - - [Aborting from a nested listener should remove it] - expected: FAIL - - [Removing a once listener works with a passed signal] - expected: FAIL - [Passing an AbortSignal to addEventListener options should allow removing a listener] expected: FAIL - - [Passing null as the signal should throw] - expected: FAIL - - [Passing null as the signal should throw (listener is also null)] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/dom/idlharness.any.js.ini b/tests/wpt/meta-legacy-layout/dom/idlharness.any.js.ini index d8a3e1f25dd..7bac85d76c9 100644 --- a/tests/wpt/meta-legacy-layout/dom/idlharness.any.js.ini +++ b/tests/wpt/meta-legacy-layout/dom/idlharness.any.js.ini @@ -1,172 +1,58 @@ [idlharness.any.worker.html] - [AbortController interface: existence and properties of interface prototype object's @@unscopables property] - expected: FAIL - [Event interface: new Event("foo") must inherit property "composed" with the proper type] expected: FAIL [EventTarget interface: new AbortController().signal must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] expected: FAIL - [AbortSignal must be primary interface of new AbortController().signal] - expected: FAIL - - [AbortController interface object name] - expected: FAIL - [Event interface: attribute composed] expected: FAIL - [AbortSignal interface: existence and properties of interface prototype object's @@unscopables property] - expected: FAIL - - [AbortController interface: existence and properties of interface prototype object] - expected: FAIL - - [Stringification of new AbortController().signal] - expected: FAIL - - [AbortSignal interface: existence and properties of interface object] - expected: FAIL - [CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)] expected: FAIL [EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] expected: FAIL - [EventTarget interface: new AbortController().signal must inherit property "dispatchEvent(Event)" with the proper type] - expected: FAIL - [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "aborted" with the proper type] - expected: FAIL - - [AbortSignal interface object name] - expected: FAIL - - [AbortSignal interface: existence and properties of interface prototype object] - expected: FAIL - [Event interface: new CustomEvent("foo") must inherit property "composed" with the proper type] expected: FAIL - [Stringification of new AbortController()] - expected: FAIL - - [AbortController interface: new AbortController() must inherit property "signal" with the proper type] - expected: FAIL - [AbortController interface: operation abort()] expected: FAIL - [AbortController interface: existence and properties of interface object] - expected: FAIL - - [AbortSignal interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - [AbortController interface: new AbortController() must inherit property "abort()" with the proper type] expected: FAIL - [AbortSignal interface: attribute aborted] - expected: FAIL - - [AbortController interface: attribute signal] - expected: FAIL - - [AbortSignal interface: new AbortController().signal must inherit property "onabort" with the proper type] - expected: FAIL - - [AbortController interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL - [AbortSignal interface: attribute onabort] - expected: FAIL - - [AbortController interface object length] - expected: FAIL - - [AbortSignal interface object length] - expected: FAIL - - [EventTarget interface: calling dispatchEvent(Event) on new AbortController().signal with too few arguments must throw TypeError] - expected: FAIL - - [AbortController must be primary interface of new AbortController()] - expected: FAIL - - [EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener?, optional (EventListenerOptions or boolean))" with the proper type] - expected: FAIL - - [EventTarget interface: calling removeEventListener(DOMString, EventListener?, optional (EventListenerOptions or boolean)) on new AbortController().signal with too few arguments must throw TypeError] - expected: FAIL - [CustomEvent interface: operation initCustomEvent(DOMString, optional boolean, optional boolean, optional any)] expected: FAIL - [EventTarget interface: new AbortController().signal must inherit property "addEventListener(DOMString, EventListener?, optional (AddEventListenerOptions or boolean))" with the proper type] - expected: FAIL - - [EventTarget interface: calling addEventListener(DOMString, EventListener?, optional (AddEventListenerOptions or boolean)) on new AbortController().signal with too few arguments must throw TypeError] - expected: FAIL - [AbortSignal interface: operation abort()] expected: FAIL [AbortSignal interface: new AbortController().signal must inherit property "abort()" with the proper type] expected: FAIL - [AbortController interface: operation abort(optional any)] - expected: FAIL - - [AbortController interface: new AbortController() must inherit property "abort(optional any)" with the proper type] - expected: FAIL - - [AbortController interface: calling abort(optional any) on new AbortController() with too few arguments must throw TypeError] - expected: FAIL - [AbortSignal interface: operation abort(optional any)] expected: FAIL - [AbortSignal interface: attribute reason] - expected: FAIL - - [AbortSignal interface: operation throwIfAborted()] - expected: FAIL - - [AbortSignal interface: new AbortController().signal must inherit property "abort(optional any)" with the proper type] - expected: FAIL - [AbortSignal interface: calling abort(optional any) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "reason" with the proper type] - expected: FAIL - - [AbortSignal interface: new AbortController().signal must inherit property "throwIfAborted()" with the proper type] - expected: FAIL - [AbortSignal interface: operation timeout(unsigned long long)] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "timeout(unsigned long long)" with the proper type] - expected: FAIL - [AbortSignal interface: calling timeout(unsigned long long) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL [AbortSignal interface: operation any(sequence)] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "any(sequence)" with the proper type] - expected: FAIL - [AbortSignal interface: calling any(sequence) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini b/tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini index 44af306d92c..2c2c86f2e9b 100644 --- a/tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini +++ b/tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini @@ -5,15 +5,9 @@ [Text interface: document.createTextNode("abc") must inherit property "assignedSlot" with the proper type] expected: FAIL - [AbortSignal must be primary interface of new AbortController().signal] - expected: FAIL - [Element interface: element must inherit property "assignedSlot" with the proper type] expected: FAIL - [AbortController interface object name] - expected: FAIL - [Event interface: attribute composed] expected: FAIL @@ -23,15 +17,9 @@ [Text interface: attribute assignedSlot] expected: FAIL - [AbortSignal interface: existence and properties of interface prototype object's @@unscopables property] - expected: FAIL - [Document interface: existence and properties of interface prototype object's @@unscopables property] expected: FAIL - [AbortSignal interface: existence and properties of interface object] - expected: FAIL - [Element interface: attribute shadowRoot] expected: FAIL @@ -47,15 +35,9 @@ [EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] expected: FAIL - [EventTarget interface: new AbortController().signal must inherit property "dispatchEvent(Event)" with the proper type] - expected: FAIL - [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL - [AbortSignal interface object name] - expected: FAIL - [Event interface: new CustomEvent("foo") must inherit property "composed" with the proper type] expected: FAIL @@ -65,15 +47,9 @@ [AbortController interface: operation abort()] expected: FAIL - [AbortController interface: existence and properties of interface object] - expected: FAIL - [CharacterData interface: operation replaceWith([object Object\],[object Object\])] expected: FAIL - [AbortController interface: attribute signal] - expected: FAIL - [Element interface: calling attachShadow(ShadowRootInit) on element with too few arguments must throw TypeError] expected: FAIL @@ -83,15 +59,6 @@ [DocumentType interface: operation replaceWith([object Object\],[object Object\])] expected: FAIL - [AbortSignal interface: attribute aborted] - expected: FAIL - - [AbortController must be primary interface of new AbortController()] - expected: FAIL - - [AbortController interface: existence and properties of interface prototype object's @@unscopables property] - expected: FAIL - [CharacterData interface: operation remove()] expected: FAIL @@ -104,15 +71,9 @@ [Element interface: element must inherit property "slot" with the proper type] expected: FAIL - [AbortController interface: new AbortController() must inherit property "signal" with the proper type] - expected: FAIL - [DocumentType interface: operation before([object Object\],[object Object\])] expected: FAIL - [AbortSignal interface object length] - expected: FAIL - [AbortController interface: new AbortController() must inherit property "abort()" with the proper type] expected: FAIL @@ -122,18 +83,9 @@ [DocumentType interface: existence and properties of interface prototype object's @@unscopables property] expected: FAIL - [AbortController interface object length] - expected: FAIL - [Element interface: operation before([object Object\],[object Object\])] expected: FAIL - [EventTarget interface: calling dispatchEvent(Event) on new AbortController().signal with too few arguments must throw TypeError] - expected: FAIL - - [AbortController interface: existence and properties of interface prototype object] - expected: FAIL - [CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)] expected: FAIL @@ -143,33 +95,15 @@ [DocumentFragment interface: existence and properties of interface prototype object's @@unscopables property] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "aborted" with the proper type] - expected: FAIL - [Element interface: operation prepend([object Object\],[object Object\])] expected: FAIL [DocumentType interface: operation after([object Object\],[object Object\])] expected: FAIL - [AbortSignal interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - [Document interface: xmlDoc must inherit property "origin" with the proper type] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "onabort" with the proper type] - expected: FAIL - - [AbortController interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [AbortSignal interface: attribute onabort] - expected: FAIL - - [AbortSignal interface: existence and properties of interface prototype object] - expected: FAIL - [Event interface: new Event("foo") must inherit property "composed" with the proper type] expected: FAIL @@ -182,9 +116,6 @@ [Element interface: operation remove()] expected: FAIL - [Stringification of new AbortController().signal] - expected: FAIL - [DocumentFragment interface: operation prepend([object Object\],[object Object\])] expected: FAIL @@ -194,9 +125,6 @@ [CharacterData interface: operation before([object Object\],[object Object\])] expected: FAIL - [Stringification of new AbortController()] - expected: FAIL - [CharacterData interface: operation after([object Object\],[object Object\])] expected: FAIL @@ -530,15 +458,6 @@ [Document interface: operation prepend((Node or DOMString)...)] expected: FAIL - [EventTarget interface: calling removeEventListener(DOMString, EventListener?, optional (EventListenerOptions or boolean)) on new AbortController().signal with too few arguments must throw TypeError] - expected: FAIL - - [EventTarget interface: new AbortController().signal must inherit property "addEventListener(DOMString, EventListener?, optional (AddEventListenerOptions or boolean))" with the proper type] - expected: FAIL - - [EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener?, optional (EventListenerOptions or boolean))" with the proper type] - expected: FAIL - [XPathEvaluator interface: operation createExpression(DOMString, optional XPathNSResolver?)] expected: FAIL @@ -584,9 +503,6 @@ [DocumentType interface: operation before((Node or DOMString)...)] expected: FAIL - [EventTarget interface: calling addEventListener(DOMString, EventListener?, optional (AddEventListenerOptions or boolean)) on new AbortController().signal with too few arguments must throw TypeError] - expected: FAIL - [Document interface: calling createExpression(DOMString, optional XPathNSResolver?) on xmlDoc with too few arguments must throw TypeError] expected: FAIL @@ -758,45 +674,18 @@ [XSLTProcessor interface: new XSLTProcessor() must inherit property "reset()" with the proper type] expected: FAIL - [AbortController interface: operation abort(optional any)] - expected: FAIL - - [AbortController interface: new AbortController() must inherit property "abort(optional any)" with the proper type] - expected: FAIL - - [AbortController interface: calling abort(optional any) on new AbortController() with too few arguments must throw TypeError] - expected: FAIL - [AbortSignal interface: operation abort(optional any)] expected: FAIL - [AbortSignal interface: attribute reason] - expected: FAIL - - [AbortSignal interface: operation throwIfAborted()] - expected: FAIL - - [AbortSignal interface: new AbortController().signal must inherit property "abort(optional any)" with the proper type] - expected: FAIL - [AbortSignal interface: calling abort(optional any) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "reason" with the proper type] - expected: FAIL - - [AbortSignal interface: new AbortController().signal must inherit property "throwIfAborted()" with the proper type] - expected: FAIL - [idl_test setup] expected: FAIL [AbortSignal interface: operation timeout(unsigned long long)] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "timeout(unsigned long long)" with the proper type] - expected: FAIL - [AbortSignal interface: calling timeout(unsigned long long) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL @@ -833,9 +722,6 @@ [AbortSignal interface: operation any(sequence)] expected: FAIL - [AbortSignal interface: new AbortController().signal must inherit property "any(sequence)" with the proper type] - expected: FAIL - [AbortSignal interface: calling any(sequence) on new AbortController().signal with too few arguments must throw TypeError] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/dom/interface-objects.html.ini b/tests/wpt/meta-legacy-layout/dom/interface-objects.html.ini deleted file mode 100644 index d36a5594af1..00000000000 --- a/tests/wpt/meta-legacy-layout/dom/interface-objects.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[interface-objects.html] - type: testharness - [Should be able to delete AbortController.] - expected: FAIL - - [Should be able to delete AbortSignal.] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/dom/nodes/Document-createElement-namespace.html.ini b/tests/wpt/meta-legacy-layout/dom/nodes/Document-createElement-namespace.html.ini index 8e411d9a60a..da459c39d3e 100644 --- a/tests/wpt/meta-legacy-layout/dom/nodes/Document-createElement-namespace.html.ini +++ b/tests/wpt/meta-legacy-layout/dom/nodes/Document-createElement-namespace.html.ini @@ -1,93 +1,35 @@ [Document-createElement-namespace.html] disabled: extremely frequent intermittent crash type: testharness - [Created element's namespace in empty.xhtml] - expected: FAIL - - [Created element's namespace in empty.xml] - expected: FAIL - [Created element's namespace in empty.svg] expected: FAIL - [Created element's namespace in minimal_html.xhtml] - expected: FAIL - - [Created element's namespace in minimal_html.xml] - expected: FAIL - [Created element's namespace in minimal_html.svg] expected: FAIL - [Created element's namespace in xhtml.xhtml] - expected: FAIL - - [Created element's namespace in xhtml.xml] - expected: FAIL - [Created element's namespace in xhtml.svg] expected: FAIL - [Created element's namespace in svg.xhtml] - expected: FAIL - - [Created element's namespace in svg.xml] - expected: FAIL - [Created element's namespace in svg.svg] expected: FAIL - [Created element's namespace in mathml.xhtml] - expected: FAIL - - [Created element's namespace in mathml.xml] - expected: FAIL - [Created element's namespace in mathml.svg] expected: FAIL - [Created element's namespace in bare_xhtml.xhtml] - expected: FAIL - - [Created element's namespace in bare_xhtml.xml] - expected: FAIL - [Created element's namespace in bare_xhtml.svg] expected: FAIL - [Created element's namespace in bare_svg.xhtml] - expected: FAIL - - [Created element's namespace in bare_svg.xml] - expected: FAIL - [Created element's namespace in bare_svg.svg] expected: FAIL - [Created element's namespace in bare_mathml.xhtml] - expected: FAIL - - [Created element's namespace in bare_mathml.xml] - expected: FAIL - [Created element's namespace in bare_mathml.svg] expected: FAIL - [Created element's namespace in xhtml_ns_removed.xhtml] - expected: FAIL - - [Created element's namespace in xhtml_ns_removed.xml] - expected: FAIL - [Created element's namespace in xhtml_ns_removed.svg] expected: FAIL - [Created element's namespace in xhtml_ns_changed.xhtml] - expected: FAIL - - [Created element's namespace in xhtml_ns_changed.xml] - expected: FAIL - [Created element's namespace in xhtml_ns_changed.svg] expected: FAIL + [Created element's namespace in created SVG document by DOMParser ('image/svg+xml')] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/api/abort/destroyed-context.html.ini b/tests/wpt/meta-legacy-layout/fetch/api/abort/destroyed-context.html.ini index 88d469f589b..f5368501034 100644 --- a/tests/wpt/meta-legacy-layout/fetch/api/abort/destroyed-context.html.ini +++ b/tests/wpt/meta-legacy-layout/fetch/api/abort/destroyed-context.html.ini @@ -1,5 +1,3 @@ [destroyed-context.html] - expected: ERROR [destroyed-context] expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/fetch/api/abort/general.any.js.ini b/tests/wpt/meta-legacy-layout/fetch/api/abort/general.any.js.ini index 1e20bc6ed8e..41b5df5bdf9 100644 --- a/tests/wpt/meta-legacy-layout/fetch/api/abort/general.any.js.ini +++ b/tests/wpt/meta-legacy-layout/fetch/api/abort/general.any.js.ini @@ -1,5 +1,6 @@ [general.any.worker.html] type: testharness + expected: TIMEOUT [Untitled] expected: FAIL @@ -12,36 +13,6 @@ [Aborting rejects with AbortError - no-cors] expected: FAIL - [TypeError from request constructor takes priority - RequestInit's window is not null] - expected: FAIL - - [TypeError from request constructor takes priority - Input URL is not valid] - expected: FAIL - - [TypeError from request constructor takes priority - Input URL has credentials] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's mode is navigate] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's referrer is invalid] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's method is forbidden] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin] - expected: FAIL - - [TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors] - expected: FAIL - - [TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors] - expected: FAIL - [TypeError from request constructor takes priority - Bad referrerPolicy init parameter value] expected: FAIL @@ -75,9 +46,6 @@ [Signal retained after unrelated properties are overridden by fetch] expected: FAIL - [Signal removed by setting to null] - expected: FAIL - [Already aborted signal rejects immediately] expected: FAIL @@ -115,31 +83,31 @@ expected: FAIL [Fetch aborted & connection closed when aborted after calling response.arrayBuffer()] - expected: FAIL + expected: TIMEOUT [Fetch aborted & connection closed when aborted after calling response.blob()] - expected: FAIL + expected: NOTRUN [Fetch aborted & connection closed when aborted after calling response.formData()] - expected: FAIL + expected: NOTRUN [Fetch aborted & connection closed when aborted after calling response.json()] - expected: FAIL + expected: NOTRUN [Fetch aborted & connection closed when aborted after calling response.text()] - expected: FAIL + expected: NOTRUN [Stream errors once aborted. Underlying connection closed.] - expected: FAIL + expected: NOTRUN [Stream errors once aborted, after reading. Underlying connection closed.] - expected: FAIL + expected: NOTRUN [Stream will not error if body is empty. It's closed with an empty queue before it errors.] - expected: FAIL + expected: NOTRUN [Readable stream synchronously cancels with AbortError if aborted before reading] - expected: FAIL + expected: NOTRUN [Signal state is cloned] expected: FAIL @@ -147,9 +115,6 @@ [Clone aborts with original controller] expected: FAIL - [TypeError from request constructor takes priority - RequestInit's method is invalid] - expected: FAIL - [Call text() twice on aborted response] expected: FAIL @@ -162,6 +127,7 @@ [general.any.html] type: testharness + expected: TIMEOUT [Untitled] expected: FAIL @@ -174,36 +140,6 @@ [Aborting rejects with AbortError - no-cors] expected: FAIL - [TypeError from request constructor takes priority - RequestInit's window is not null] - expected: FAIL - - [TypeError from request constructor takes priority - Input URL is not valid] - expected: FAIL - - [TypeError from request constructor takes priority - Input URL has credentials] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's mode is navigate] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's referrer is invalid] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's method is forbidden] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple] - expected: FAIL - - [TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin] - expected: FAIL - - [TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors] - expected: FAIL - - [TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors] - expected: FAIL - [TypeError from request constructor takes priority - Bad referrerPolicy init parameter value] expected: FAIL @@ -219,9 +155,6 @@ [TypeError from request constructor takes priority - Bad redirect init parameter value] expected: FAIL - [TypeError from request constructor takes priority - RequestInit's method is invalid] - expected: FAIL - [Request objects have a signal property] expected: FAIL @@ -240,9 +173,6 @@ [Signal retained after unrelated properties are overridden by fetch] expected: FAIL - [Signal removed by setting to null] - expected: FAIL - [Already aborted signal rejects immediately] expected: FAIL @@ -280,31 +210,31 @@ expected: FAIL [Fetch aborted & connection closed when aborted after calling response.arrayBuffer()] - expected: FAIL + expected: TIMEOUT [Fetch aborted & connection closed when aborted after calling response.blob()] - expected: FAIL + expected: NOTRUN [Fetch aborted & connection closed when aborted after calling response.formData()] - expected: FAIL + expected: NOTRUN [Fetch aborted & connection closed when aborted after calling response.json()] - expected: FAIL + expected: NOTRUN [Fetch aborted & connection closed when aborted after calling response.text()] - expected: FAIL + expected: NOTRUN [Stream errors once aborted. Underlying connection closed.] - expected: FAIL + expected: NOTRUN [Stream errors once aborted, after reading. Underlying connection closed.] - expected: FAIL + expected: NOTRUN [Stream will not error if body is empty. It's closed with an empty queue before it errors.] - expected: FAIL + expected: NOTRUN [Readable stream synchronously cancels with AbortError if aborted before reading] - expected: FAIL + expected: NOTRUN [Signal state is cloned] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/api/abort/keepalive.html.ini b/tests/wpt/meta-legacy-layout/fetch/api/abort/keepalive.html.ini index 31d9009742b..cf0db05c01a 100644 --- a/tests/wpt/meta-legacy-layout/fetch/api/abort/keepalive.html.ini +++ b/tests/wpt/meta-legacy-layout/fetch/api/abort/keepalive.html.ini @@ -1,5 +1,10 @@ [keepalive.html] - expected: ERROR + expected: TIMEOUT [keepalive] expected: FAIL + [aborting a keepalive fetch should work] + expected: TIMEOUT + + [aborting a detached keepalive fetch should not do anything] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/fetch/api/abort/request.any.js.ini b/tests/wpt/meta-legacy-layout/fetch/api/abort/request.any.js.ini index 809d45f7918..bb0e02500d4 100644 --- a/tests/wpt/meta-legacy-layout/fetch/api/abort/request.any.js.ini +++ b/tests/wpt/meta-legacy-layout/fetch/api/abort/request.any.js.ini @@ -2,27 +2,9 @@ expected: ERROR [request.any.worker.html] - [Calling arrayBuffer() on an aborted request] - expected: FAIL - - [Aborting a request after calling arrayBuffer()] - expected: FAIL - - [Calling arrayBuffer() on an aborted consumed empty request] - expected: FAIL - [Calling arrayBuffer() on an aborted consumed nonempty request] expected: FAIL - [Calling blob() on an aborted request] - expected: FAIL - - [Aborting a request after calling blob()] - expected: FAIL - - [Calling blob() on an aborted consumed empty request] - expected: FAIL - [Calling blob() on an aborted consumed nonempty request] expected: FAIL @@ -32,53 +14,17 @@ [Aborting a request after calling formData()] expected: FAIL - [Calling formData() on an aborted consumed nonempty request] - expected: FAIL - - [Calling json() on an aborted request] - expected: FAIL - - [Aborting a request after calling json()] - expected: FAIL - [Calling json() on an aborted consumed nonempty request] expected: FAIL - [Calling text() on an aborted request] - expected: FAIL - - [Aborting a request after calling text()] - expected: FAIL - - [Calling text() on an aborted consumed empty request] - expected: FAIL - [Calling text() on an aborted consumed nonempty request] expected: FAIL [request.any.html] - [Calling arrayBuffer() on an aborted request] - expected: FAIL - - [Aborting a request after calling arrayBuffer()] - expected: FAIL - - [Calling arrayBuffer() on an aborted consumed empty request] - expected: FAIL - [Calling arrayBuffer() on an aborted consumed nonempty request] expected: FAIL - [Calling blob() on an aborted request] - expected: FAIL - - [Aborting a request after calling blob()] - expected: FAIL - - [Calling blob() on an aborted consumed empty request] - expected: FAIL - [Calling blob() on an aborted consumed nonempty request] expected: FAIL @@ -88,27 +34,9 @@ [Aborting a request after calling formData()] expected: FAIL - [Calling formData() on an aborted consumed nonempty request] - expected: FAIL - - [Calling json() on an aborted request] - expected: FAIL - - [Aborting a request after calling json()] - expected: FAIL - [Calling json() on an aborted consumed nonempty request] expected: FAIL - [Calling text() on an aborted request] - expected: FAIL - - [Aborting a request after calling text()] - expected: FAIL - - [Calling text() on an aborted consumed empty request] - expected: FAIL - [Calling text() on an aborted consumed nonempty request] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/fetch-later/send-on-deactivate.tentative.https.window.js.ini b/tests/wpt/meta-legacy-layout/fetch/fetch-later/send-on-deactivate.tentative.https.window.js.ini index ab5ccba6560..b846dbfb782 100644 --- a/tests/wpt/meta-legacy-layout/fetch/fetch-later/send-on-deactivate.tentative.https.window.js.ini +++ b/tests/wpt/meta-legacy-layout/fetch/fetch-later/send-on-deactivate.tentative.https.window.js.ini @@ -1,9 +1,10 @@ [send-on-deactivate.tentative.https.window.html] + expected: TIMEOUT [fetchLater() sends on page entering BFCache if BackgroundSync is off.] expected: FAIL [Call fetchLater() when BFCached with activateAfter=0 sends immediately.] - expected: FAIL + expected: TIMEOUT [fetchLater() sends on navigating away a page w/o BFCache.] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/history-traversal/document-state.https.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/history-traversal/document-state.https.html.ini index 2f7885994ac..dbbf7b19da6 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/history-traversal/document-state.https.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/history-traversal/document-state.https.html.ini @@ -1,6 +1,7 @@ [document-state.https.html] + expected: TIMEOUT [A navigation's initiator origin and referrer are stored in the document state and used in the document repopulation case] - expected: FAIL + expected: TIMEOUT [A navigation's initiator origin and referrer are stored in the document state and used on location.reload()] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini index 149bcb4ff8c..b8fd22e2b81 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini @@ -10,3 +10,6 @@ [load & pageshow events do not fire on contentWindow of