Auto merge of #20615 - KiChjang:window-indexed-getter, r=emilio

Implement window indexed getter

Fixes #4589.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20615)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-05-17 18:52:38 -04:00 committed by GitHub
commit 3d109b4574
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 161 additions and 237 deletions

View file

@ -1231,6 +1231,15 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
warn!("Sending reply to get parent info failed ({:?}).", e); warn!("Sending reply to get parent info failed ({:?}).", e);
} }
} }
FromScriptMsg::GetChildBrowsingContextId(browsing_context_id, index, sender) => {
// We increment here because the 0th element is the parent browsing context itself
let result = self.all_descendant_browsing_contexts_iter(browsing_context_id)
.nth(index + 1)
.map(|bc| bc.id);
if let Err(e) = sender.send(result) {
warn!("Sending reply to get child browsing context ID failed ({:?}).", e);
}
}
FromScriptMsg::RegisterServiceWorker(scope_things, scope) => { FromScriptMsg::RegisterServiceWorker(scope_things, scope) => {
debug!("constellation got store registration scope message"); debug!("constellation got store registration scope message");
self.handle_register_serviceworker(scope_things, scope); self.handle_register_serviceworker(scope_things, scope);

View file

@ -77,22 +77,26 @@ impl DissimilarOriginWindow {
pub fn origin(&self) -> &MutableOrigin { pub fn origin(&self) -> &MutableOrigin {
self.upcast::<GlobalScope>().origin() self.upcast::<GlobalScope>().origin()
} }
pub fn window_proxy(&self) -> DomRoot<WindowProxy> {
DomRoot::from_ref(&*self.window_proxy)
}
} }
impl DissimilarOriginWindowMethods for DissimilarOriginWindow { impl DissimilarOriginWindowMethods for DissimilarOriginWindow {
// https://html.spec.whatwg.org/multipage/#dom-window // https://html.spec.whatwg.org/multipage/#dom-window
fn Window(&self) -> DomRoot<WindowProxy> { fn Window(&self) -> DomRoot<WindowProxy> {
DomRoot::from_ref(&*self.window_proxy) self.window_proxy()
} }
// https://html.spec.whatwg.org/multipage/#dom-self // https://html.spec.whatwg.org/multipage/#dom-self
fn Self_(&self) -> DomRoot<WindowProxy> { fn Self_(&self) -> DomRoot<WindowProxy> {
DomRoot::from_ref(&*self.window_proxy) self.window_proxy()
} }
// https://html.spec.whatwg.org/multipage/#dom-frames // https://html.spec.whatwg.org/multipage/#dom-frames
fn Frames(&self) -> DomRoot<WindowProxy> { fn Frames(&self) -> DomRoot<WindowProxy> {
DomRoot::from_ref(&*self.window_proxy) self.window_proxy()
} }
// https://html.spec.whatwg.org/multipage/#dom-parent // https://html.spec.whatwg.org/multipage/#dom-parent

View file

@ -3792,7 +3792,7 @@ impl DocumentMethods for Document {
let y = *y as f32; let y = *y as f32;
let point = &Point2D::new(x, y); let point = &Point2D::new(x, y);
let window = window_from_node(self); let window = window_from_node(self);
let viewport = window.window_size().unwrap().initial_viewport; let viewport = window.window_size()?.initial_viewport;
if self.browsing_context().is_none() { if self.browsing_context().is_none() {
return None; return None;
@ -3826,7 +3826,10 @@ impl DocumentMethods for Document {
let y = *y as f32; let y = *y as f32;
let point = &Point2D::new(x, y); let point = &Point2D::new(x, y);
let window = window_from_node(self); let window = window_from_node(self);
let viewport = window.window_size().unwrap().initial_viewport; let viewport = match window.window_size() {
Some(size) => size.initial_viewport,
None => return vec![]
};
if self.browsing_context().is_none() { if self.browsing_context().is_none() {
return vec!(); return vec!();

View file

@ -1649,11 +1649,6 @@ impl Window {
had_clip_rect had_clip_rect
} }
// https://html.spec.whatwg.org/multipage/#accessing-other-browsing-contexts
pub fn IndexedGetter(&self, _index: u32, _found: &mut bool) -> Option<DomRoot<Window>> {
None
}
pub fn suspend(&self) { pub fn suspend(&self) {
// Suspend timer events. // Suspend timer events.
self.upcast::<GlobalScope>().suspend(); self.upcast::<GlobalScope>().suspend();

View file

@ -17,11 +17,12 @@ use dom::element::Element;
use dom::globalscope::GlobalScope; use dom::globalscope::GlobalScope;
use dom::window::Window; use dom::window::Window;
use dom_struct::dom_struct; use dom_struct::dom_struct;
use ipc_channel::ipc;
use js::JSCLASS_IS_GLOBAL; use js::JSCLASS_IS_GLOBAL;
use js::glue::{CreateWrapperProxyHandler, ProxyTraps}; use js::glue::{CreateWrapperProxyHandler, ProxyTraps};
use js::glue::{GetProxyPrivate, SetProxyExtra, GetProxyExtra}; use js::glue::{GetProxyPrivate, SetProxyExtra, GetProxyExtra};
use js::jsapi::{JSAutoCompartment, JSContext, JSErrNum, JSFreeOp, JSObject}; use js::jsapi::{JSAutoCompartment, JSContext, JSErrNum, JSFreeOp, JSObject};
use js::jsapi::{JSPROP_READONLY, JSTracer, JS_DefinePropertyById}; use js::jsapi::{JSPROP_ENUMERATE, JSPROP_READONLY, JSTracer, JS_DefinePropertyById};
use js::jsapi::{JS_ForwardGetPropertyTo, JS_ForwardSetPropertyTo}; use js::jsapi::{JS_ForwardGetPropertyTo, JS_ForwardSetPropertyTo};
use js::jsapi::{JS_HasPropertyById, JS_HasOwnPropertyById}; use js::jsapi::{JS_HasPropertyById, JS_HasOwnPropertyById};
use js::jsapi::{JS_IsExceptionPending, JS_GetOwnPropertyDescriptorById}; use js::jsapi::{JS_IsExceptionPending, JS_GetOwnPropertyDescriptorById};
@ -40,6 +41,8 @@ use js::rust::wrappers::{NewWindowProxy, SetWindowProxy, JS_TransplantObject};
use msg::constellation_msg::BrowsingContextId; use msg::constellation_msg::BrowsingContextId;
use msg::constellation_msg::PipelineId; use msg::constellation_msg::PipelineId;
use msg::constellation_msg::TopLevelBrowsingContextId; use msg::constellation_msg::TopLevelBrowsingContextId;
use script_thread::ScriptThread;
use script_traits::ScriptMsg;
use std::cell::Cell; use std::cell::Cell;
use std::ptr; use std::ptr;
@ -301,17 +304,45 @@ impl WindowProxy {
// This is only called from extern functions, // This is only called from extern functions,
// there's no use using the lifetimed handles here. // there's no use using the lifetimed handles here.
// https://html.spec.whatwg.org/multipage/#accessing-other-browsing-contexts
#[allow(unsafe_code)] #[allow(unsafe_code)]
unsafe fn GetSubframeWindow(cx: *mut JSContext, unsafe fn GetSubframeWindowProxy(
proxy: RawHandleObject, cx: *mut JSContext,
id: RawHandleId) proxy: RawHandleObject,
-> Option<DomRoot<Window>> { id: RawHandleId
) -> Option<(DomRoot<WindowProxy>, u32)> {
let index = get_array_index_from_id(cx, Handle::from_raw(id)); let index = get_array_index_from_id(cx, Handle::from_raw(id));
if let Some(index) = index { if let Some(index) = index {
rooted!(in(cx) let target = GetProxyPrivate(*proxy).to_object()); rooted!(in(cx) let target = GetProxyPrivate(*proxy).to_object());
let win = root_from_handleobject::<Window>(target.handle()).unwrap(); if let Ok(win) = root_from_handleobject::<Window>(target.handle()) {
let mut found = false; let browsing_context_id = win.window_proxy().browsing_context_id();
return win.IndexedGetter(index, &mut found); let (result_sender, result_receiver) = ipc::channel().unwrap();
let _ = win.upcast::<GlobalScope>().script_to_constellation_chan().send(
ScriptMsg::GetChildBrowsingContextId(
browsing_context_id,
index as usize,
result_sender
)
);
return result_receiver.recv().ok()
.and_then(|maybe_bcid| maybe_bcid)
.and_then(ScriptThread::find_window_proxy)
.map(|proxy| (proxy, JSPROP_ENUMERATE | JSPROP_READONLY));
} else if let Ok(win) = root_from_handleobject::<DissimilarOriginWindow>(target.handle()) {
let browsing_context_id = win.window_proxy().browsing_context_id();
let (result_sender, result_receiver) = ipc::channel().unwrap();
let _ = win.global().script_to_constellation_chan().send(ScriptMsg::GetChildBrowsingContextId(
browsing_context_id,
index as usize,
result_sender
));
return result_receiver.recv().ok()
.and_then(|maybe_bcid| maybe_bcid)
.and_then(ScriptThread::find_window_proxy)
.map(|proxy| (proxy, JSPROP_READONLY));
}
} }
None None
@ -323,12 +354,12 @@ unsafe extern "C" fn getOwnPropertyDescriptor(cx: *mut JSContext,
id: RawHandleId, id: RawHandleId,
mut desc: RawMutableHandle<PropertyDescriptor>) mut desc: RawMutableHandle<PropertyDescriptor>)
-> bool { -> bool {
let window = GetSubframeWindow(cx, proxy, id); let window = GetSubframeWindowProxy(cx, proxy, id);
if let Some(window) = window { if let Some((window, attrs)) = window {
rooted!(in(cx) let mut val = UndefinedValue()); rooted!(in(cx) let mut val = UndefinedValue());
window.to_jsval(cx, val.handle_mut()); window.to_jsval(cx, val.handle_mut());
desc.value = val.get(); desc.value = val.get();
fill_property_descriptor(MutableHandle::from_raw(desc), proxy.get(), JSPROP_READONLY); fill_property_descriptor(MutableHandle::from_raw(desc), proxy.get(), attrs);
return true; return true;
} }
@ -372,7 +403,7 @@ unsafe extern "C" fn has(cx: *mut JSContext,
id: RawHandleId, id: RawHandleId,
bp: *mut bool) bp: *mut bool)
-> bool { -> bool {
let window = GetSubframeWindow(cx, proxy, id); let window = GetSubframeWindowProxy(cx, proxy, id);
if window.is_some() { if window.is_some() {
*bp = true; *bp = true;
return true; return true;
@ -395,8 +426,8 @@ unsafe extern "C" fn get(cx: *mut JSContext,
id: RawHandleId, id: RawHandleId,
vp: RawMutableHandleValue) vp: RawMutableHandleValue)
-> bool { -> bool {
let window = GetSubframeWindow(cx, proxy, id); let window = GetSubframeWindowProxy(cx, proxy, id);
if let Some(window) = window { if let Some((window, _attrs)) = window {
window.to_jsval(cx, MutableHandle::from_raw(vp)); window.to_jsval(cx, MutableHandle::from_raw(vp));
return true; return true;
} }

View file

@ -87,6 +87,8 @@ pub enum ScriptMsg {
GetBrowsingContextId(PipelineId, IpcSender<Option<BrowsingContextId>>), GetBrowsingContextId(PipelineId, IpcSender<Option<BrowsingContextId>>),
/// Get the parent info for a given pipeline. /// Get the parent info for a given pipeline.
GetParentInfo(PipelineId, IpcSender<Option<PipelineId>>), GetParentInfo(PipelineId, IpcSender<Option<PipelineId>>),
/// Get the nth child browsing context ID for a given browsing context, sorted in tree order.
GetChildBrowsingContextId(BrowsingContextId, usize, IpcSender<Option<BrowsingContextId>>),
/// <head> tag finished parsing /// <head> tag finished parsing
HeadParsed, HeadParsed,
/// All pending loads are complete, and the `load` event for this pipeline /// All pending loads are complete, and the `load` event for this pipeline

View file

@ -1,5 +0,0 @@
[multi-global-origin-serialization.sub.html]
type: testharness
[Blob URL serialization (specifically the origin) in multi-global situations]
expected: FAIL

View file

@ -1,62 +1,5 @@
[current-realm.html] [current-realm.html]
type: testharness type: testharness
[querySelectorAll]
expected: FAIL
[createElement]
expected: FAIL
[createElementNS]
expected: FAIL
[createDocumentFragment]
expected: FAIL
[createTextNode]
expected: FAIL
[createComment]
expected: FAIL
[createProcessingInstruction]
expected: FAIL
[createAttribute]
expected: FAIL
[createAttributeNS]
expected: FAIL
[createEvent]
expected: FAIL
[createRange]
expected: FAIL
[createNodeIterator]
expected: FAIL
[createTreeWalker]
expected: FAIL
[getElementsByTagName]
expected: FAIL
[getElementsByTagNameNS]
expected: FAIL
[getElementsByClassName]
expected: FAIL
[createDocumentType]
expected: FAIL
[createDocument]
expected: FAIL
[createHTMLDocument]
expected: FAIL
[NamedNodeMap item] [NamedNodeMap item]
expected: FAIL expected: FAIL
@ -66,24 +9,6 @@
[NamedNodeMap getNamedItemNS] [NamedNodeMap getNamedItemNS]
expected: FAIL expected: FAIL
[splitText]
expected: FAIL
[extractContents]
expected: FAIL
[cloneContents]
expected: FAIL
[cloneRange]
expected: FAIL
[getContext 2d]
expected: FAIL
[getContext webgl]
expected: FAIL
[createImageData] [createImageData]
expected: FAIL expected: FAIL

View file

@ -1,7 +1,4 @@
[elementFromPoint.html] [elementFromPoint.html]
[co-ordinates larger than the viewport from in iframe]
expected: FAIL
[SVG element at x,y] [SVG element at x,y]
expected: FAIL expected: FAIL

View file

@ -1,13 +1,7 @@
[elementsFromPoint.html] [elementsFromPoint.html]
[co-ordinates larger than the viewport from in iframe] type: testharness
expected: FAIL
[SVG element at x,y] [SVG element at x,y]
expected: FAIL expected: FAIL
[transformed element at x,y] [transformed element at x,y]
expected: FAIL expected: FAIL
[no hit target at x,y]
expected: FAIL

View file

@ -1,5 +1,20 @@
[matchMedia.xht] [matchMedia.xht]
type: testharness type: testharness
[CSS Test: CSSOM View matchMedia and MediaQueryList] expected: TIMEOUT
[window.matchMedia exists]
expected: FAIL expected: FAIL
[MediaQueryList.matches for "(max-width: 199px), all and (min-width: 200px)"]
expected: FAIL
[MediaQueryList.matches for "(min-aspect-ratio: 1/1)"]
expected: FAIL
[MediaQueryList.matches for "(width: 200px)"]
expected: FAIL
[MediaQueryList.matches for "(min-width: 150px)"]
expected: FAIL
[Resize iframe from 200x100 to 200x50, then to 100x50]
expected: NOTRUN
[Listeners are called in the order which they have been added]
expected: NOTRUN
[Listener added twice is only called once.]
expected: NOTRUN

View file

@ -1,11 +0,0 @@
[Node-appendChild.html]
type: testharness
[Appending a document]
expected: FAIL
[Adopting an orphan]
expected: FAIL
[Adopting a non-orphan]
expected: FAIL

View file

@ -1,29 +0,0 @@
[Node-removeChild.html]
type: testharness
[Passing a detached element from a frame document to removeChild should not affect it.]
expected: FAIL
[Passing a non-detached element from a frame document to removeChild should not affect it.]
expected: FAIL
[Calling removeChild on a element from a frame document with no children should throw NOT_FOUND_ERR.]
expected: FAIL
[Passing a detached text from a frame document to removeChild should not affect it.]
expected: FAIL
[Passing a non-detached text from a frame document to removeChild should not affect it.]
expected: FAIL
[Calling removeChild on a text from a frame document with no children should throw NOT_FOUND_ERR.]
expected: FAIL
[Passing a detached comment from a frame document to removeChild should not affect it.]
expected: FAIL
[Passing a non-detached comment from a frame document to removeChild should not affect it.]
expected: FAIL
[Calling removeChild on a comment from a frame document with no children should throw NOT_FOUND_ERR.]
expected: FAIL

View file

@ -1,5 +0,0 @@
[eventsource-constructor-url-multi-window.htm]
type: testharness
[EventSource: resolving URLs]
expected: FAIL

View file

@ -1,5 +0,0 @@
[eventsource-onmessage-realm.htm]
type: testharness
[the MessageEvent must be created in the Realm of the EventSource]
expected: FAIL

View file

@ -1,5 +1,6 @@
[same-url.html] [same-url.html]
type: testharness type: testharness
expected: TIMEOUT
[Test same-URL navigation and its effects on history] [Test same-URL navigation and its effects on history]
expected: FAIL expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[location-pathname-setter-question-mark.html]
type: testharness
[Set location.pathname to ?]
expected: FAIL

View file

@ -1,5 +1,15 @@
[location-prototype-setting-cross-origin-domain.sub.html] [location-prototype-setting-cross-origin-domain.sub.html]
type: testharness type: testharness
[[[SetPrototypeOf\]\] on a Location object should not allow changing its value: cross-origin via document.domain] [Cross-origin via document.domain: the prototype is null]
expected: FAIL
[Cross-origin via document.domain: setting the prototype to an empty object via __proto__ should throw a "SecurityError" DOMException]
expected: FAIL
[Cross-origin via document.domain: setting the prototype to an empty object via Reflect.setPrototypeOf should return false]
expected: FAIL
[Cross-origin via document.domain: setting the prototype to its original value via Object.setPrototypeOf should not throw]
expected: FAIL
[Cross-origin via document.domain: setting the prototype to its original value via __proto__ should throw a "SecurityError" since it ends up in CrossOriginGetOwnProperty]
expected: FAIL
[Cross-origin via document.domain: setting the prototype to its original value via Reflect.setPrototypeOf should return true]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,17 @@
[location-prototype-setting-cross-origin.sub.html] [location-prototype-setting-cross-origin.sub.html]
type: testharness type: testharness
[[[SetPrototypeOf\]\] on a Location object should not allow changing its value: cross-origin] [Cross-origin: the prototype is null]
expected: FAIL
[Cross-origin: setting the prototype to an empty object via __proto__ should throw a "SecurityError" DOMException]
expected: FAIL
[Cross-origin: setting the prototype to an empty object via Reflect.setPrototypeOf should return false]
expected: FAIL
[Cross-origin: the prototype must still be null]
expected: FAIL
[Cross-origin: setting the prototype to null via Object.setPrototypeOf should not throw]
expected: FAIL
[Cross-origin: setting the prototype to null via __proto__ should throw a "SecurityError" since it ends up in CrossOriginGetOwnProperty]
expected: FAIL
[Cross-origin: setting the prototype to null via Reflect.setPrototypeOf should return true]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,21 @@
[location-prototype-setting-goes-cross-origin-domain.sub.html] [location-prototype-setting-goes-cross-origin-domain.sub.html]
type: testharness type: testharness
[[[SetPrototypeOf\]\] on a Location object should not allow changing its value: cross-origin via document.domain after initially getting the object] [Became cross-origin via document.domain: the prototype is now null]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to an empty object via __proto__ should throw a "SecurityError" DOMException]
expected: FAIL
[Became cross-origin via document.domain: the prototype must still be null]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to null via Object.setPrototypeOf should not throw]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to null via __proto__ should throw a "SecurityError" since it ends up in CrossOriginGetOwnProperty]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to an empty object via Reflect.setPrototypeOf should return false]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to null via Reflect.setPrototypeOf should return true]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to the original value from before going cross-origin via __proto__ should throw a "SecurityError" DOMException]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to the original value from before going cross-origin via Reflect.setPrototypeOf should return false]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,11 @@
[location-prototype-setting-same-origin-domain.sub.html] [location-prototype-setting-same-origin-domain.sub.html]
type: testharness type: testharness
[[[SetPrototypeOf\]\] on a Location object should not allow changing its value: cross-origin, but same-origin-domain] [Same-origin-domain: setting the prototype to an empty object via Reflect.setPrototypeOf should return false]
expected: FAIL
[Same-origin-domain: setting the prototype to its original value via Object.setPrototypeOf should not throw]
expected: FAIL
[Same-origin-domain: setting the prototype to its original value via __proto__ should not throw]
expected: FAIL
[Same-origin-domain: setting the prototype to its original value via Reflect.setPrototypeOf should return true]
expected: FAIL expected: FAIL

View file

@ -2,7 +2,3 @@
type: testharness type: testharness
[Indexed properties of the window object (non-strict mode) 1] [Indexed properties of the window object (non-strict mode) 1]
expected: FAIL expected: FAIL
[Ensure indexed properties have the correct configuration]
expected: FAIL

View file

@ -6,9 +6,6 @@
[Cross-origin via document.domain: setting the prototype to an empty object via __proto__ should throw a "SecurityError" DOMException] [Cross-origin via document.domain: setting the prototype to an empty object via __proto__ should throw a "SecurityError" DOMException]
expected: FAIL expected: FAIL
[Cross-origin via document.domain: setting the prototype to an empty object via Reflect.setPrototypeOf should return false]
expected: FAIL
[Cross-origin via document.domain: the prototype must still be null] [Cross-origin via document.domain: the prototype must still be null]
expected: FAIL expected: FAIL

View file

@ -6,9 +6,6 @@
[Cross-origin: setting the prototype to an empty object via __proto__ should throw a "SecurityError" DOMException] [Cross-origin: setting the prototype to an empty object via __proto__ should throw a "SecurityError" DOMException]
expected: FAIL expected: FAIL
[Cross-origin: setting the prototype to an empty object via Reflect.setPrototypeOf should return false]
expected: FAIL
[Cross-origin: the prototype must still be null] [Cross-origin: the prototype must still be null]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,17 @@
[windowproxy-prototype-setting-goes-cross-origin-domain.sub.html] [windowproxy-prototype-setting-goes-cross-origin-domain.sub.html]
type: testharness type: testharness
[[[SetPrototypeOf\]\] on a WindowProxy object should not allow changing its value: cross-origin via document.domain after initially getting the object] [Became cross-origin via document.domain: the prototype is now null]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to an empty object via __proto__ should throw a "SecurityError" DOMException]
expected: FAIL
[Became cross-origin via document.domain: the prototype must still be null]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to null via Object.setPrototypeOf should not throw]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to null via __proto__ should throw a "SecurityError" since it ends up in CrossOriginGetOwnProperty]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to null via Reflect.setPrototypeOf should return true]
expected: FAIL
[Became cross-origin via document.domain: setting the prototype to the original value from before going cross-origin via __proto__ should throw a "SecurityError" DOMException]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,9 @@
[windowproxy-prototype-setting-same-origin-domain.sub.html] [windowproxy-prototype-setting-same-origin-domain.sub.html]
type: testharness type: testharness
[[[SetPrototypeOf\]\] on a WindowProxy object should not allow changing its value: cross-origin, but same-origin-domain] [Same-origin-domain: setting the prototype to its original value via Object.setPrototypeOf should not throw]
expected: FAIL
[Same-origin-domain: setting the prototype to its original value via __proto__ should not throw]
expected: FAIL
[Same-origin-domain: setting the prototype to its original value via Reflect.setPrototypeOf should return true]
expected: FAIL expected: FAIL

View file

@ -1,5 +0,0 @@
[iframe-marginwidth-marginheight.html]
type: testharness
[iframe marginwidth and marginheight]
expected: FAIL

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-2.html] [iframe_sandbox_popups_escaping-2.html]
type: testharness type: testharness
expected: ERROR expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT expected: TIMEOUT

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html] [iframe_sandbox_popups_nonescaping-2.html]
type: testharness type: testharness
expected: ERROR expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN expected: NOTRUN

View file

@ -1,5 +0,0 @@
[035.html]
type: testharness
[ scheduler: innerHTML adding frames with JS in and moving scripts]
expected: FAIL

View file

@ -1,5 +1,6 @@
[083.html] [083.html]
type: testharness type: testharness
expected: ERROR
[ scheduler: event listener defined by script in a document in history] [ scheduler: event listener defined by script in a document in history]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,4 @@
[eventhandler-cancellation.html] [eventhandler-cancellation.html]
type: testharness type: testharness
[event handler cancellation behavior] expected: ERROR
expected: FAIL

View file

@ -1,6 +0,0 @@
[window-onerror-with-cross-frame-event-listeners-2.html]
type: testharness
bug: https://github.com/servo/servo/issues/3311
[The error event from an event listener should fire on that listener's global]
expected: FAIL

View file

@ -1,6 +0,0 @@
[window-onerror-with-cross-frame-event-listeners-3.html]
type: testharness
bug: https://github.com/servo/servo/issues/3311
[The error event from an event listener should fire on that listener's global]
expected: FAIL

View file

@ -1,8 +0,0 @@
[message-received.html]
type: testharness
[ArrayBuffer should be created in the relevant realm of the WebSocket]
expected: FAIL
[Blob should be created in the relevant realm of the WebSocket]
expected: FAIL

View file

@ -1,6 +1,6 @@
[document-domain.html] [document-domain.html]
type: testharness type: testharness
bug: https://github.com/servo/servo/issues/934 expected: TIMEOUT
[localStorage and document.domain] [localStorage and document.domain]
expected: FAIL expected: TIMEOUT

View file

@ -1,3 +0,0 @@
[001.html]
type: testharness
expected: TIMEOUT

View file

@ -1,5 +1,6 @@
[open-url-multi-window-4.htm] [open-url-multi-window-4.htm]
type: testharness type: testharness
expected: TIMEOUT
[XMLHttpRequest: open() resolving URLs (multi-Window; 4; evil)] [XMLHttpRequest: open() resolving URLs (multi-Window; 4; evil)]
expected: FAIL expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[open-url-multi-window-5.htm]
type: testharness
[XMLHttpRequest: open() resolving URLs (multi-Window; 5)]
expected: FAIL

View file

@ -1,5 +0,0 @@
[open-url-multi-window.htm]
type: testharness
[XMLHttpRequest: open() resolving URLs (multi-Window; 1)]
expected: FAIL