mirror of
https://github.com/servo/servo.git
synced 2025-07-14 19:03:40 +01:00
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:
commit
3d109b4574
40 changed files with 161 additions and 237 deletions
|
@ -1231,6 +1231,15 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
|
|||
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) => {
|
||||
debug!("constellation got store registration scope message");
|
||||
self.handle_register_serviceworker(scope_things, scope);
|
||||
|
|
|
@ -77,22 +77,26 @@ impl DissimilarOriginWindow {
|
|||
pub fn origin(&self) -> &MutableOrigin {
|
||||
self.upcast::<GlobalScope>().origin()
|
||||
}
|
||||
|
||||
pub fn window_proxy(&self) -> DomRoot<WindowProxy> {
|
||||
DomRoot::from_ref(&*self.window_proxy)
|
||||
}
|
||||
}
|
||||
|
||||
impl DissimilarOriginWindowMethods for DissimilarOriginWindow {
|
||||
// https://html.spec.whatwg.org/multipage/#dom-window
|
||||
fn Window(&self) -> DomRoot<WindowProxy> {
|
||||
DomRoot::from_ref(&*self.window_proxy)
|
||||
self.window_proxy()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-self
|
||||
fn Self_(&self) -> DomRoot<WindowProxy> {
|
||||
DomRoot::from_ref(&*self.window_proxy)
|
||||
self.window_proxy()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-frames
|
||||
fn Frames(&self) -> DomRoot<WindowProxy> {
|
||||
DomRoot::from_ref(&*self.window_proxy)
|
||||
self.window_proxy()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-parent
|
||||
|
|
|
@ -3792,7 +3792,7 @@ impl DocumentMethods for Document {
|
|||
let y = *y as f32;
|
||||
let point = &Point2D::new(x, y);
|
||||
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() {
|
||||
return None;
|
||||
|
@ -3826,7 +3826,10 @@ impl DocumentMethods for Document {
|
|||
let y = *y as f32;
|
||||
let point = &Point2D::new(x, y);
|
||||
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() {
|
||||
return vec!();
|
||||
|
|
|
@ -1649,11 +1649,6 @@ impl Window {
|
|||
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) {
|
||||
// Suspend timer events.
|
||||
self.upcast::<GlobalScope>().suspend();
|
||||
|
|
|
@ -17,11 +17,12 @@ use dom::element::Element;
|
|||
use dom::globalscope::GlobalScope;
|
||||
use dom::window::Window;
|
||||
use dom_struct::dom_struct;
|
||||
use ipc_channel::ipc;
|
||||
use js::JSCLASS_IS_GLOBAL;
|
||||
use js::glue::{CreateWrapperProxyHandler, ProxyTraps};
|
||||
use js::glue::{GetProxyPrivate, SetProxyExtra, GetProxyExtra};
|
||||
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_HasPropertyById, JS_HasOwnPropertyById};
|
||||
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::PipelineId;
|
||||
use msg::constellation_msg::TopLevelBrowsingContextId;
|
||||
use script_thread::ScriptThread;
|
||||
use script_traits::ScriptMsg;
|
||||
use std::cell::Cell;
|
||||
use std::ptr;
|
||||
|
||||
|
@ -301,17 +304,45 @@ impl WindowProxy {
|
|||
|
||||
// This is only called from extern functions,
|
||||
// there's no use using the lifetimed handles here.
|
||||
// https://html.spec.whatwg.org/multipage/#accessing-other-browsing-contexts
|
||||
#[allow(unsafe_code)]
|
||||
unsafe fn GetSubframeWindow(cx: *mut JSContext,
|
||||
proxy: RawHandleObject,
|
||||
id: RawHandleId)
|
||||
-> Option<DomRoot<Window>> {
|
||||
unsafe fn GetSubframeWindowProxy(
|
||||
cx: *mut JSContext,
|
||||
proxy: RawHandleObject,
|
||||
id: RawHandleId
|
||||
) -> Option<(DomRoot<WindowProxy>, u32)> {
|
||||
let index = get_array_index_from_id(cx, Handle::from_raw(id));
|
||||
if let Some(index) = index {
|
||||
rooted!(in(cx) let target = GetProxyPrivate(*proxy).to_object());
|
||||
let win = root_from_handleobject::<Window>(target.handle()).unwrap();
|
||||
let mut found = false;
|
||||
return win.IndexedGetter(index, &mut found);
|
||||
if let Ok(win) = root_from_handleobject::<Window>(target.handle()) {
|
||||
let browsing_context_id = win.window_proxy().browsing_context_id();
|
||||
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
|
||||
|
@ -323,12 +354,12 @@ unsafe extern "C" fn getOwnPropertyDescriptor(cx: *mut JSContext,
|
|||
id: RawHandleId,
|
||||
mut desc: RawMutableHandle<PropertyDescriptor>)
|
||||
-> bool {
|
||||
let window = GetSubframeWindow(cx, proxy, id);
|
||||
if let Some(window) = window {
|
||||
let window = GetSubframeWindowProxy(cx, proxy, id);
|
||||
if let Some((window, attrs)) = window {
|
||||
rooted!(in(cx) let mut val = UndefinedValue());
|
||||
window.to_jsval(cx, val.handle_mut());
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -372,7 +403,7 @@ unsafe extern "C" fn has(cx: *mut JSContext,
|
|||
id: RawHandleId,
|
||||
bp: *mut bool)
|
||||
-> bool {
|
||||
let window = GetSubframeWindow(cx, proxy, id);
|
||||
let window = GetSubframeWindowProxy(cx, proxy, id);
|
||||
if window.is_some() {
|
||||
*bp = true;
|
||||
return true;
|
||||
|
@ -395,8 +426,8 @@ unsafe extern "C" fn get(cx: *mut JSContext,
|
|||
id: RawHandleId,
|
||||
vp: RawMutableHandleValue)
|
||||
-> bool {
|
||||
let window = GetSubframeWindow(cx, proxy, id);
|
||||
if let Some(window) = window {
|
||||
let window = GetSubframeWindowProxy(cx, proxy, id);
|
||||
if let Some((window, _attrs)) = window {
|
||||
window.to_jsval(cx, MutableHandle::from_raw(vp));
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -87,6 +87,8 @@ pub enum ScriptMsg {
|
|||
GetBrowsingContextId(PipelineId, IpcSender<Option<BrowsingContextId>>),
|
||||
/// Get the parent info for a given pipeline.
|
||||
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
|
||||
HeadParsed,
|
||||
/// All pending loads are complete, and the `load` event for this pipeline
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[multi-global-origin-serialization.sub.html]
|
||||
type: testharness
|
||||
[Blob URL serialization (specifically the origin) in multi-global situations]
|
||||
expected: FAIL
|
||||
|
|
@ -1,62 +1,5 @@
|
|||
[current-realm.html]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -66,24 +9,6 @@
|
|||
[NamedNodeMap getNamedItemNS]
|
||||
expected: FAIL
|
||||
|
||||
[splitText]
|
||||
expected: FAIL
|
||||
|
||||
[extractContents]
|
||||
expected: FAIL
|
||||
|
||||
[cloneContents]
|
||||
expected: FAIL
|
||||
|
||||
[cloneRange]
|
||||
expected: FAIL
|
||||
|
||||
[getContext 2d]
|
||||
expected: FAIL
|
||||
|
||||
[getContext webgl]
|
||||
expected: FAIL
|
||||
|
||||
[createImageData]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
[elementFromPoint.html]
|
||||
[co-ordinates larger than the viewport from in iframe]
|
||||
expected: FAIL
|
||||
|
||||
[SVG element at x,y]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,13 +1,7 @@
|
|||
[elementsFromPoint.html]
|
||||
[co-ordinates larger than the viewport from in iframe]
|
||||
expected: FAIL
|
||||
|
||||
type: testharness
|
||||
[SVG element at x,y]
|
||||
expected: FAIL
|
||||
|
||||
[transformed element at x,y]
|
||||
expected: FAIL
|
||||
|
||||
[no hit target at x,y]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,20 @@
|
|||
[matchMedia.xht]
|
||||
type: testharness
|
||||
[CSS Test: CSSOM View matchMedia and MediaQueryList]
|
||||
expected: TIMEOUT
|
||||
[window.matchMedia exists]
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[eventsource-constructor-url-multi-window.htm]
|
||||
type: testharness
|
||||
[EventSource: resolving URLs]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[eventsource-onmessage-realm.htm]
|
||||
type: testharness
|
||||
[the MessageEvent must be created in the Realm of the EventSource]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
[same-url.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Test same-URL navigation and its effects on history]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[location-pathname-setter-question-mark.html]
|
||||
type: testharness
|
||||
[Set location.pathname to ?]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,15 @@
|
|||
[location-prototype-setting-cross-origin-domain.sub.html]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,5 +1,17 @@
|
|||
[location-prototype-setting-cross-origin.sub.html]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,5 +1,21 @@
|
|||
[location-prototype-setting-goes-cross-origin-domain.sub.html]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
[location-prototype-setting-same-origin-domain.sub.html]
|
||||
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
|
||||
|
||||
|
|
|
@ -2,7 +2,3 @@
|
|||
type: testharness
|
||||
[Indexed properties of the window object (non-strict mode) 1]
|
||||
expected: FAIL
|
||||
|
||||
[Ensure indexed properties have the correct configuration]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -6,9 +6,6 @@
|
|||
[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: the prototype must still be null]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -6,9 +6,6 @@
|
|||
[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
|
||||
|
||||
|
|
|
@ -1,5 +1,17 @@
|
|||
[windowproxy-prototype-setting-goes-cross-origin-domain.sub.html]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
[windowproxy-prototype-setting-same-origin-domain.sub.html]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[iframe-marginwidth-marginheight.html]
|
||||
type: testharness
|
||||
[iframe marginwidth and marginheight]
|
||||
expected: FAIL
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
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]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[035.html]
|
||||
type: testharness
|
||||
[ scheduler: innerHTML adding frames with JS in and moving scripts]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
[083.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[ scheduler: event listener defined by script in a document in history]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[eventhandler-cancellation.html]
|
||||
type: testharness
|
||||
[event handler cancellation behavior]
|
||||
expected: FAIL
|
||||
expected: ERROR
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[document-domain.html]
|
||||
type: testharness
|
||||
bug: https://github.com/servo/servo/issues/934
|
||||
expected: TIMEOUT
|
||||
[localStorage and document.domain]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[001.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
|
@ -1,5 +1,6 @@
|
|||
[open-url-multi-window-4.htm]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[XMLHttpRequest: open() resolving URLs (multi-Window; 4; evil)]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[open-url-multi-window-5.htm]
|
||||
type: testharness
|
||||
[XMLHttpRequest: open() resolving URLs (multi-Window; 5)]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[open-url-multi-window.htm]
|
||||
type: testharness
|
||||
[XMLHttpRequest: open() resolving URLs (multi-Window; 1)]
|
||||
expected: FAIL
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue