aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/constellation/constellation.rs77
-rw-r--r--components/constellation/pipeline.rs24
-rw-r--r--components/script/dom/htmliframeelement.rs148
-rw-r--r--components/script/script_thread.rs43
-rw-r--r--components/script_traits/lib.rs21
-rw-r--r--components/script_traits/script_msg.rs6
-rw-r--r--tests/wpt/metadata-css/cssom-1_dev/xhtml1print/cssimportrule.xht.ini6
-rw-r--r--tests/wpt/metadata/WebIDL/ecmascript-binding/es-exceptions/exceptions.html.ini16
-rw-r--r--tests/wpt/metadata/dom/nodes/Comment-constructor.html.ini5
-rw-r--r--tests/wpt/metadata/dom/nodes/Text-constructor.html.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/window-top-001.html.ini8
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.html.ini639
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-move-to-other-document.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_01.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini46
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini218
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini4
-rw-r--r--tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini1
-rw-r--r--tests/wpt/metadata/webstorage/event_basic.html.ini1
-rw-r--r--tests/wpt/metadata/webstorage/event_body_attribute.html.ini9
-rw-r--r--tests/wpt/metadata/webstorage/event_case_sensitive.html.ini1
-rw-r--r--tests/wpt/metadata/webstorage/event_setattribute.html.ini9
-rw-r--r--tests/wpt/mozilla/meta/mozilla/htmllabel-activation.html.ini1
-rw-r--r--tests/wpt/mozilla/meta/mozilla/mozbrowser/mozbrowser_loadevents.html.ini5
-rw-r--r--tests/wpt/mozilla/tests/mozilla/mozbrowser/iframe_goback.html6
-rw-r--r--tests/wpt/mozilla/tests/mozilla/mozbrowser/mozbrowserlocationchange_event.html11
-rw-r--r--tests/wpt/mozilla/tests/mozilla/mozbrowser/redirect.html12
34 files changed, 454 insertions, 904 deletions
diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs
index 8cb82a5cdd5..19e70c90bfc 100644
--- a/components/constellation/constellation.rs
+++ b/components/constellation/constellation.rs
@@ -42,7 +42,7 @@ use rand::{Rng, SeedableRng, StdRng, random};
use script_traits::{AnimationState, AnimationTickType, CompositorEvent};
use script_traits::{ConstellationControlMsg, ConstellationMsg as FromCompositorMsg};
use script_traits::{DocumentState, LayoutControlMsg, LoadData};
-use script_traits::{IFrameLoadInfo, IFrameSandboxState, TimerEventRequest};
+use script_traits::{IFrameLoadInfo, IFrameLoadInfoWithData, IFrameSandboxState, TimerEventRequest};
use script_traits::{LayoutMsg as FromLayoutMsg, ScriptMsg as FromScriptMsg, ScriptThreadFactory};
use script_traits::{LogEntry, ServiceWorkerMsg, webdriver_msg};
use script_traits::{MozBrowserErrorType, MozBrowserEvent, WebDriverCommandMsg, WindowSizeData};
@@ -914,11 +914,17 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
}
FromScriptMsg::ScriptLoadedURLInIFrame(load_info) => {
debug!("constellation got iframe URL load message {:?} {:?} {:?}",
- load_info.parent_pipeline_id,
+ load_info.info.parent_pipeline_id,
load_info.old_pipeline_id,
- load_info.new_pipeline_id);
+ load_info.info.new_pipeline_id);
self.handle_script_loaded_url_in_iframe_msg(load_info);
}
+ FromScriptMsg::ScriptLoadedAboutBlankInIFrame(load_info, lc) => {
+ debug!("constellation got loaded `about:blank` in iframe message {:?} {:?}",
+ load_info.parent_pipeline_id,
+ load_info.new_pipeline_id);
+ self.handle_script_loaded_about_blank_in_iframe_msg(load_info, lc);
+ }
FromScriptMsg::ChangeRunningAnimationsState(pipeline_id, animation_state) => {
self.handle_change_running_animations_state(pipeline_id, animation_state)
}
@@ -1363,14 +1369,14 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
// will result in a new pipeline being spawned and a frame tree being added to
// parent_pipeline_id's frame tree's children. This message is never the result of a
// page navigation.
- fn handle_script_loaded_url_in_iframe_msg(&mut self, load_info: IFrameLoadInfo) {
+ fn handle_script_loaded_url_in_iframe_msg(&mut self, load_info: IFrameLoadInfoWithData) {
let (load_data, window_size, is_private) = {
let old_pipeline = load_info.old_pipeline_id
.and_then(|old_pipeline_id| self.pipelines.get(&old_pipeline_id));
- let source_pipeline = match self.pipelines.get(&load_info.parent_pipeline_id) {
+ let source_pipeline = match self.pipelines.get(&load_info.info.parent_pipeline_id) {
Some(source_pipeline) => source_pipeline,
- None => return warn!("Script loaded url in closed iframe {}.", load_info.parent_pipeline_id),
+ None => return warn!("Script loaded url in closed iframe {}.", load_info.info.parent_pipeline_id),
};
// If no url is specified, reload.
@@ -1384,7 +1390,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
LoadData::new(url, None, None)
});
- let is_private = load_info.is_private || source_pipeline.is_private;
+ let is_private = load_info.info.is_private || source_pipeline.is_private;
let window_size = old_pipeline.and_then(|old_pipeline| old_pipeline.size);
@@ -1396,20 +1402,65 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
};
// Create the new pipeline, attached to the parent and push to pending frames
- self.new_pipeline(load_info.new_pipeline_id,
- load_info.frame_id,
- Some((load_info.parent_pipeline_id, load_info.frame_type)),
+ self.new_pipeline(load_info.info.new_pipeline_id,
+ load_info.info.frame_id,
+ Some((load_info.info.parent_pipeline_id, load_info.info.frame_type)),
window_size,
load_data,
load_info.sandbox,
is_private);
self.pending_frames.push(FrameChange {
- frame_id: load_info.frame_id,
+ frame_id: load_info.info.frame_id,
old_pipeline_id: load_info.old_pipeline_id,
- new_pipeline_id: load_info.new_pipeline_id,
+ new_pipeline_id: load_info.info.new_pipeline_id,
+ document_ready: false,
+ replace: load_info.info.replace,
+ });
+ }
+
+ fn handle_script_loaded_about_blank_in_iframe_msg(&mut self,
+ load_info: IFrameLoadInfo,
+ layout_sender: IpcSender<LayoutControlMsg>) {
+ let IFrameLoadInfo {
+ parent_pipeline_id,
+ new_pipeline_id,
+ frame_type,
+ replace,
+ frame_id,
+ is_private,
+ } = load_info;
+
+ let pipeline = {
+ let parent_pipeline = match self.pipelines.get(&parent_pipeline_id) {
+ Some(parent_pipeline) => parent_pipeline,
+ None => return warn!("Script loaded url in closed iframe {}.", parent_pipeline_id),
+ };
+
+ let script_sender = parent_pipeline.script_chan.clone();
+
+ let url = ServoUrl::parse("about:blank").expect("infallible");
+ Pipeline::new(new_pipeline_id,
+ frame_id,
+ Some((parent_pipeline_id, frame_type)),
+ script_sender,
+ layout_sender,
+ self.compositor_proxy.clone_compositor_proxy(),
+ is_private || parent_pipeline.is_private,
+ url,
+ None,
+ parent_pipeline.visible)
+ };
+
+ assert!(!self.pipelines.contains_key(&new_pipeline_id));
+ self.pipelines.insert(new_pipeline_id, pipeline);
+
+ self.pending_frames.push(FrameChange {
+ frame_id: frame_id,
+ old_pipeline_id: None,
+ new_pipeline_id: new_pipeline_id,
document_ready: false,
- replace: load_info.replace,
+ replace: replace,
});
}
diff --git a/components/constellation/pipeline.rs b/components/constellation/pipeline.rs
index 53c2a58e091..890476e5010 100644
--- a/components/constellation/pipeline.rs
+++ b/components/constellation/pipeline.rs
@@ -256,17 +256,19 @@ impl Pipeline {
Ok((pipeline, child_process))
}
- fn new(id: PipelineId,
- frame_id: FrameId,
- parent_info: Option<(PipelineId, FrameType)>,
- script_chan: Rc<ScriptChan>,
- layout_chan: IpcSender<LayoutControlMsg>,
- compositor_proxy: Box<CompositorProxy + 'static + Send>,
- is_private: bool,
- url: ServoUrl,
- size: Option<TypedSize2D<f32, PagePx>>,
- visible: bool)
- -> Pipeline {
+ /// Creates a new `Pipeline`, after the script and layout threads have been
+ /// spawned.
+ pub fn new(id: PipelineId,
+ frame_id: FrameId,
+ parent_info: Option<(PipelineId, FrameType)>,
+ script_chan: Rc<ScriptChan>,
+ layout_chan: IpcSender<LayoutControlMsg>,
+ compositor_proxy: Box<CompositorProxy + 'static + Send>,
+ is_private: bool,
+ url: ServoUrl,
+ size: Option<TypedSize2D<f32, PagePx>>,
+ visible: bool)
+ -> Pipeline {
let pipeline = Pipeline {
id: id,
frame_id: frame_id,
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index a31baa9f045..c322b96a555 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -20,6 +20,7 @@ use dom::bindings::conversions::ToJSValConvertible;
use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root};
+use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::Reflectable;
use dom::bindings::str::DOMString;
use dom::browsingcontext::BrowsingContext;
@@ -42,14 +43,16 @@ use js::jsval::{NullValue, UndefinedValue};
use msg::constellation_msg::{FrameType, FrameId, PipelineId, TraversalDirection};
use net_traits::response::HttpsState;
use script_layout_interface::message::ReflowQueryType;
-use script_thread::ScriptThread;
-use script_traits::{IFrameLoadInfo, LoadData, MozBrowserEvent, ScriptMsg as ConstellationMsg};
+use script_thread::{ScriptThread, Runnable};
+use script_traits::{IFrameLoadInfo, IFrameLoadInfoWithData, LoadData};
+use script_traits::{MozBrowserEvent, NewLayoutInfo, ScriptMsg as ConstellationMsg};
use script_traits::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed};
use servo_atoms::Atom;
use servo_url::ServoUrl;
use std::cell::Cell;
use style::attr::{AttrValue, LengthOrPercentageOrAuto};
use style::context::ReflowGoal;
+use task_source::TaskSource;
use util::prefs::PREFS;
use util::servo_version;
@@ -66,6 +69,12 @@ bitflags! {
}
}
+#[derive(PartialEq)]
+enum ProcessingMode {
+ FirstTime,
+ NotFirstTime,
+}
+
#[dom_struct]
pub struct HTMLIFrameElement {
htmlelement: HTMLElement,
@@ -131,20 +140,46 @@ impl HTMLIFrameElement {
let global_scope = window.upcast::<GlobalScope>();
let load_info = IFrameLoadInfo {
- load_data: load_data,
parent_pipeline_id: global_scope.pipeline_id(),
frame_id: self.frame_id,
- old_pipeline_id: old_pipeline_id,
new_pipeline_id: new_pipeline_id,
- sandbox: sandboxed,
is_private: private_iframe,
frame_type: frame_type,
replace: replace,
};
- global_scope
- .constellation_chan()
- .send(ConstellationMsg::ScriptLoadedURLInIFrame(load_info))
- .unwrap();
+
+ if load_data.as_ref().map_or(false, |d| d.url.as_str() == "about:blank") {
+ let (pipeline_sender, pipeline_receiver) = ipc::channel().unwrap();
+
+ global_scope
+ .constellation_chan()
+ .send(ConstellationMsg::ScriptLoadedAboutBlankInIFrame(load_info, pipeline_sender))
+ .unwrap();
+
+ let new_layout_info = NewLayoutInfo {
+ parent_info: Some((global_scope.pipeline_id(), frame_type)),
+ new_pipeline_id: new_pipeline_id,
+ frame_id: self.frame_id,
+ load_data: load_data.unwrap(),
+ pipeline_port: pipeline_receiver,
+ content_process_shutdown_chan: None,
+ window_size: None,
+ layout_threads: PREFS.get("layout.threads").as_u64().expect("count") as usize,
+ };
+
+ ScriptThread::process_attach_layout(new_layout_info);
+ } else {
+ let load_info = IFrameLoadInfoWithData {
+ info: load_info,
+ load_data: load_data,
+ old_pipeline_id: old_pipeline_id,
+ sandbox: sandboxed,
+ };
+ global_scope
+ .constellation_chan()
+ .send(ConstellationMsg::ScriptLoadedURLInIFrame(load_info))
+ .unwrap();
+ }
if PREFS.is_mozbrowser_enabled() {
// https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadstart
@@ -152,9 +187,23 @@ impl HTMLIFrameElement {
}
}
- pub fn process_the_iframe_attributes(&self) {
+ /// https://html.spec.whatwg.org/multipage/#process-the-iframe-attributes
+ fn process_the_iframe_attributes(&self, mode: ProcessingMode) {
+ // TODO: srcdoc
+
+ // https://github.com/whatwg/html/issues/490
+ if mode == ProcessingMode::FirstTime && !self.upcast::<Element>().has_attribute(&local_name!("src")) {
+ let window = window_from_node(self);
+ let event_loop = window.dom_manipulation_task_source();
+ let _ = event_loop.queue(box IframeLoadEventSteps::new(self),
+ window.upcast());
+ return;
+ }
+
let url = self.get_url();
+ // TODO: check ancestor browsing contexts for same URL
+
let document = document_from_node(self);
self.navigate_or_reload_child_browsing_context(
Some(LoadData::new(url, document.get_referrer_policy(), Some(document.url()))), false);
@@ -171,6 +220,16 @@ impl HTMLIFrameElement {
}
}
+ fn create_nested_browsing_context(&self) {
+ // Synchronously create a new context and navigate it to about:blank.
+ let url = ServoUrl::parse("about:blank").unwrap();
+ let document = document_from_node(self);
+ let load_data = LoadData::new(url,
+ document.get_referrer_policy(),
+ Some(document.url().clone()));
+ self.navigate_or_reload_child_browsing_context(Some(load_data), false);
+ }
+
pub fn update_pipeline_id(&self, new_pipeline_id: PipelineId) {
self.pipeline_id.set(Some(new_pipeline_id));
@@ -272,7 +331,11 @@ impl HTMLIFrameElement {
self.pipeline_id.get()
.and_then(|pipeline_id| ScriptThread::find_document(pipeline_id))
.and_then(|document| {
- if self.global().get_url().origin() == document.global().get_url().origin() {
+ // FIXME(#10964): this should use the Document's origin and the
+ // origin of the incumbent settings object.
+ let contained_url = document.global().get_url();
+ if self.global().get_url().origin() == contained_url.origin() ||
+ contained_url.as_str() == "about:blank" {
Some(Root::from_ref(document.window()))
} else {
None
@@ -458,18 +521,7 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement {
// https://html.spec.whatwg.org/multipage/#dom-iframe-contentdocument
fn GetContentDocument(&self) -> Option<Root<Document>> {
- self.get_content_window().and_then(|window| {
- // FIXME(#10964): this should use the Document's origin and the
- // origin of the incumbent settings object.
- let self_url = self.get_url();
- let win_url = window_from_node(self).get_url();
-
- if UrlHelper::SameOrigin(&self_url, &win_url) {
- Some(window.Document())
- } else {
- None
- }
- })
+ self.get_content_window().map(|window| window.Document())
}
// Experimental mozbrowser implementation is based on the webidl
@@ -601,19 +653,17 @@ impl VirtualMethods for HTMLIFrameElement {
}));
},
&local_name!("src") => {
- if let AttributeMutation::Set(_) = mutation {
- // https://html.spec.whatwg.org/multipage/#the-iframe-element
- // "Similarly, whenever an iframe element with a non-null nested browsing context
- // but with no srcdoc attribute specified has its src attribute set, changed, or removed,
- // the user agent must process the iframe attributes,"
- // but we can't check that directly, since the child browsing context
- // may be in a different script thread. Instread, we check to see if the parent
- // is in a document tree and has a browsing context, which is what causes
- // the child browsing context to be created.
- if self.upcast::<Node>().is_in_doc_with_browsing_context() {
- debug!("iframe {} src set while in browsing context.", self.frame_id);
- self.process_the_iframe_attributes();
- }
+ // https://html.spec.whatwg.org/multipage/#the-iframe-element
+ // "Similarly, whenever an iframe element with a non-null nested browsing context
+ // but with no srcdoc attribute specified has its src attribute set, changed, or removed,
+ // the user agent must process the iframe attributes,"
+ // but we can't check that directly, since the child browsing context
+ // may be in a different script thread. Instread, we check to see if the parent
+ // is in a document tree and has a browsing context, which is what causes
+ // the child browsing context to be created.
+ if self.upcast::<Node>().is_in_doc_with_browsing_context() {
+ debug!("iframe {} src set while in browsing context.", self.frame_id);
+ self.process_the_iframe_attributes(ProcessingMode::NotFirstTime);
}
},
_ => {},
@@ -642,7 +692,8 @@ impl VirtualMethods for HTMLIFrameElement {
// iframe attributes for the "first time"."
if self.upcast::<Node>().is_in_doc_with_browsing_context() {
debug!("iframe {} bound to browsing context.", self.frame_id);
- self.process_the_iframe_attributes();
+ self.create_nested_browsing_context();
+ self.process_the_iframe_attributes(ProcessingMode::FirstTime);
}
}
@@ -667,7 +718,7 @@ impl VirtualMethods for HTMLIFrameElement {
// HTMLIFrameElement::contentDocument.
let self_url = self.get_url();
let win_url = window_from_node(self).get_url();
- UrlHelper::SameOrigin(&self_url, &win_url)
+ UrlHelper::SameOrigin(&self_url, &win_url) || self_url.as_str() == "about:blank"
};
let (sender, receiver) = if same_origin {
(None, None)
@@ -690,3 +741,24 @@ impl VirtualMethods for HTMLIFrameElement {
}
}
}
+
+struct IframeLoadEventSteps {
+ frame_element: Trusted<HTMLIFrameElement>,
+ pipeline_id: PipelineId,
+}
+
+impl IframeLoadEventSteps {
+ fn new(frame_element: &HTMLIFrameElement) -> IframeLoadEventSteps {
+ IframeLoadEventSteps {
+ frame_element: Trusted::new(frame_element),
+ pipeline_id: frame_element.pipeline_id().unwrap(),
+ }
+ }
+}
+
+impl Runnable for IframeLoadEventSteps {
+ fn handler(self: Box<IframeLoadEventSteps>) {
+ let this = self.frame_element.root();
+ this.iframe_load_event_steps(self.pipeline_id);
+ }
+}
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index e7a1f95ec9d..140d57ec754 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -71,7 +71,8 @@ use js::rust::Runtime;
use layout_wrapper::ServoLayoutNode;
use mem::heap_size_of_self_and_children;
use msg::constellation_msg::{FrameId, FrameType, PipelineId, PipelineNamespace};
-use net_traits::{CoreResourceMsg, IpcSend, Metadata, ReferrerPolicy, ResourceThreads};
+use net_traits::{CoreResourceMsg, FetchMetadata, FetchResponseListener};
+use net_traits::{IpcSend, Metadata, ReferrerPolicy, ResourceThreads};
use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheResult, ImageCacheThread};
use net_traits::request::{CredentialsMode, Destination, RequestInit};
use net_traits::storage_thread::StorageType;
@@ -605,6 +606,17 @@ impl ScriptThread {
});
}
+ pub fn process_attach_layout(new_layout_info: NewLayoutInfo) {
+ SCRIPT_THREAD_ROOT.with(|root| {
+ if let Some(script_thread) = root.get() {
+ let script_thread = unsafe { &*script_thread };
+ script_thread.profile_event(ScriptThreadEventCategory::AttachLayout, || {
+ script_thread.handle_new_layout(new_layout_info);
+ })
+ }
+ });
+ }
+
pub fn find_document(id: PipelineId) -> Option<Root<Document>> {
SCRIPT_THREAD_ROOT.with(|root| root.get().and_then(|script_thread| {
let script_thread = unsafe { &*script_thread };
@@ -1219,7 +1231,11 @@ impl ScriptThread {
let new_load = InProgressLoad::new(new_pipeline_id, frame_id, parent_info,
layout_chan, window_size,
load_data.url.clone());
- self.start_page_load(new_load, load_data);
+ if load_data.url.as_str() == "about:blank" {
+ self.start_page_load_about_blank(new_load);
+ } else {
+ self.start_page_load(new_load, load_data);
+ }
}
fn handle_loads_complete(&self, pipeline: PipelineId) {
@@ -1645,7 +1661,8 @@ impl ScriptThread {
/// Notify the containing document of a child frame that has completed loading.
fn handle_frame_load_event(&self, parent_id: PipelineId, frame_id: FrameId, child_id: PipelineId) {
- match self.documents.borrow().find_iframe(parent_id, frame_id) {
+ let iframe = self.documents.borrow().find_iframe(parent_id, frame_id);
+ match iframe {
Some(iframe) => iframe.iframe_load_event_steps(child_id),
None => warn!("Message sent to closed pipeline {}.", parent_id),
}
@@ -2018,7 +2035,8 @@ impl ScriptThread {
replace: bool) {
match frame_id {
Some(frame_id) => {
- if let Some(iframe) = self.documents.borrow().find_iframe(parent_pipeline_id, frame_id) {
+ let iframe = self.documents.borrow().find_iframe(parent_pipeline_id, frame_id);
+ if let Some(iframe) = iframe {
iframe.navigate_or_reload_child_browsing_context(Some(load_data), replace);
}
}
@@ -2096,6 +2114,23 @@ impl ScriptThread {
self.incomplete_loads.borrow_mut().push(incomplete);
}
+ /// Synchronously fetch `about:blank`. Stores the `InProgressLoad`
+ /// argument until a notification is received that the fetch is complete.
+ fn start_page_load_about_blank(&self, incomplete: InProgressLoad) {
+ let id = incomplete.pipeline_id;
+
+ self.incomplete_loads.borrow_mut().push(incomplete);
+
+ let url = ServoUrl::parse("about:blank").unwrap();
+ let mut context = ParserContext::new(id, url.clone());
+
+ let mut meta = Metadata::default(url);
+ meta.set_content_type(Some(&mime!(Text / Html)));
+ context.process_response(Ok(FetchMetadata::Unfiltered(meta)));
+ context.process_response_chunk(vec![]);
+ context.process_response_eof(Ok(()));
+ }
+
fn handle_parsing_complete(&self, id: PipelineId) {
let document = match self.documents.borrow().find_document(id) {
Some(document) => document,
diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs
index 8c51aa22841..0494f44c70d 100644
--- a/components/script_traits/lib.rs
+++ b/components/script_traits/lib.rs
@@ -492,21 +492,15 @@ pub enum IFrameSandboxState {
IFrameUnsandboxed
}
-/// Specifies the information required to load a URL in an iframe.
+/// Specifies the information required to load an iframe.
#[derive(Deserialize, Serialize)]
pub struct IFrameLoadInfo {
- /// Load data containing the url to load
- pub load_data: Option<LoadData>,
/// Pipeline ID of the parent of this iframe
pub parent_pipeline_id: PipelineId,
/// The ID for this iframe.
pub frame_id: FrameId,
- /// The old pipeline ID for this iframe, if a page was previously loaded.
- pub old_pipeline_id: Option<PipelineId>,
/// The new pipeline ID that the iframe has generated.
pub new_pipeline_id: PipelineId,
- /// Sandbox type of this iframe
- pub sandbox: IFrameSandboxState,
/// Whether this iframe should be considered private
pub is_private: bool,
/// Whether this iframe is a mozbrowser iframe
@@ -516,6 +510,19 @@ pub struct IFrameLoadInfo {
pub replace: bool,
}
+/// Specifies the information required to load a URL in an iframe.
+#[derive(Deserialize, Serialize)]
+pub struct IFrameLoadInfoWithData {
+ /// The information required to load an iframe.
+ pub info: IFrameLoadInfo,
+ /// Load data containing the url to load
+ pub load_data: Option<LoadData>,
+ /// The old pipeline ID for this iframe, if a page was previously loaded.
+ pub old_pipeline_id: Option<PipelineId>,
+ /// Sandbox type of this iframe
+ pub sandbox: IFrameSandboxState,
+}
+
// https://developer.mozilla.org/en-US/docs/Web/API/Using_the_Browser_API#Events
/// The events fired in a Browser API context (`<iframe mozbrowser>`)
#[derive(Deserialize, Serialize)]
diff --git a/components/script_traits/script_msg.rs b/components/script_traits/script_msg.rs
index d4a9fc7442b..7ef20af9fbc 100644
--- a/components/script_traits/script_msg.rs
+++ b/components/script_traits/script_msg.rs
@@ -6,6 +6,8 @@ use AnimationState;
use CompositorEvent;
use DocumentState;
use IFrameLoadInfo;
+use IFrameLoadInfoWithData;
+use LayoutControlMsg;
use LoadData;
use MozBrowserEvent;
use WorkerGlobalScopeInit;
@@ -105,7 +107,9 @@ pub enum ScriptMsg {
/// Notifies constellation that an iframe's visibility has been changed.
VisibilityChangeComplete(PipelineId, bool),
/// A load has been requested in an IFrame.
- ScriptLoadedURLInIFrame(IFrameLoadInfo),
+ ScriptLoadedURLInIFrame(IFrameLoadInfoWithData),
+ /// A load of `about:blank` has been completed in an IFrame.
+ ScriptLoadedAboutBlankInIFrame(IFrameLoadInfo, IpcSender<LayoutControlMsg>),
/// Requests that the constellation set the contents of the clipboard
SetClipboardContents(String),
/// Mark a new document as active
diff --git a/tests/wpt/metadata-css/cssom-1_dev/xhtml1print/cssimportrule.xht.ini b/tests/wpt/metadata-css/cssom-1_dev/xhtml1print/cssimportrule.xht.ini
index ae9991fd13c..a3d9d7beaa4 100644
--- a/tests/wpt/metadata-css/cssom-1_dev/xhtml1print/cssimportrule.xht.ini
+++ b/tests/wpt/metadata-css/cssom-1_dev/xhtml1print/cssimportrule.xht.ini
@@ -1,3 +1,9 @@
[cssimportrule.xht]
type: testharness
expected: TIMEOUT
+ [Basic sanity-checking]
+ expected: FAIL
+
+ [Only whitelisted properties are accessible cross-origin]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/WebIDL/ecmascript-binding/es-exceptions/exceptions.html.ini b/tests/wpt/metadata/WebIDL/ecmascript-binding/es-exceptions/exceptions.html.ini
index 4e691734e3e..5dc6276d371 100644
--- a/tests/wpt/metadata/WebIDL/ecmascript-binding/es-exceptions/exceptions.html.ini
+++ b/tests/wpt/metadata/WebIDL/ecmascript-binding/es-exceptions/exceptions.html.ini
@@ -12,27 +12,15 @@
[Object.getOwnPropertyDescriptor(exception, "code")]
expected: FAIL
- [In iframe: Object.getPrototypeOf(exception) === DOMException.prototype]
- expected: FAIL
-
[In iframe: exception.hasOwnProperty("name")]
expected: FAIL
- [In iframe: exception.name === "HierarchyRequestError"]
- expected: FAIL
-
[In iframe: Object.getOwnPropertyDescriptor(exception, "name")]
expected: FAIL
- [In iframe: Object.getOwnPropertyDescriptor(exception, "message")]
- expected: FAIL
-
- [In iframe: Object.prototype.toString.call(exception) === "[object DOMException\]"]
- expected: FAIL
-
- [In iframe: exception.code === DOMException.HIERARCHY_REQUEST_ERR]
+ [In iframe: Object.getOwnPropertyDescriptor(exception, "code")]
expected: FAIL
- [In iframe: Object.getOwnPropertyDescriptor(exception, "code")]
+ [In iframe: typeof exception.message === "string"]
expected: FAIL
diff --git a/tests/wpt/metadata/dom/nodes/Comment-constructor.html.ini b/tests/wpt/metadata/dom/nodes/Comment-constructor.html.ini
deleted file mode 100644
index b822f365486..00000000000
--- a/tests/wpt/metadata/dom/nodes/Comment-constructor.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[Comment-constructor.html]
- type: testharness
- [new Comment() should get the correct ownerDocument across globals]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/dom/nodes/Text-constructor.html.ini b/tests/wpt/metadata/dom/nodes/Text-constructor.html.ini
deleted file mode 100644
index 253d0a219c0..00000000000
--- a/tests/wpt/metadata/dom/nodes/Text-constructor.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[Text-constructor.html]
- type: testharness
- [new Text() should get the correct ownerDocument across globals]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini
index 3335be3418f..29adbc194e9 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini
@@ -1,3 +1,5 @@
[navigate-child-function-parent.html]
type: testharness
- expected: ERROR
+ [Set location from a parent]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini
index 84796af9188..b8ec0f9662e 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini
@@ -1,3 +1,5 @@
[navigate-child-src-about-blank.html]
type: testharness
- expected: ERROR
+ [Set the src attribute to about:blank and check referrer]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini
index 5ebe00f1029..07f5904fa46 100644
--- a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini
+++ b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini
@@ -1,3 +1,3 @@
[cross-origin-objects.html]
type: testharness
- expected: ERROR
+ disabled: https://github.com/servo/servo/issues/10964
diff --git a/tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini b/tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini
index 13ca91e5b37..e6cbaba3e17 100644
--- a/tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini
+++ b/tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini
@@ -1,14 +1,8 @@
[browsing-context-first-created.xhtml]
type: testharness
- [Check the history.length of the first created browsing context]
- expected: FAIL
-
[Check the document's meta data]
expected: FAIL
[Check the document's status]
expected: FAIL
- [Check the document's content]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/window-top-001.html.ini b/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/window-top-001.html.ini
deleted file mode 100644
index a56c0a1b608..00000000000
--- a/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/window-top-001.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[window-top-001.html]
- type: testharness
- [One nested iframe]
- expected: FAIL
-
- [Two nested iframes]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini
index 5b80ab2bad1..e7aa48a31cd 100644
--- a/tests/wpt/metadata/html/dom/interfaces.html.ini
+++ b/tests/wpt/metadata/html/dom/interfaces.html.ini
@@ -69,27 +69,9 @@
[Document interface: attribute onsort]
expected: FAIL
- [Stringification of iframe.contentDocument]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "implementation" with the proper type (0)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "URL" with the proper type (1)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "documentURI" with the proper type (2)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "origin" with the proper type (3)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "compatMode" with the proper type (4)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "characterSet" with the proper type (5)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "inputEncoding" with the proper type (6)]
expected: FAIL
@@ -105,99 +87,54 @@
[Document interface: iframe.contentDocument must inherit property "getElementsByTagName" with the proper type (10)]
expected: FAIL
- [Document interface: calling getElementsByTagName(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "getElementsByTagNameNS" with the proper type (11)]
expected: FAIL
- [Document interface: calling getElementsByTagNameNS(DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "getElementsByClassName" with the proper type (12)]
expected: FAIL
- [Document interface: calling getElementsByClassName(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createElement" with the proper type (13)]
expected: FAIL
- [Document interface: calling createElement(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createElementNS" with the proper type (14)]
expected: FAIL
- [Document interface: calling createElementNS(DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createDocumentFragment" with the proper type (15)]
expected: FAIL
[Document interface: iframe.contentDocument must inherit property "createTextNode" with the proper type (16)]
expected: FAIL
- [Document interface: calling createTextNode(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createComment" with the proper type (17)]
expected: FAIL
- [Document interface: calling createComment(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createProcessingInstruction" with the proper type (18)]
expected: FAIL
- [Document interface: calling createProcessingInstruction(DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "importNode" with the proper type (19)]
expected: FAIL
- [Document interface: calling importNode(Node,boolean) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "adoptNode" with the proper type (20)]
expected: FAIL
- [Document interface: calling adoptNode(Node) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createAttribute" with the proper type (21)]
expected: FAIL
- [Document interface: calling createAttribute(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createAttributeNS" with the proper type (22)]
expected: FAIL
- [Document interface: calling createAttributeNS(DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createEvent" with the proper type (23)]
expected: FAIL
- [Document interface: calling createEvent(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createRange" with the proper type (24)]
expected: FAIL
[Document interface: iframe.contentDocument must inherit property "createNodeIterator" with the proper type (25)]
expected: FAIL
- [Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createTreeWalker" with the proper type (26)]
expected: FAIL
- [Document interface: calling createTreeWalker(Node,unsigned long,NodeFilter) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "styleSheets" with the proper type (27)]
expected: FAIL
@@ -270,9 +207,6 @@
[Document interface: iframe.contentDocument must inherit property "getElementsByName" with the proper type (50)]
expected: FAIL
- [Document interface: calling getElementsByName(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "getItems" with the proper type (51)]
expected: FAIL
@@ -282,9 +216,6 @@
[Document interface: iframe.contentDocument must inherit property "cssElementMap" with the proper type (52)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "currentScript" with the proper type (53)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "open" with the proper type (54)]
expected: FAIL
@@ -300,27 +231,6 @@
[Document interface: iframe.contentDocument must inherit property "close" with the proper type (56)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "write" with the proper type (57)]
- expected: FAIL
-
- [Document interface: calling write(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "writeln" with the proper type (58)]
- expected: FAIL
-
- [Document interface: calling writeln(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type (59)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "activeElement" with the proper type (60)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "hasFocus" with the proper type (61)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "designMode" with the proper type (62)]
expected: FAIL
@@ -402,9 +312,6 @@
[Document interface: iframe.contentDocument must inherit property "getElementById" with the proper type (82)]
expected: FAIL
- [Document interface: calling getElementById(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "children" with the proper type (83)]
expected: FAIL
@@ -420,15 +327,9 @@
[Document interface: iframe.contentDocument must inherit property "prepend" with the proper type (87)]
expected: FAIL
- [Document interface: calling prepend([object Object\],[object Object\]) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "append" with the proper type (88)]
expected: FAIL
- [Document interface: calling append([object Object\],[object Object\]) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "query" with the proper type (89)]
expected: FAIL
@@ -444,15 +345,9 @@
[Document interface: iframe.contentDocument must inherit property "querySelector" with the proper type (91)]
expected: FAIL
- [Document interface: calling querySelector(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "querySelectorAll" with the proper type (92)]
expected: FAIL
- [Document interface: calling querySelectorAll(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "onabort" with the proper type (93)]
expected: FAIL
@@ -642,189 +537,6 @@
[Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type (155)]
expected: FAIL
- [Node interface: iframe.contentDocument must inherit property "ELEMENT_NODE" with the proper type (0)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "ATTRIBUTE_NODE" with the proper type (1)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "TEXT_NODE" with the proper type (2)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "CDATA_SECTION_NODE" with the proper type (3)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "ENTITY_NODE" with the proper type (5)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "COMMENT_NODE" with the proper type (7)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_NODE" with the proper type (8)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "NOTATION_NODE" with the proper type (11)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "nodeType" with the proper type (12)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "nodeName" with the proper type (13)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "baseURI" with the proper type (14)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "ownerDocument" with the proper type (15)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "parentNode" with the proper type (16)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "parentElement" with the proper type (17)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "hasChildNodes" with the proper type (18)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "childNodes" with the proper type (19)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "firstChild" with the proper type (20)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "lastChild" with the proper type (21)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "previousSibling" with the proper type (22)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "nextSibling" with the proper type (23)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "nodeValue" with the proper type (24)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "textContent" with the proper type (25)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "normalize" with the proper type (26)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "cloneNode" with the proper type (27)]
- expected: FAIL
-
- [Node interface: calling cloneNode(boolean) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "isEqualNode" with the proper type (28)]
- expected: FAIL
-
- [Node interface: calling isEqualNode(Node) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (29)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (30)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (31)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (32)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (33)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (34)]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "compareDocumentPosition" with the proper type (35)]
- expected: FAIL
-
- [Node interface: calling compareDocumentPosition(Node) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "contains" with the proper type (36)]
- expected: FAIL
-
- [Node interface: calling contains(Node) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "lookupPrefix" with the proper type (37)]
- expected: FAIL
-
- [Node interface: calling lookupPrefix(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "lookupNamespaceURI" with the proper type (38)]
- expected: FAIL
-
- [Node interface: calling lookupNamespaceURI(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "isDefaultNamespace" with the proper type (39)]
- expected: FAIL
-
- [Node interface: calling isDefaultNamespace(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "insertBefore" with the proper type (40)]
- expected: FAIL
-
- [Node interface: calling insertBefore(Node,Node) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "appendChild" with the proper type (41)]
- expected: FAIL
-
- [Node interface: calling appendChild(Node) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "replaceChild" with the proper type (42)]
- expected: FAIL
-
- [Node interface: calling replaceChild(Node,Node) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Node interface: iframe.contentDocument must inherit property "removeChild" with the proper type (43)]
- expected: FAIL
-
- [Node interface: calling removeChild(Node) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: iframe.contentDocument must inherit property "addEventListener" with the proper type (0)]
- expected: FAIL
-
- [EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: iframe.contentDocument must inherit property "removeEventListener" with the proper type (1)]
- expected: FAIL
-
- [EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: iframe.contentDocument must inherit property "dispatchEvent" with the proper type (2)]
- expected: FAIL
-
- [EventTarget interface: calling dispatchEvent(Event) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[XMLDocument interface: operation load(DOMString)]
expected: FAIL
@@ -5652,42 +5364,6 @@
[HTMLOptionElement interface: new Option() must inherit property "index" with the proper type (7)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "charset" with the proper type (6)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "inputEncoding" with the proper type (7)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "contentType" with the proper type (8)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "doctype" with the proper type (9)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "documentElement" with the proper type (10)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByTagName" with the proper type (11)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByTagNameNS" with the proper type (12)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByClassName" with the proper type (13)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createElement" with the proper type (14)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createElementNS" with the proper type (15)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createDocumentFragment" with the proper type (16)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createTextNode" with the proper type (17)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createComment" with the proper type (18)]
expected: FAIL
@@ -8697,39 +8373,6 @@
[Document interface: calling createCDATASection(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "createComment" with the proper type (19)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createProcessingInstruction" with the proper type (20)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "importNode" with the proper type (21)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "adoptNode" with the proper type (22)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createAttribute" with the proper type (23)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createAttributeNS" with the proper type (24)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createEvent" with the proper type (25)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createRange" with the proper type (26)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createNodeIterator" with the proper type (27)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createTreeWalker" with the proper type (28)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "styleSheets" with the proper type (29)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "selectedStyleSheetSet" with the proper type (30)]
expected: FAIL
@@ -8745,63 +8388,12 @@
[Document interface: iframe.contentDocument must inherit property "enableStyleSheetsForSet" with the proper type (34)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "domain" with the proper type (36)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "referrer" with the proper type (37)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "cookie" with the proper type (38)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "lastModified" with the proper type (39)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "readyState" with the proper type (40)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "title" with the proper type (42)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "dir" with the proper type (43)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "body" with the proper type (44)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "head" with the proper type (45)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "images" with the proper type (46)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "embeds" with the proper type (47)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "plugins" with the proper type (48)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "links" with the proper type (49)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "forms" with the proper type (50)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "scripts" with the proper type (51)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByName" with the proper type (52)]
- expected: FAIL
-
[Document interface: calling open(USVString,DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "onreadystatechange" with the proper type (69)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type (70)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (71)]
expected: FAIL
@@ -8811,243 +8403,12 @@
[Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type (73)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type (74)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "anchors" with the proper type (75)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "applets" with the proper type (76)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "clear" with the proper type (77)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "captureEvents" with the proper type (78)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "releaseEvents" with the proper type (79)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "all" with the proper type (80)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "getElementById" with the proper type (81)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "children" with the proper type (82)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "firstElementChild" with the proper type (83)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "lastElementChild" with the proper type (84)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "childElementCount" with the proper type (85)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "prepend" with the proper type (86)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "append" with the proper type (87)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "querySelector" with the proper type (88)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "querySelectorAll" with the proper type (89)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onabort" with the proper type (90)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onblur" with the proper type (91)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncancel" with the proper type (92)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncanplay" with the proper type (93)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncanplaythrough" with the proper type (94)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onchange" with the proper type (95)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onclick" with the proper type (96)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onclose" with the proper type (97)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncontextmenu" with the proper type (98)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncuechange" with the proper type (99)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondblclick" with the proper type (100)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondrag" with the proper type (101)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragend" with the proper type (102)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragenter" with the proper type (103)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragexit" with the proper type (104)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragleave" with the proper type (105)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragover" with the proper type (106)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragstart" with the proper type (107)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondrop" with the proper type (108)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondurationchange" with the proper type (109)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onemptied" with the proper type (110)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onended" with the proper type (111)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onerror" with the proper type (112)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onfocus" with the proper type (113)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oninput" with the proper type (114)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oninvalid" with the proper type (115)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeydown" with the proper type (116)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeypress" with the proper type (117)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeyup" with the proper type (118)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onload" with the proper type (119)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadeddata" with the proper type (120)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadedmetadata" with the proper type (121)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadstart" with the proper type (122)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousedown" with the proper type (123)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseenter" with the proper type (124)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseleave" with the proper type (125)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousemove" with the proper type (126)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseout" with the proper type (127)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseover" with the proper type (128)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseup" with the proper type (129)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "onmousewheel" with the proper type (130)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "onpause" with the proper type (131)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onplay" with the proper type (132)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onplaying" with the proper type (133)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onprogress" with the proper type (134)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onratechange" with the proper type (135)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onreset" with the proper type (136)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onresize" with the proper type (137)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onscroll" with the proper type (138)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onseeked" with the proper type (139)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onseeking" with the proper type (140)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onselect" with the proper type (141)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onshow" with the proper type (142)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onstalled" with the proper type (143)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsubmit" with the proper type (144)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsuspend" with the proper type (145)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ontimeupdate" with the proper type (146)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ontoggle" with the proper type (147)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onvolumechange" with the proper type (148)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type (149)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncopy" with the proper type (150)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncut" with the proper type (151)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onpaste" with the proper type (152)]
- expected: FAIL
-
[Document interface: new Document() must inherit property "createCDATASection" with the proper type (18)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html.ini
deleted file mode 100644
index d0b2b6edd3d..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[resource-selection-invoke-insert-into-iframe.html]
- type: testharness
- [NOT invoking resource selection by inserting into other document with src set]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-move-to-other-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-move-to-other-document.html.ini
deleted file mode 100644
index 020a3ceebaa..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-move-to-other-document.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[pause-move-to-other-document.html]
- type: testharness
- [paused state when moving to other document]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document.html.ini
index 4e30edb2bbd..ad2cf9dee6b 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document.html.ini
@@ -1,5 +1,3 @@
[iframe-append-to-child-document.html]
type: testharness
- [Append iframe element to its own child document]
- expected: FAIL
-
+ disabled: https://github.com/servo/servo/issues/14411
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini
index d3ae34278df..92316d4d4a7 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini
@@ -3,6 +3,3 @@
[load event of blob URL]
expected: FAIL
- [load event of initial about:blank]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_01.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_01.html.ini
deleted file mode 100644
index b7bccb267f9..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_01.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[move_iframe_in_dom_01.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
index fbc2f10b2d3..12b76472074 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
@@ -1,13 +1,6 @@
[viewport-change.html]
type: testharness
- disabled: unsupported feature and prone to intermittent incorrect results
- bug: 9560
- [img (no src), onload, narrow]
- expected: FAIL
-
- [img (empty src), onload, narrow]
- expected: FAIL
-
+ expected: TIMEOUT
[img (src only) broken image, onload, narrow]
expected: FAIL
@@ -24,35 +17,29 @@
expected: FAIL
[picture: source (max-width:500px) broken image, img broken image, resize to wide]
- expected: FAIL
+ expected: TIMEOUT
[picture: source (max-width:500px) broken image, img valid image, onload, narrow]
expected: FAIL
[picture: source (max-width:500px) broken image, img valid image, resize to wide]
- expected: FAIL
+ expected: TIMEOUT
[picture: source (max-width:500px) valid image, img broken image, onload, narrow]
expected: FAIL
[picture: source (max-width:500px) valid image, img broken image, resize to wide]
- expected: FAIL
+ expected: TIMEOUT
[picture: source (max-width:500px) valid image, img valid image, onload, narrow]
expected: FAIL
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
- expected: FAIL
+ expected: TIMEOUT
[picture: same URL in source (max-width:500px) and img, onload, narrow]
expected: FAIL
- [img (no src), onload, wide]
- expected: FAIL
-
- [img (empty src), onload, wide]
- expected: FAIL
-
[img (src only) broken image, onload, wide]
expected: FAIL
@@ -69,41 +56,26 @@
expected: FAIL
[picture: source (max-width:500px) broken image, img broken image, resize to narrow]
- expected: FAIL
+ expected: TIMEOUT
[picture: source (max-width:500px) broken image, img valid image, onload, wide]
expected: FAIL
[picture: source (max-width:500px) broken image, img valid image, resize to narrow]
- expected: FAIL
+ expected: TIMEOUT
[picture: source (max-width:500px) valid image, img broken image, onload, wide]
expected: FAIL
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
- expected: FAIL
+ expected: TIMEOUT
[picture: source (max-width:500px) valid image, img valid image, onload, wide]
expected: FAIL
[picture: source (max-width:500px) valid image, img valid image, resize to narrow]
- expected: FAIL
+ expected: TIMEOUT
[picture: same URL in source (max-width:500px) and img, onload, wide]
expected: FAIL
- [img (empty src), resize to wide]
- expected: FAIL
-
- [img (src only) broken image, resize to wide]
- expected: FAIL
-
- [img (src only) valid image, resize to wide]
- expected: FAIL
-
- [picture: same URL in source (max-width:500px) and img, resize to wide]
- expected: FAIL
-
- [picture: same URL in source (max-width:500px) and img, resize to narrow]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini
index 5a53c595324..f9c4569f49a 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini
@@ -1,7 +1,5 @@
[parse-a-sizes-attribute.html]
type: testharness
- disabled: unsupported feature and prone to intermittent incorrect results
- bug: 9560
[<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (standards mode)]
expected: FAIL
@@ -140,31 +138,31 @@
[<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(&quot;unknown-general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown &quot;general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (&quot;unknown-general-enclosed&quot;) 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown &quot;general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (standards mode)]
@@ -191,7 +189,7 @@
[<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (&quot;unknown-general-enclosed&quot;) 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown &quot;general-enclosed&quot;) 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (standards mode)]
@@ -206,7 +204,7 @@
[<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (standards mode)]
@@ -260,7 +258,7 @@
[<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 1px"> ref sizes="1px" (standards mode)]
+ [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (standards mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (standards mode)]
@@ -314,6 +312,36 @@
[<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (standards mode)]
expected: FAIL
+ [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="(&quot;grammar does not match&quot;) 100vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not (&quot;grammar does not match&quot;) 100vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown &quot;general-enclosed&quot;)) 100vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown &quot;general-enclosed&quot;)) 100vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
[<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (standards mode)]
expected: FAIL
@@ -452,12 +480,6 @@
[<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (standards mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="100vw" (standards mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="100vw" (standards mode)]
- expected: FAIL
-
[<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (quirks mode)]
expected: FAIL
@@ -596,31 +618,31 @@
[<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(&quot;unknown-general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown &quot;general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (&quot;unknown-general-enclosed&quot;) 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown &quot;general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (quirks mode)]
@@ -647,7 +669,7 @@
[<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (&quot;unknown-general-enclosed&quot;) 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown &quot;general-enclosed&quot;) 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (quirks mode)]
@@ -662,7 +684,7 @@
[<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (quirks mode)]
@@ -716,7 +738,7 @@
[<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 1px"> ref sizes="1px" (quirks mode)]
+ [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (quirks mode)]
@@ -770,6 +792,36 @@
[<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (quirks mode)]
expected: FAIL
+ [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="(&quot;grammar does not match&quot;) 100vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not (&quot;grammar does not match&quot;) 100vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown &quot;general-enclosed&quot;)) 100vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown &quot;general-enclosed&quot;)) 100vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
[<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (quirks mode)]
expected: FAIL
@@ -908,12 +960,6 @@
[<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (quirks mode)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="100vw" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="100vw" (quirks mode)]
- expected: FAIL
-
[<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (display:none)]
expected: FAIL
@@ -1052,31 +1098,31 @@
[<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(&quot;unknown-general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown &quot;general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (&quot;unknown-general-enclosed&quot;) 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown &quot;general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (display:none)]
@@ -1103,7 +1149,7 @@
[<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (&quot;unknown-general-enclosed&quot;) 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown &quot;general-enclosed&quot;) 1px"> ref sizes="1px" (display:none)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (display:none)]
@@ -1118,7 +1164,7 @@
[<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (display:none)]
@@ -1172,7 +1218,7 @@
[<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 1px"> ref sizes="1px" (display:none)]
+ [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (display:none)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (display:none)]
@@ -1226,6 +1272,36 @@
[<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (display:none)]
expected: FAIL
+ [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="(&quot;grammar does not match&quot;) 100vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not (&quot;grammar does not match&quot;) 100vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown &quot;general-enclosed&quot;)) 100vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown &quot;general-enclosed&quot;)) 100vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
[<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (display:none)]
expected: FAIL
@@ -1364,12 +1440,6 @@
[<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (display:none)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="100vw" (display:none)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="100vw" (display:none)]
- expected: FAIL
-
[<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (width:1000px)]
expected: FAIL
@@ -1508,31 +1578,31 @@
[<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(&quot;unknown-general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown &quot;general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (&quot;unknown-general-enclosed&quot;) 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown &quot;general-enclosed&quot;) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (width:1000px)]
@@ -1559,7 +1629,7 @@
[<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (&quot;unknown-general-enclosed&quot;) 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown &quot;general-enclosed&quot;) 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (width:1000px)]
@@ -1574,7 +1644,7 @@
[<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (width:1000px)]
@@ -1628,7 +1698,7 @@
[<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 1px"> ref sizes="1px" (width:1000px)]
+ [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (width:1000px)]
expected: FAIL
[<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (width:1000px)]
@@ -1682,6 +1752,36 @@
[<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (width:1000px)]
expected: FAIL
+ [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="(&quot;grammar does not match&quot;) 100vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not (&quot;grammar does not match&quot;) 100vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown &quot;general-enclosed&quot;)) 100vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown &quot;general-enclosed&quot;)) 100vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
[<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (width:1000px)]
expected: FAIL
@@ -1820,9 +1920,3 @@
[<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (width:1000px)]
expected: FAIL
- [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="100vw" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="100vw" (width:1000px)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini
index a3bbe0e13e9..997d4d6c63a 100644
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini
@@ -3,9 +3,9 @@
[Changing of template element's node document. Test document loaded from a file]
expected: FAIL
- [Changing of template element's node document. Adobt template element into a document that has a browsing context]
+ [Changing of template element's node document. Test the case when both old and new owner documents of template element have browsing context]
expected: FAIL
- [Changing of template element's node document. Test the case when both old and new owner documents of template element have browsing context]
+ [Changing of template element's node document. Adobt template element into a document that has a browsing context]
expected: FAIL
diff --git a/tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini b/tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini
index 628efbaf6dd..c2b0313db96 100644
--- a/tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini
+++ b/tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini
@@ -1,4 +1,3 @@
[unsupported-csp-referrer-directive.html]
type: testharness
disabled: https://github.com/servo/servo/issues/4767
-
diff --git a/tests/wpt/metadata/webstorage/event_basic.html.ini b/tests/wpt/metadata/webstorage/event_basic.html.ini
index 041542bd593..daad83f1e5f 100644
--- a/tests/wpt/metadata/webstorage/event_basic.html.ini
+++ b/tests/wpt/metadata/webstorage/event_basic.html.ini
@@ -1,6 +1,5 @@
[event_basic.html]
type: testharness
- expected: ERROR
[sessionStorage mutations fire StorageEvents that are caught by the event listener set via window.onstorage.]
expected: FAIL
diff --git a/tests/wpt/metadata/webstorage/event_body_attribute.html.ini b/tests/wpt/metadata/webstorage/event_body_attribute.html.ini
deleted file mode 100644
index d710fe8392f..00000000000
--- a/tests/wpt/metadata/webstorage/event_body_attribute.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[event_body_attribute.html]
- type: testharness
- expected: ERROR
- [sessionStorage mutations fire StorageEvents that are caught by the event listener specified as an attribute on the body.]
- expected: FAIL
-
- [localStorage mutations fire StorageEvents that are caught by the event listener specified as an attribute on the body.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webstorage/event_case_sensitive.html.ini b/tests/wpt/metadata/webstorage/event_case_sensitive.html.ini
index b45d8f59577..01ae1ddcc65 100644
--- a/tests/wpt/metadata/webstorage/event_case_sensitive.html.ini
+++ b/tests/wpt/metadata/webstorage/event_case_sensitive.html.ini
@@ -1,6 +1,5 @@
[event_case_sensitive.html]
type: testharness
- expected: ERROR
[sessionStorage storage events fire even when only the case of the value changes.]
expected: FAIL
diff --git a/tests/wpt/metadata/webstorage/event_setattribute.html.ini b/tests/wpt/metadata/webstorage/event_setattribute.html.ini
deleted file mode 100644
index a46568a15ec..00000000000
--- a/tests/wpt/metadata/webstorage/event_setattribute.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[event_setattribute.html]
- type: testharness
- expected: ERROR
- [sessionStorage mutations fire StorageEvents that are caught by the event listener attached via setattribute.]
- expected: FAIL
-
- [localStorage mutations fire StorageEvents that are caught by the event listener attached via setattribute.]
- expected: FAIL
-
diff --git a/tests/wpt/mozilla/meta/mozilla/htmllabel-activation.html.ini b/tests/wpt/mozilla/meta/mozilla/htmllabel-activation.html.ini
index 29941630cf9..a167adf9739 100644
--- a/tests/wpt/mozilla/meta/mozilla/htmllabel-activation.html.ini
+++ b/tests/wpt/mozilla/meta/mozilla/htmllabel-activation.html.ini
@@ -1,6 +1,5 @@
[htmllabel-activation.html]
type: testharness
-
[If label's 1st child (submit) is disabled, click should have no impact]
expected: FAIL
diff --git a/tests/wpt/mozilla/meta/mozilla/mozbrowser/mozbrowser_loadevents.html.ini b/tests/wpt/mozilla/meta/mozilla/mozbrowser/mozbrowser_loadevents.html.ini
new file mode 100644
index 00000000000..2d0ba01c141
--- /dev/null
+++ b/tests/wpt/mozilla/meta/mozilla/mozbrowser/mozbrowser_loadevents.html.ini
@@ -0,0 +1,5 @@
+[mozbrowser_loadevents.html]
+ type: testharness
+ [mozbrowserloadstart, mozbrowserconnected and mozbrowserloadend are dispatched]
+ expected: FAIL
+
diff --git a/tests/wpt/mozilla/tests/mozilla/mozbrowser/iframe_goback.html b/tests/wpt/mozilla/tests/mozilla/mozbrowser/iframe_goback.html
index 748f434d7c3..353051043e1 100644
--- a/tests/wpt/mozilla/tests/mozilla/mozbrowser/iframe_goback.html
+++ b/tests/wpt/mozilla/tests/mozilla/mozbrowser/iframe_goback.html
@@ -12,13 +12,13 @@ async_test(function(t) {
var url1 = `data:text/html,<script>setTimeout(() => location.assign("${url2}"), 0)</${"script"}>`;
var locations = []
- var expected_locations = [url1, url2, url1];
+ var expected_locations = ["about:blank", url1, url2, url1];
var iframe = document.createElement("iframe");
iframe.mozbrowser = "true";
iframe.src = url1;
- iframe.addEventListener("mozbrowserlocationchange", e => {
+ iframe.addEventListener("mozbrowserlocationchange", t.step_func(e => {
locations.push(e.detail.url);
if (e.detail.url == url2) {
iframe.goBack();
@@ -27,7 +27,7 @@ async_test(function(t) {
assert_array_equals(locations, expected_locations);
t.done();
}
- });
+ }));
document.body.appendChild(iframe);
diff --git a/tests/wpt/mozilla/tests/mozilla/mozbrowser/mozbrowserlocationchange_event.html b/tests/wpt/mozilla/tests/mozilla/mozbrowser/mozbrowserlocationchange_event.html
index 3866cc6dadb..30abe74b92e 100644
--- a/tests/wpt/mozilla/tests/mozilla/mozbrowser/mozbrowserlocationchange_event.html
+++ b/tests/wpt/mozilla/tests/mozilla/mozbrowser/mozbrowserlocationchange_event.html
@@ -14,24 +14,29 @@ async_test(function(t) {
var received_events = []
var expected_events = [
- url1, false, false,
+ "about:blank", false, false,
+ url1, true, false,
url2, true, false,
url3, true, false,
url2, true, true,
- url1, false, true,
+ url1, true, true,
+ "about:blank", false, true,
+ url1, true, true,
url2, true, true,
url3, true, false,
];
var iframe = document.createElement("iframe");
iframe.mozbrowser = "true";
- iframe.src = url1;
var actions = [
+ function() {iframe.src = url1},
function() {iframe.src = url2},
function() {iframe.src = url3},
function() {iframe.goBack()},
function() {iframe.goBack()},
+ function() {iframe.goBack()},
+ function() {iframe.goForward()},
function() {iframe.goForward()},
function() {iframe.goForward()},
];
diff --git a/tests/wpt/mozilla/tests/mozilla/mozbrowser/redirect.html b/tests/wpt/mozilla/tests/mozilla/mozbrowser/redirect.html
index b7587395f94..7c807556826 100644
--- a/tests/wpt/mozilla/tests/mozilla/mozbrowser/redirect.html
+++ b/tests/wpt/mozilla/tests/mozilla/mozbrowser/redirect.html
@@ -9,9 +9,17 @@
var iframe = document.createElement("iframe");
iframe.mozbrowser = "true";
iframe.src = "redirect_init.html?pipe=status(302)|header(Location,redirect_final.html)";
+ var i = 0;
iframe.addEventListener("mozbrowserlocationchange", t.step_func(e => {
- assert_equals(e.detail.url, new URL("redirect_final.html", location).href);
- t.done();
+ switch (++i) {
+ case 1:
+ assert_equals(e.detail.url, "about:blank");
+ break;
+ case 2:
+ assert_equals(e.detail.url, new URL("redirect_final.html", location).href);
+ t.done();
+ break;
+ }
}));
document.body.appendChild(iframe);
});