Implement synchronous about:blank loading.

Based on initial work by jdm in <https://github.com/servo/servo/pull/8600>.
This commit is contained in:
Ms2ger 2016-11-28 10:23:04 +01:00
parent 2677540cd0
commit b86965f394
34 changed files with 456 additions and 906 deletions

View file

@ -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.replace,
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: replace,
});
}

View file

@ -256,7 +256,9 @@ impl Pipeline {
Ok((pipeline, child_process))
}
fn new(id: PipelineId,
/// 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>,

View file

@ -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,
};
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,7 +653,6 @@ 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,
@ -612,8 +663,7 @@ impl VirtualMethods for HTMLIFrameElement {
// 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();
}
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);
}
}

View file

@ -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,8 +1231,12 @@ impl ScriptThread {
let new_load = InProgressLoad::new(new_pipeline_id, frame_id, parent_info,
layout_chan, window_size,
load_data.url.clone());
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) {
let doc = match self.documents.borrow().find_document(pipeline) {
@ -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,

View file

@ -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)]

View file

@ -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

View file

@ -1,3 +1,9 @@
[cssimportrule.xht]
type: testharness
expected: TIMEOUT
[Basic sanity-checking]
expected: FAIL
[Only whitelisted properties are accessible cross-origin]
expected: FAIL

View file

@ -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]
expected: FAIL
[In iframe: Object.getOwnPropertyDescriptor(exception, "code")]
expected: FAIL
[In iframe: typeof exception.message === "string"]
expected: FAIL

View file

@ -1,5 +0,0 @@
[Comment-constructor.html]
type: testharness
[new Comment() should get the correct ownerDocument across globals]
expected: FAIL

View file

@ -1,5 +0,0 @@
[Text-constructor.html]
type: testharness
[new Text() should get the correct ownerDocument across globals]
expected: FAIL

View file

@ -1,3 +1,5 @@
[navigate-child-function-parent.html]
type: testharness
expected: ERROR
[Set location from a parent]
expected: FAIL

View file

@ -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

View file

@ -1,3 +1,3 @@
[cross-origin-objects.html]
type: testharness
expected: ERROR
disabled: https://github.com/servo/servo/issues/10964

View file

@ -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

View file

@ -1,8 +0,0 @@
[window-top-001.html]
type: testharness
[One nested iframe]
expected: FAIL
[Two nested iframes]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -1,5 +0,0 @@
[pause-move-to-other-document.html]
type: testharness
[paused state when moving to other document]
expected: FAIL

View file

@ -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

View file

@ -3,6 +3,3 @@
[load event of blob URL]
expected: FAIL
[load event of initial about:blank]
expected: FAIL

View file

@ -1,3 +0,0 @@
[move_iframe_in_dom_01.html]
type: testharness
expected: ERROR

View file

@ -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

View file

@ -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

View file

@ -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]
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]
expected: FAIL
[Changing of template element's node document. Adobt template element into a document that has a browsing context]
expected: FAIL

View file

@ -1,4 +1,3 @@
[unsupported-csp-referrer-directive.html]
type: testharness
disabled: https://github.com/servo/servo/issues/4767

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,6 +1,5 @@
[htmllabel-activation.html]
type: testharness
[If label's 1st child (submit) is disabled, click should have no impact]
expected: FAIL

View file

@ -0,0 +1,5 @@
[mozbrowser_loadevents.html]
type: testharness
[mozbrowserloadstart, mozbrowserconnected and mozbrowserloadend are dispatched]
expected: FAIL

View file

@ -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);

View file

@ -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()},
];

View file

@ -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 => {
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);
});