diff options
author | Gregory Terzian <gterzian@users.noreply.github.com> | 2018-04-22 12:58:30 +0800 |
---|---|---|
committer | Gregory Terzian <gterzian@users.noreply.github.com> | 2018-08-11 01:12:55 +0200 |
commit | f408b798c4666eddeb8b52d8965d7d4a6942e066 (patch) | |
tree | 70f4bd491b024ba11a9d6526ff6d49d815e58e88 | |
parent | 3e96a322ae6797631fd784dfde4b92ffccefd85d (diff) | |
download | servo-f408b798c4666eddeb8b52d8965d7d4a6942e066.tar.gz servo-f408b798c4666eddeb8b52d8965d7d4a6942e066.zip |
implement window.open, create auxiliary browsing context
93 files changed, 475 insertions, 323 deletions
diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index 8eb00583932..f03643bdbd5 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -123,7 +123,7 @@ use network_listener::NetworkListener; use pipeline::{InitialPipelineState, Pipeline}; use profile_traits::mem; use profile_traits::time; -use script_traits::{AnimationState, AnimationTickType, CompositorEvent}; +use script_traits::{AnimationState, AuxiliaryBrowsingContextLoadInfo, AnimationTickType, CompositorEvent}; use script_traits::{ConstellationControlMsg, ConstellationMsg as FromCompositorMsg, DiscardBrowsingContext}; use script_traits::{DocumentActivity, DocumentState, LayoutControlMsg, LoadData}; use script_traits::{IFrameLoadInfo, IFrameLoadInfoWithData, IFrameSandboxState, TimerSchedulerMsg}; @@ -1121,6 +1121,9 @@ where FromScriptMsg::ScriptNewIFrame(load_info, layout_sender) => { self.handle_script_new_iframe(load_info, layout_sender); }, + FromScriptMsg::ScriptNewAuxiliary(load_info, layout_sender) => { + self.handle_script_new_auxiliary(load_info, layout_sender); + }, FromScriptMsg::ChangeRunningAnimationsState(animation_state) => { self.handle_change_running_animations_state(source_pipeline_id, animation_state) }, @@ -1868,6 +1871,62 @@ where }); } + fn handle_script_new_auxiliary(&mut self, + load_info: AuxiliaryBrowsingContextLoadInfo, + layout_sender: IpcSender<LayoutControlMsg>) { + let AuxiliaryBrowsingContextLoadInfo { + opener_pipeline_id, + new_top_level_browsing_context_id, + new_browsing_context_id, + new_pipeline_id, + } = load_info; + + let url = ServoUrl::parse("about:blank").expect("infallible"); + + // TODO: Referrer? + let load_data = LoadData::new(url.clone(), None, None, None); + + let pipeline = { + let opener_pipeline = match self.pipelines.get(&opener_pipeline_id) { + Some(parent_pipeline) => parent_pipeline, + None => return warn!("Auxiliary loaded url in closed pipeline {}.", opener_pipeline_id), + }; + let opener_host = match reg_host(&opener_pipeline.url) { + Some(host) => host, + None => return warn!("Auxiliary loaded pipeline with no url {}.", opener_pipeline_id), + }; + let script_sender = opener_pipeline.event_loop.clone(); + // https://html.spec.whatwg.org/multipage/#unit-of-related-similar-origin-browsing-contexts + // If the auxiliary shares the host/scheme with the creator, they share an event-loop. + // So the first entry for the auxiliary, itself currently "about:blank", + // is the event-loop for the current host of the creator. + self.event_loops.entry(new_top_level_browsing_context_id) + .or_insert_with(HashMap::new) + .insert(opener_host, Rc::downgrade(&script_sender)); + Pipeline::new(new_pipeline_id, + new_browsing_context_id, + new_top_level_browsing_context_id, + None, + script_sender, + layout_sender, + self.compositor_proxy.clone(), + opener_pipeline.is_private, + url, + opener_pipeline.visible, + load_data) + }; + + assert!(!self.pipelines.contains_key(&new_pipeline_id)); + self.pipelines.insert(new_pipeline_id, pipeline); + self.joint_session_histories.insert(new_top_level_browsing_context_id, JointSessionHistory::new()); + self.add_pending_change(SessionHistoryChange { + top_level_browsing_context_id: new_top_level_browsing_context_id, + browsing_context_id: new_browsing_context_id, + new_pipeline_id: new_pipeline_id, + replace: None, + }); + } + fn handle_pending_paint_metric(&self, pipeline_id: PipelineId, epoch: Epoch) { self.compositor_proxy .send(ToCompositorMsg::PendingPaintMetric(pipeline_id, epoch)) diff --git a/components/embedder_traits/lib.rs b/components/embedder_traits/lib.rs index b1698c95728..3d932281e0c 100644 --- a/components/embedder_traits/lib.rs +++ b/components/embedder_traits/lib.rs @@ -84,6 +84,10 @@ pub enum EmbedderMsg { Alert(String, IpcSender<()>), /// Wether or not to follow a link AllowNavigation(ServoUrl, IpcSender<bool>), + /// Whether or not to allow script to open a new tab/browser + AllowOpeningBrowser(IpcSender<bool>), + /// A new browser was created by script + BrowserCreated(TopLevelBrowsingContextId), /// Wether or not to unload a document AllowUnload(IpcSender<bool>), /// Sends an unconsumed key event back to the embedder. @@ -143,6 +147,8 @@ impl Debug for EmbedderMsg { EmbedderMsg::ShowIME(..) => write!(f, "ShowIME"), EmbedderMsg::HideIME => write!(f, "HideIME"), EmbedderMsg::Shutdown => write!(f, "Shutdown"), + EmbedderMsg::AllowOpeningBrowser(..) => write!(f, "AllowOpeningBrowser"), + EmbedderMsg::BrowserCreated(..) => write!(f, "BrowserCreated") } } } diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index e48385ed692..657ed992441 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -574,45 +574,61 @@ impl Activatable for HTMLAnchorElement { } } -/// <https://html.spec.whatwg.org/multipage/#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name> -fn is_current_browsing_context(target: DOMString) -> bool { - target.is_empty() || target == "_self" -} - /// <https://html.spec.whatwg.org/multipage/#following-hyperlinks-2> pub fn follow_hyperlink(subject: &Element, hyperlink_suffix: Option<String>, referrer_policy: Option<ReferrerPolicy>) { - // Step 1: replace. - // Step 2: source browsing context. - // Step 3: target browsing context. - let target = subject.get_attribute(&ns!(), &local_name!("target")); + // Step 1: TODO: If subject cannot navigate, then return. + // Step 2, done in Step 7. - // Step 4: disown target's opener if needed. - let attribute = subject.get_attribute(&ns!(), &local_name!("href")).unwrap(); - let mut href = attribute.Value(); + let document = document_from_node(subject); + let window = document.window(); - // Step 7: append a hyperlink suffix. - // https://www.w3.org/Bugs/Public/show_bug.cgi?id=28925 - if let Some(suffix) = hyperlink_suffix { - href.push_str(&suffix); - } + // Step 3: source browsing context. + let source = document.browsing_context().unwrap(); - // Step 5: parse the URL. - // Step 6: navigate to an error document if parsing failed. - let document = document_from_node(subject); - let url = match document.url().join(&href) { - Ok(url) => url, - Err(_) => return, + // Step 4-5: target attribute. + let target_attribute_value = subject.get_attribute(&ns!(), &local_name!("target")); + + // Step 6. + let noopener = if let Some(link_types) = subject.get_attribute(&ns!(), &local_name!("rel")) { + let values = link_types.Value(); + let contains_noopener = values.contains("noopener"); + let contains_noreferrer = values.contains("noreferrer"); + contains_noreferrer || contains_noopener + } else { + false }; - // Step 8: navigate to the URL. - if let Some(target) = target { - if !is_current_browsing_context(target.Value()) { - // https://github.com/servo/servo/issues/13241 + // Step 7. + let (maybe_chosen, replace) = match target_attribute_value { + Some(name) => source.choose_browsing_context(name.Value(), noopener), + None => (Some(window.window_proxy()), false) + }; + let chosen = match maybe_chosen { + Some(proxy) => proxy, + None => return, + }; + if let Some(target_document) = chosen.document() { + let target_window = target_document.window(); + + // Step 9, dis-owning target's opener, if necessary + // will have been done as part of Step 7 above + // in choose_browsing_context/create_auxiliary_browsing_context. + + // Step 10, 11, 12, 13. TODO: if parsing the URL failed, navigate to error page. + let attribute = subject.get_attribute(&ns!(), &local_name!("href")).unwrap(); + let mut href = attribute.Value(); + // Step 12: append a hyperlink suffix. + // https://www.w3.org/Bugs/Public/show_bug.cgi?id=28925 + if let Some(suffix) = hyperlink_suffix { + href.push_str(&suffix); } - } - - debug!("following hyperlink to {}", url); + let url = match document.url().join(&href) { + Ok(url) => url, + Err(_) => return, + }; - let window = document.window(); - window.load_url(url, false, false, referrer_policy); + // Step 13, 14. + debug!("following hyperlink to {}", url); + target_window.load_url(url, replace, false, referrer_policy); + }; } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 27a64d00cda..d13ac0e5c98 100755 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -41,6 +41,7 @@ use dom::node::{Node, NodeFlags, UnbindContext, VecPreOrderInsertionHelper}; use dom::node::{document_from_node, window_from_node}; use dom::validitystate::ValidationFlags; use dom::virtualmethods::VirtualMethods; +use dom::window::Window; use dom_struct::dom_struct; use encoding_rs::{Encoding, UTF_8}; use html5ever::{LocalName, Prefix}; @@ -337,10 +338,24 @@ impl HTMLFormElement { let scheme = action_components.scheme().to_owned(); let enctype = submitter.enctype(); let method = submitter.method(); - let _target = submitter.target(); - // TODO: Handle browsing contexts, partially loaded documents (step 16-17) - let mut load_data = LoadData::new(action_components, None, doc.get_referrer_policy(), Some(doc.url())); + // Step 16, 17 + let target_attribute_value = submitter.target(); + let source = doc.browsing_context().unwrap(); + let (maybe_chosen, _new) = source.choose_browsing_context(target_attribute_value, false); + let chosen = match maybe_chosen { + Some(proxy) => proxy, + None => return + }; + let target_document = match chosen.document() { + Some(doc) => doc, + None => return + }; + let target_window = target_document.window(); + let mut load_data = LoadData::new(action_components, + None, + target_document.get_referrer_policy(), + Some(target_document.url())); // Step 18 match (&*scheme, method) { @@ -351,17 +366,17 @@ impl HTMLFormElement { // https://html.spec.whatwg.org/multipage/#submit-mutate-action ("http", FormMethod::FormGet) | ("https", FormMethod::FormGet) | ("data", FormMethod::FormGet) => { load_data.headers.set(ContentType::form_url_encoded()); - self.mutate_action_url(&mut form_data, load_data, encoding); + self.mutate_action_url(&mut form_data, load_data, encoding, &target_window); } // https://html.spec.whatwg.org/multipage/#submit-body ("http", FormMethod::FormPost) | ("https", FormMethod::FormPost) => { load_data.method = Method::Post; - self.submit_entity_body(&mut form_data, load_data, enctype, encoding); + self.submit_entity_body(&mut form_data, load_data, enctype, encoding, &target_window); } // https://html.spec.whatwg.org/multipage/#submit-get-action ("file", _) | ("about", _) | ("data", FormMethod::FormPost) | ("ftp", _) | ("javascript", _) => { - self.plan_to_navigate(load_data); + self.plan_to_navigate(load_data, &target_window); } ("mailto", FormMethod::FormPost) => { // TODO: Mail as body @@ -376,7 +391,11 @@ impl HTMLFormElement { } // https://html.spec.whatwg.org/multipage/#submit-mutate-action - fn mutate_action_url(&self, form_data: &mut Vec<FormDatum>, mut load_data: LoadData, encoding: &'static Encoding) { + fn mutate_action_url(&self, + form_data: &mut Vec<FormDatum>, + mut load_data: LoadData, + encoding: &'static Encoding, + target: &Window) { let charset = encoding.name(); self.set_encoding_override(load_data.url.as_mut_url().query_pairs_mut()) @@ -384,12 +403,16 @@ impl HTMLFormElement { .extend_pairs(form_data.into_iter() .map(|field| (field.name.clone(), field.replace_value(charset)))); - self.plan_to_navigate(load_data); + self.plan_to_navigate(load_data, target); } // https://html.spec.whatwg.org/multipage/#submit-body - fn submit_entity_body(&self, form_data: &mut Vec<FormDatum>, mut load_data: LoadData, - enctype: FormEncType, encoding: &'static Encoding) { + fn submit_entity_body(&self, + form_data: &mut Vec<FormDatum>, + mut load_data: LoadData, + enctype: FormEncType, + encoding: &'static Encoding, + target: &Window) { let boundary = generate_boundary(); let bytes = match enctype { FormEncType::UrlEncoded => { @@ -415,7 +438,7 @@ impl HTMLFormElement { }; load_data.data = Some(bytes); - self.plan_to_navigate(load_data); + self.plan_to_navigate(load_data, target); } fn set_encoding_override<'a>(&self, mut serializer: Serializer<UrlQuery<'a>>) @@ -426,9 +449,7 @@ impl HTMLFormElement { } /// [Planned navigation](https://html.spec.whatwg.org/multipage/#planned-navigation) - fn plan_to_navigate(&self, load_data: LoadData) { - let window = window_from_node(self); - + fn plan_to_navigate(&self, load_data: LoadData, target: &Window) { // Step 1 // Each planned navigation task is tagged with a generation ID, and // before the task is handled, it first checks whether the HTMLFormElement's @@ -437,8 +458,8 @@ impl HTMLFormElement { self.generation_id.set(generation_id); // Step 2. - let pipeline_id = window.upcast::<GlobalScope>().pipeline_id(); - let script_chan = window.main_thread_script_chan().clone(); + let pipeline_id = target.upcast::<GlobalScope>().pipeline_id(); + let script_chan = target.main_thread_script_chan().clone(); let this = Trusted::new(self); let task = task!(navigate_to_form_planned_navigation: move || { if generation_id != this.root().generation_id.get() { @@ -452,7 +473,7 @@ impl HTMLFormElement { }); // Step 3. - window.dom_manipulation_task_source().queue(task, window.upcast()).unwrap(); + target.dom_manipulation_task_source().queue(task, target.upcast()).unwrap(); } /// Interactively validate the constraints of form elements diff --git a/components/script/dom/webidls/Window.webidl b/components/script/dom/webidls/Window.webidl index d7e22b1f60c..c143ec56bbf 100644 --- a/components/script/dom/webidls/Window.webidl +++ b/components/script/dom/webidls/Window.webidl @@ -40,8 +40,8 @@ // https://github.com/whatwg/html/issues/2115 [Replaceable] readonly attribute WindowProxy? parent; readonly attribute Element? frameElement; - //WindowProxy open(optional DOMString url = "about:blank", optional DOMString target = "_blank", - // optional DOMString features = "", optional boolean replace = false); + WindowProxy? open(optional DOMString url = "about:blank", optional DOMString target = "_blank", + optional DOMString features = ""); //getter WindowProxy (unsigned long index); // https://github.com/servo/servo/issues/14453 diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 4d6fca64cbd..41b7441c3bf 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -565,6 +565,15 @@ impl WindowMethods for Window { doc.abort(); } + // https://html.spec.whatwg.org/multipage/#dom-open + fn Open(&self, + url: DOMString, + target: DOMString, + features: DOMString) + -> Option<DomRoot<WindowProxy>> { + self.window_proxy().open(url, target, features) + } + // https://html.spec.whatwg.org/multipage/#dom-window-closed fn Closed(&self) -> bool { self.window_proxy.get() diff --git a/components/script/dom/windowproxy.rs b/components/script/dom/windowproxy.rs index bfd75f879dc..10c925cb28d 100644 --- a/components/script/dom/windowproxy.rs +++ b/components/script/dom/windowproxy.rs @@ -13,10 +13,12 @@ use dom::bindings::str::DOMString; use dom::bindings::trace::JSTraceable; use dom::bindings::utils::{WindowProxyHandler, get_array_index_from_id, AsVoidPtr}; use dom::dissimilaroriginwindow::DissimilarOriginWindow; +use dom::document::Document; use dom::element::Element; use dom::globalscope::GlobalScope; use dom::window::Window; use dom_struct::dom_struct; +use embedder_traits::EmbedderMsg; use ipc_channel::ipc; use js::JSCLASS_IS_GLOBAL; use js::glue::{CreateWrapperProxyHandler, ProxyTraps}; @@ -42,7 +44,9 @@ use msg::constellation_msg::BrowsingContextId; use msg::constellation_msg::PipelineId; use msg::constellation_msg::TopLevelBrowsingContextId; use script_thread::ScriptThread; -use script_traits::ScriptMsg; +use script_traits::{AuxiliaryBrowsingContextLoadInfo, LoadData, NewLayoutInfo, ScriptMsg}; +use servo_config::prefs::PREFS; +use servo_url::ServoUrl; use std::cell::Cell; use std::ptr; @@ -200,6 +204,138 @@ impl WindowProxy { } } + // https://html.spec.whatwg.org/multipage/#auxiliary-browsing-context + fn create_auxiliary_browsing_context(&self, name: DOMString, _noopener: bool) -> Option<DomRoot<WindowProxy>> { + let (chan, port) = ipc::channel().unwrap(); + let window = self.currently_active.get() + .and_then(|id| ScriptThread::find_document(id)) + .and_then(|doc| Some(DomRoot::from_ref(doc.window()))) + .unwrap(); + let msg = EmbedderMsg::AllowOpeningBrowser(chan); + window.send_to_embedder(msg); + if port.recv().unwrap() { + let new_top_level_browsing_context_id = TopLevelBrowsingContextId::new(); + let new_browsing_context_id = BrowsingContextId::from(new_top_level_browsing_context_id); + let new_pipeline_id = PipelineId::new(); + let load_info = AuxiliaryBrowsingContextLoadInfo { + opener_pipeline_id: self.currently_active.get().unwrap(), + new_browsing_context_id: new_browsing_context_id, + new_top_level_browsing_context_id: new_top_level_browsing_context_id, + new_pipeline_id: new_pipeline_id, + }; + let document = self.currently_active.get() + .and_then(|id| ScriptThread::find_document(id)) + .unwrap(); + let blank_url = ServoUrl::parse("about:blank").ok().unwrap(); + let load_data = LoadData::new(blank_url, + None, + document.get_referrer_policy(), + Some(document.url().clone())); + let (pipeline_sender, pipeline_receiver) = ipc::channel().unwrap(); + let new_layout_info = NewLayoutInfo { + parent_info: None, + new_pipeline_id: new_pipeline_id, + browsing_context_id: new_browsing_context_id, + top_level_browsing_context_id: new_top_level_browsing_context_id, + load_data: load_data, + pipeline_port: pipeline_receiver, + content_process_shutdown_chan: None, + window_size: None, + layout_threads: PREFS.get("layout.threads").as_u64().expect("count") as usize, + }; + let constellation_msg = ScriptMsg::ScriptNewAuxiliary(load_info, pipeline_sender); + window.send_to_constellation(constellation_msg); + ScriptThread::process_attach_layout(new_layout_info, document.origin().clone()); + let msg = EmbedderMsg::BrowserCreated(new_top_level_browsing_context_id); + window.send_to_embedder(msg); + let auxiliary = ScriptThread::find_document(new_pipeline_id).and_then(|doc| doc.browsing_context()); + if let Some(proxy) = auxiliary { + if name.to_lowercase() != "_blank" { + proxy.set_name(name); + } + return Some(proxy) + } + } + None + } + + // https://html.spec.whatwg.org/multipage/#window-open-steps + pub fn open(&self, + url: DOMString, + target: DOMString, + features: DOMString) + -> Option<DomRoot<WindowProxy>> { + // Step 3. + let non_empty_target = match target.as_ref() { + "" => DOMString::from("_blank"), + _ => target + }; + // TODO Step 4, properly tokenize features. + // Step 5 + let noopener = features.contains("noopener"); + // Step 6, 7 + let (chosen, new) = match self.choose_browsing_context(non_empty_target, noopener) { + (Some(chosen), new) => (chosen, new), + (None, _) => return None + }; + // TODO Step 8, set up browsing context features. + let target_document = match chosen.document() { + Some(target_document) => target_document, + None => return None + }; + let target_window = target_document.window(); + // Step 9, and 10.2, will have happened elsewhere, + // since we've created a new browsing context and loaded it with about:blank. + if !url.is_empty() { + let existing_document = self.currently_active.get() + .and_then(|id| ScriptThread::find_document(id)).unwrap(); + // Step 10.1 + let url = match existing_document.url().join(&url) { + Ok(url) => url, + Err(_) => return None, // TODO: throw a "SyntaxError" DOMException. + }; + // Step 10.3 + target_window.load_url(url, new, false, target_document.get_referrer_policy()); + } + if noopener { + // Step 11 (Dis-owning has been done in create_auxiliary_browsing_context). + return None + } + // Step 12. + return target_document.browsing_context() + } + + // https://html.spec.whatwg.org/multipage/#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name + pub fn choose_browsing_context(&self, name: DOMString, noopener: bool) -> (Option<DomRoot<WindowProxy>>, bool) { + match name.to_lowercase().as_ref() { + "" | "_self" => { + // Step 3. + (Some(DomRoot::from_ref(self)), false) + }, + "_parent" => { + // Step 4 + (Some(DomRoot::from_ref(self.parent().unwrap())), false) + }, + "_top" => { + // Step 5 + (Some(DomRoot::from_ref(self.top())), false) + }, + "_blank" => { + (self.create_auxiliary_browsing_context(name, noopener), true) + }, + _ => { + // Step 6. + // TODO: expand the search to all 'familiar' bc, + // including auxiliaries familiar by way of their opener. + // See https://html.spec.whatwg.org/multipage/#familiar-with + match ScriptThread::find_window_proxy_by_name(&name) { + Some(proxy) => (Some(proxy), false), + None => (self.create_auxiliary_browsing_context(name, noopener), true) + } + } + } + } + pub fn discard_browsing_context(&self) { self.discarded.set(true); } @@ -220,6 +356,11 @@ impl WindowProxy { self.frame_element.r() } + pub fn document(&self) -> Option<DomRoot<Document>> { + self.currently_active.get() + .and_then(|id| ScriptThread::find_document(id)) + } + pub fn parent(&self) -> Option<&WindowProxy> { self.parent.r() } diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 13c5f1f7ba4..9e20a24e55b 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -721,6 +721,18 @@ impl ScriptThread { })) } + pub fn find_window_proxy_by_name(name: &DOMString) -> Option<DomRoot<WindowProxy>> { + SCRIPT_THREAD_ROOT.with(|root| root.get().and_then(|script_thread| { + let script_thread = unsafe { &*script_thread }; + for (_, proxy) in script_thread.window_proxies.borrow().iter() { + if proxy.get_name() == *name { + return Some(DomRoot::from_ref(&**proxy)) + } + } + None + })) + } + pub fn worklet_thread_pool() -> Rc<WorkletThreadPool> { SCRIPT_THREAD_ROOT.with(|root| { let script_thread = unsafe { &*root.get().unwrap() }; diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs index 6075cc6fc43..476f41ef0f1 100644 --- a/components/script_traits/lib.rs +++ b/components/script_traits/lib.rs @@ -576,6 +576,19 @@ pub enum IFrameSandboxState { IFrameUnsandboxed, } +/// Specifies the information required to load an auxiliary browsing context. +#[derive(Deserialize, Serialize)] +pub struct AuxiliaryBrowsingContextLoadInfo { + /// The pipeline opener browsing context. + pub opener_pipeline_id: PipelineId, + /// The new top-level ID for the auxiliary. + pub new_top_level_browsing_context_id: TopLevelBrowsingContextId, + /// The new browsing context ID. + pub new_browsing_context_id: BrowsingContextId, + /// The new pipeline ID for the auxiliary. + pub new_pipeline_id: PipelineId, +} + /// Specifies the information required to load an iframe. #[derive(Deserialize, Serialize)] pub struct IFrameLoadInfo { diff --git a/components/script_traits/script_msg.rs b/components/script_traits/script_msg.rs index 762300827c8..3668fd1e2fa 100644 --- a/components/script_traits/script_msg.rs +++ b/components/script_traits/script_msg.rs @@ -3,6 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use AnimationState; +use AuxiliaryBrowsingContextLoadInfo; use DocumentState; use IFrameLoadInfo; use IFrameLoadInfoWithData; @@ -137,6 +138,8 @@ pub enum ScriptMsg { ScriptLoadedURLInIFrame(IFrameLoadInfoWithData), /// A load of the initial `about:blank` has been completed in an IFrame. ScriptNewIFrame(IFrameLoadInfo, IpcSender<LayoutControlMsg>), + /// Script has opened a new auxiliary browsing context. + ScriptNewAuxiliary(AuxiliaryBrowsingContextLoadInfo, IpcSender<LayoutControlMsg>), /// Requests that the constellation set the contents of the clipboard SetClipboardContents(String), /// Mark a new document as active @@ -196,6 +199,7 @@ impl fmt::Debug for ScriptMsg { VisibilityChangeComplete(..) => "VisibilityChangeComplete", ScriptLoadedURLInIFrame(..) => "ScriptLoadedURLInIFrame", ScriptNewIFrame(..) => "ScriptNewIFrame", + ScriptNewAuxiliary(..) => "ScriptNewAuxiliary", SetClipboardContents(..) => "SetClipboardContents", ActivateDocument => "ActivateDocument", SetDocumentState(..) => "SetDocumentState", diff --git a/ports/servo/browser.rs b/ports/servo/browser.rs index f7808b791e8..161781a8052 100644 --- a/ports/servo/browser.rs +++ b/ports/servo/browser.rs @@ -284,6 +284,18 @@ impl Browser { warn!("Failed to send AllowNavigation response: {}", e); } } + EmbedderMsg::AllowOpeningBrowser(response_chan) => { + // Note: would be a place to handle pop-ups config. + // see Step 7 of #the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name + if let Err(e) = response_chan.send(true) { + warn!("Failed to send AllowOpeningBrowser response: {}", e); + }; + } + EmbedderMsg::BrowserCreated(new_browser_id) => { + // TODO: properly handle a new "tab" + self.browser_id = Some(new_browser_id); + self.event_queue.push(WindowEvent::SelectBrowser(new_browser_id)); + } EmbedderMsg::KeyEvent(ch, key, state, modified) => { self.handle_key_from_servo(browser_id, ch, key, state, modified); } diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini index 35196e2d082..e0e97f1c6b1 100644 --- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini +++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini @@ -1,5 +1,6 @@ [embedded-credentials.tentative.sub.html] type: testharness + expected: TIMEOUT [Embedded credentials are treated as network errors.] expected: FAIL @@ -7,14 +8,14 @@ expected: FAIL [Embedded credentials are treated as network errors in new windows.] - expected: FAIL + expected: TIMEOUT [Embedded credentials matching the top-level are not treated as network errors for relative URLs.] - expected: FAIL + expected: TIMEOUT [Embedded credentials matching the top-level are not treated as network errors for same-origin URLs.] - expected: FAIL + expected: TIMEOUT [Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html.ini index 65ec052f25f..e820a708df3 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html.ini @@ -1,8 +1,9 @@ [resume-timer-on-history-back.html] type: testharness + expected: TIMEOUT [history.back() handles top level page timer correctly] - expected: FAIL + expected: TIMEOUT [history.back() handles nested iframe timer correctly] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-aux-frame-navigation.sub.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-aux-frame-navigation.sub.html.ini deleted file mode 100644 index 99ceba7dc39..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-aux-frame-navigation.sub.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[window-name-after-cross-origin-aux-frame-navigation.sub.html] - type: testharness - expected: ERROR - [Test that the window name is correct] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-main-frame-navigation.sub.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-main-frame-navigation.sub.html.ini index f8a10f8f098..f3840120f49 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-main-frame-navigation.sub.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-main-frame-navigation.sub.html.ini @@ -1,6 +1,5 @@ [window-name-after-cross-origin-main-frame-navigation.sub.html] type: testharness - expected: ERROR [window.name should equal "" after a cross-origin main frame navigation] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-same-origin-aux-frame-navigation.sub.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-same-origin-aux-frame-navigation.sub.html.ini deleted file mode 100644 index 51401a84708..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-same-origin-aux-frame-navigation.sub.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[window-name-after-same-origin-aux-frame-navigation.sub.html] - type: testharness - expected: ERROR - [Test that the window name is correct] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini deleted file mode 100644 index 6a14cc88a26..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[005.html] - type: testharness - expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/006.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/006.html.ini deleted file mode 100644 index 9701e26d8e9..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/006.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[006.html] - type: testharness - expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/008.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/008.html.ini index 9fbd1fc405a..f06bb4cfea7 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/008.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/008.html.ini @@ -1,3 +1,5 @@ [008.html] type: testharness - expected: TIMEOUT + [Link with onclick form submit to javascript url and href navigation ] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini index 2633411d86e..f2431729df2 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini @@ -1,3 +1,5 @@ [009.html] type: testharness - expected: TIMEOUT + [Link with onclick form submit to javascript url with document.write and href navigation ] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/010.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/010.html.ini deleted file mode 100644 index cf12f241471..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/010.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[010.html] - type: testharness - [Link with onclick form submit to javascript url with delayed document.write and href navigation ] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/011.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/011.html.ini deleted file mode 100644 index 7962549aeed..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/011.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[011.html] - type: testharness - expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_submit.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_submit.html.ini deleted file mode 100644 index a3de688eef5..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_submit.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[child_navigates_parent_submit.html] - type: testharness - expected: TIMEOUT - [Child document navigating parent via submit ] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini deleted file mode 100644 index 9bacb9f5c4e..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[javascript-url-abort-return-value-string.tentative.html] - [Aborting fetch for javascript:string navigation] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini deleted file mode 100644 index d936073896a..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[pageload-image-in-popup.html] - expected: ERROR - [The document for a standalone media file should have one child in the body.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_back_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/history_back_1.html.ini deleted file mode 100644 index 374935b8230..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_back_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[history_back_1.html] - [history.back() with session history] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_forward_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/history_forward_1.html.ini deleted file mode 100644 index 1296fcfa765..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_forward_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[history_forward_1.html] - [history.forward() with session history] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_no_argument.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_no_argument.html.ini deleted file mode 100644 index 93b88710b8f..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_no_argument.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[history_go_no_argument.html] - [history.go()] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_to_uri.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_to_uri.html.ini deleted file mode 100644 index d4dc04751d2..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_to_uri.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[history_go_to_uri.html] - [history.go() negative tests] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_zero.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_zero.html.ini deleted file mode 100644 index 2b0ff4704cf..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_zero.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[history_go_zero.html] - [history.go(0)] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/001.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/001.html.ini index 7ae291525bf..ad887840e4b 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/001.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/001.html.ini @@ -1,24 +1,5 @@ [001.html] - type: testharness - expected: ERROR - [Session history length on initial load] - expected: NOTRUN - - [Session history length on adding new iframe] - expected: NOTRUN - - [Navigating second iframe] - expected: NOTRUN - - [Traversing history back (1)] - expected: NOTRUN - - [Navigating first iframe] - expected: NOTRUN - - [Traversing history back (2)] - expected: NOTRUN - + expected: TIMEOUT [Traversing history forward] expected: NOTRUN diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/002.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/002.html.ini index 5b47fc659d5..d575094af59 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/002.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/002.html.ini @@ -1,12 +1,5 @@ [002.html] - type: testharness - expected: ERROR - [Session history length on initial load] - expected: NOTRUN - - [Session history length on adding new iframe] - expected: NOTRUN - + expected: TIMEOUT [Navigating second iframe] - expected: NOTRUN + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini index 87b07c3e670..10190c72bb4 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini @@ -1,4 +1,5 @@ [traverse_the_history_1.html] + type: testharness [Multiple history traversals from the same task] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini index 75d75b4cda2..5d17a8e9419 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini @@ -1,4 +1,3 @@ [traverse_the_history_2.html] [Multiple history traversals, last would be aborted] expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini index 385376c7321..d6188c03424 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini @@ -1,4 +1,3 @@ [traverse_the_history_4.html] [Multiple history traversals, last would be aborted] expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_unload_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_unload_1.html.ini deleted file mode 100644 index 42886146b6c..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_unload_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_unload_1.html] - [Traversing the history, unload event is fired on doucment] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_1.html.ini index d45557366ac..52142098cb0 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_1.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_1.html.ini @@ -1,4 +1,6 @@ [traverse_the_history_write_after_load_1.html] + type: testharness + expected: TIMEOUT [Traverse the history after document.write after the load event] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_2.html.ini deleted file mode 100644 index 07f625686be..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_2.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_write_after_load_2.html] - [Traverse the history back and forward when a history entry is written after the load event] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_onload_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_onload_1.html.ini deleted file mode 100644 index 1778e5a7aac..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_onload_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_write_onload_1.html] - [Traverse the history when a history entry is written in the load event] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_onload_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_onload_2.html.ini deleted file mode 100644 index 771592ec776..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_onload_2.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_write_onload_2.html] - [Traverse the history back and forward when a history entry is written in the load event] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write.html.ini deleted file mode 100644 index 34a93c104c3..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[reload_document_write.html] - type: testharness - [Reload document with document.written content] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_assign_during_load.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_assign_during_load.html.ini index e7844bf0924..e993ee4cd81 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_assign_during_load.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_assign_during_load.html.ini @@ -1,6 +1,5 @@ [scripted_click_assign_during_load.html] type: testharness - expected: ERROR [Assignment to location with click during load] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_location_assign_during_load.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_location_assign_during_load.html.ini deleted file mode 100644 index e63972ce41e..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_location_assign_during_load.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[scripted_click_location_assign_during_load.html] - type: testharness - expected: ERROR - [location.assign with click during load] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_form_submit_assign_during_load.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_form_submit_assign_during_load.html.ini index 40a4ab9d7c6..2338cd16001 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_form_submit_assign_during_load.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_form_submit_assign_during_load.html.ini @@ -1,6 +1,5 @@ [scripted_form_submit_assign_during_load.html] type: testharness - expected: ERROR [Assignment to location with form submit during load] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload.tentative.html.ini b/tests/wpt/metadata/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload.tentative.html.ini index 2d6b8fa2546..37a316d60be 100644 --- a/tests/wpt/metadata/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload.tentative.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload.tentative.html.ini @@ -1,5 +1,4 @@ [navigation-in-onload.tentative.html] - expected: ERROR [Navigation in onload handler] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini index fa72caf81c9..498fa7e4254 100644 --- a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini +++ b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini @@ -1,5 +1,3 @@ [cross-origin-objects-on-new-window.html] type: testharness - [Cross-origin behavior of Window and Location on new Window] - expected: FAIL - + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini deleted file mode 100644 index 808ae95d568..00000000000 --- a/tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[window_length.html] - type: testharness - [Opened window] - expected: FAIL - - [Iframe in opened window] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload.html.ini deleted file mode 100644 index 83bd871d725..00000000000 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[close_beforeunload.html] - type: testharness - expected: ERROR - [Running beforeunload handler in window.close()] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload.html.ini deleted file mode 100644 index 935275388a6..00000000000 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[close_unload.html] - type: testharness - expected: ERROR - [Running unload handler in window.close()] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini index 06deac2164e..5d28284b841 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini @@ -3,12 +3,3 @@ [first argument: absolute url] expected: FAIL - [first argument: empty url] - expected: FAIL - - [second argument: passing a non-empty name] - expected: FAIL - - [second argument: setting name after opening] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini index 110dbe90b25..bf50d59df41 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini @@ -1,3 +1,5 @@ [open-features-negative-innerwidth-innerheight.html] type: testharness - expected: ERROR + [HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini index ec97a9ade64..e150c9d848f 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini @@ -1,3 +1,5 @@ [open-features-negative-screenx-screeny.html] type: testharness - expected: ERROR + [HTML: window.open `features`: negative values for legacy `screenx`, `screeny`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini index 54ffbd242fc..ad8840fbb68 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini @@ -1,3 +1,5 @@ [open-features-negative-top-left.html] type: testharness - expected: ERROR + [HTML: window.open `features`: negative values for `top`, `left`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini index 8462dfff21f..d1ed9088b2b 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini @@ -1,3 +1,5 @@ [open-features-negative-width-height.html] type: testharness - expected: ERROR + [HTML: window.open `features`: negative values for `width`, `height`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini index 1781d871ff0..14e2d7593e4 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini @@ -1,3 +1,5 @@ [open-features-non-integer-height.html] type: testharness - expected: ERROR + [HTML: window.open `features`: non-integer values for feature `height`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini index 395635123fe..fed8fba4a3d 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini @@ -1,3 +1,5 @@ [open-features-non-integer-innerheight.html] type: testharness - expected: ERROR + [HTML: window.open `features`: non-integer values for legacy feature `innerheight`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini index 35e811141e9..8b35ad53d15 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini @@ -1,3 +1,5 @@ [open-features-non-integer-innerwidth.html] type: testharness - expected: ERROR + [HTML: window.open `features`: non-integer values for legacy feature `innerwidth`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini index 856ff7988a2..64bf0a8d345 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini @@ -1,3 +1,5 @@ [open-features-non-integer-left.html] type: testharness - expected: ERROR + [HTML: window.open `features`: non-integer values for feature `left`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini index 2a72b50b6d3..d6c76d5a550 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini @@ -1,3 +1,5 @@ [open-features-non-integer-screenx.html] type: testharness - expected: ERROR + [HTML: window.open `features`: non-integer values for legacy feature `screenx`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini index accc00b3b4c..bf6d1eb3fed 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini @@ -1,3 +1,5 @@ [open-features-non-integer-screeny.html] type: testharness - expected: ERROR + [HTML: window.open `features`: non-integer values for legacy feature `screeny`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini index d0be8627e99..252d8d53363 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini @@ -1,3 +1,5 @@ [open-features-non-integer-top.html] type: testharness - expected: ERROR + [HTML: window.open `features`: non-integer values for feature `top`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini index d17bba2270a..3cdeaa95031 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini @@ -1,3 +1,5 @@ [open-features-non-integer-width.html] type: testharness - expected: ERROR + [HTML: window.open `features`: non-integer values for feature `width`] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html.ini index 86bb0f4c578..2fa1da41f33 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html.ini @@ -1,23 +1,7 @@ [open-features-tokenization-noopener.html] - type: testharness - [tokenization should skip window features separators before `name`] - expected: FAIL - [feature `name` should be converted to ASCII lowercase] expected: FAIL - [after `name`, tokenization should skip window features separators that are not "=" or ","] - expected: FAIL - - [Tokenizing should ignore window feature separators except "," after initial "=" and before value] - expected: FAIL - - [Tokenizing should read characters until first window feature separator as `value`] - expected: FAIL - - ["noopener" should be based on name (key), not value] - expected: FAIL - [invalid feature names should not tokenize as "noopener"] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1.html.ini index 882045d2623..5a447d65400 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1.html.ini @@ -1,6 +1,5 @@ [discard_iframe_history_1.html] type: testharness - expected: ERROR [Removing iframe from document removes it from history] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_2.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_2.html.ini index 864fe9a325f..e032f4d1988 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_2.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_2.html.ini @@ -1,6 +1,5 @@ [discard_iframe_history_2.html] type: testharness - expected: ERROR [Removing iframe from document via innerHTML removes it from history] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_3.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_3.html.ini deleted file mode 100644 index 0d6e7127dab..00000000000 --- a/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_3.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[discard_iframe_history_3.html] - type: testharness - expected: ERROR - [Removing iframe from document removes it from history] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html.ini deleted file mode 100644 index 31ff6be6133..00000000000 --- a/tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[discard_iframe_history_4.html] - type: testharness - expected: ERROR - [Removing iframe from document removes it from history] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini index c18a4adb31e..e9b165f8c8d 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini @@ -335,9 +335,6 @@ [A SecurityError exception must be thrown when window.stop is accessed from a different origin.] expected: FAIL - [A SecurityError exception should not be thrown when window.opener is accessed from a different origin.] - expected: FAIL - [A SecurityError exception should not be thrown when window.blur is accessed from a different origin.] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/window-open-noopener.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/window-open-noopener.html.ini index 7844c379089..2e46ade9563 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/window-open-noopener.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/window-open-noopener.html.ini @@ -1,6 +1,5 @@ [window-open-noopener.html] type: testharness - expected: ERROR [window.open() with 'noopener' should not reuse existing target] expected: FAIL @@ -27,15 +26,13 @@ [window-open-noopener.html?_parent] - expected: ERROR [noopener window.open targeting _parent] - expected: NOTRUN + expected: FAIL [window-open-noopener.html?_top] - expected: ERROR [noopener window.open targeting _top] - expected: NOTRUN + expected: FAIL [window-open-noopener.html?indexed] @@ -63,7 +60,12 @@ [window-open-noopener.html?_self] - expected: ERROR [noopener window.open targeting _self] + expected: FAIL + + [noopener window.open targeting _parent] + expected: NOTRUN + + [noopener window.open targeting _top] expected: NOTRUN diff --git a/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini index c691ea29632..a58584d0006 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini @@ -5,9 +5,6 @@ [Window method: blur] expected: FAIL - [Window method: open] - expected: FAIL - [Window method: confirm] expected: FAIL @@ -23,9 +20,6 @@ [Window readonly attribute: applicationCache] expected: FAIL - [Window attribute: opener] - expected: FAIL - [Window attribute: onmousewheel] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html.ini b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html.ini index 0782cb9ad52..d97cd045a92 100644 --- a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html.ini @@ -1,3 +1,5 @@ [opener-closed.html] type: testharness expected: TIMEOUT + [An auxiliary browsing context should report `null` for `window.opener` when that browsing context is discarded] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html.ini b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html.ini index 45e3f839871..5f19cf016eb 100644 --- a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html.ini @@ -1,3 +1,5 @@ [opener-multiple.html] type: testharness expected: TIMEOUT + [An auxiliary browsing context should be able to open another auxiliary browsing context] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html.ini b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html.ini index 393a5059e9d..dabad35e2ee 100644 --- a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html.ini @@ -1,5 +1,6 @@ [opener-noreferrer.html] type: testharness + expected: TIMEOUT [Auxiliary browsing context created with `rel="noreferrer"` should report `window.opener` `null`] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener.html.ini b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener.html.ini index 13ce462c59d..59a38204b5e 100644 --- a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener.html.ini @@ -1,3 +1,7 @@ [opener.html] type: testharness expected: TIMEOUT + [Newly-created auxiliary browsing context should report `window.opener`] + expected: TIMEOUT + [Browsing context created with `window.open` should report `window.opener`] + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-002.html.ini b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-002.html.ini index f1158390a90..da270341b6f 100644 --- a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-002.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-002.html.ini @@ -1,5 +1,6 @@ [choose-_blank-002.html] type: testharness + expected: TIMEOUT [Context for opened noreferrer link targeted to "_blank" should not have opener reference] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-003.html.ini b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-003.html.ini new file mode 100644 index 00000000000..34eeff13c09 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-003.html.ini @@ -0,0 +1,6 @@ +[choose-_blank-003.html] + type: testharness + expected: TIMEOUT + [Context created by link targeting "_blank" should retain opener reference] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-default-001.html.ini b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-default-001.html.ini index ee09c5266fb..c57a3c272ef 100644 --- a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-default-001.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-default-001.html.ini @@ -2,7 +2,3 @@ type: testharness [A embedded browsing context has empty-string default name] expected: FAIL - - [A browsing context which is opened by window.open() method with '_blank' parameter has empty-string default name] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-existing-001.html.ini b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-existing-001.html.ini deleted file mode 100644 index 7ac26620d87..00000000000 --- a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-existing-001.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[choose-existing-001.html] - type: testharness - expected: TIMEOUT - [An existing browsing context must be chosen if the given name is the same as its name] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/browsers/windows/noreferrer-null-opener.html.ini b/tests/wpt/metadata/html/browsers/windows/noreferrer-null-opener.html.ini index 4df42589175..5b7cd2d3c82 100644 --- a/tests/wpt/metadata/html/browsers/windows/noreferrer-null-opener.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/noreferrer-null-opener.html.ini @@ -1,5 +1,6 @@ [noreferrer-null-opener.html] type: testharness + expected: TIMEOUT [rel=noreferrer nullifies window.opener] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/windows/noreferrer-window-name.html.ini b/tests/wpt/metadata/html/browsers/windows/noreferrer-window-name.html.ini index c7f0b290235..711a7a94e41 100644 --- a/tests/wpt/metadata/html/browsers/windows/noreferrer-window-name.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/noreferrer-window-name.html.ini @@ -1,6 +1,13 @@ [noreferrer-window-name.html] type: testharness expected: TIMEOUT - [rel=noreferrer and reuse of names] + + [Following a noreferrer link with a named target should not cause creation of a window that can be targeted by another noreferrer link with the same named target] expected: TIMEOUT + [Targeting a rel=noreferrer link at an existing named subframe should work] + expected: FAIL + + [Targeting a rel=noreferrer link at an existing named window should work] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html.ini b/tests/wpt/metadata/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html.ini index 90464594a18..7e01a712d91 100644 --- a/tests/wpt/metadata/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html.ini @@ -1,3 +1,5 @@ [targeting-cross-origin-nested-browsing-contexts.html] type: testharness expected: TIMEOUT + [Targeting nested browsing contexts] + expected: FAIL diff --git a/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini b/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini index 4106ed36649..37bb450ceb9 100644 --- a/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini +++ b/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini @@ -1,7 +1,4 @@ [usvstring-reflection.html] - [window.open : unpaired surrogate codepoint should be replaced with U+FFFD] - expected: FAIL - [anchor : unpaired surrogate codepoint should be replaced with U+FFFD] expected: FAIL @@ -17,12 +14,6 @@ [source : unpaired surrogate codepoint should be replaced with U+FFFD] expected: FAIL - [Document URLs: unpaired surrogate codepoint should be replaced with U+FFFD] - expected: FAIL - - [location.href : unpaired surrogate codepoint should be replaced with U+FFFD] - expected: FAIL - [sendBeacon URL: unpaired surrogate codepoint should not make any exceptions.] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index fc37df7e3fa..f42f518d257 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_escaping-1.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini index b21a85689bf..2cda2cc95ad 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_escaping-2.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 9df1ac56f2a..3f7e3e9544f 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_nonescaping-1.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index d43f38b40cd..3a32693ffa8 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_nonescaping-2.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/submission-checks.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/submission-checks.window.js.ini index 98bf6052cdb..1344c61fb3d 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/submission-checks.window.js.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/submission-checks.window.js.ini @@ -1,3 +1,11 @@ [submission-checks.window.html] type: testharness - expected: TIMEOUT + [<form> not connected to a document cannot navigate] + expected: FAIL + + [<form> not connected to a document after submit event cannot navigate] + expected: FAIL + + [<form> in a navigated document cannot navigate] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini index f57fa77bf15..8547a8949c4 100644 --- a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini +++ b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini @@ -2,5 +2,14 @@ type: testharness expected: ERROR [Check that rel=noopener with target=_self does a normal load] + expected: FAIL + + [Check that targeting of rel=noopener with a given name ignores an existing window with that name] expected: NOTRUN + [Check that rel=noopener with target=_parent does a normal load] + expected: FAIL + + [Check that rel=noopener with target=_top does a normal load] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index 6be42ab4108..5934ad00ad2 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -2,7 +2,7 @@ type: testharness expected: TIMEOUT [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] - expected: TIMEOUT + expected: FAIL [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT diff --git a/tests/wpt/metadata/websockets/unload-a-document/003.html.ini b/tests/wpt/metadata/websockets/unload-a-document/003.html.ini index 0f8dd7f068d..a479ae60b5a 100644 --- a/tests/wpt/metadata/websockets/unload-a-document/003.html.ini +++ b/tests/wpt/metadata/websockets/unload-a-document/003.html.ini @@ -1,6 +1,5 @@ [003.html] type: testharness - expected: TIMEOUT [WebSockets: navigating nested browsing context] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/websockets/unload-a-document/004.html.ini b/tests/wpt/metadata/websockets/unload-a-document/004.html.ini index 51828d4eabd..66180a29004 100644 --- a/tests/wpt/metadata/websockets/unload-a-document/004.html.ini +++ b/tests/wpt/metadata/websockets/unload-a-document/004.html.ini @@ -1,5 +1,5 @@ [004.html] type: testharness [WebSockets: navigating nested browsing context with closed websocket] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/webstorage/storage_local_window_open.html.ini b/tests/wpt/metadata/webstorage/storage_local_window_open.html.ini deleted file mode 100644 index 45787f2fd72..00000000000 --- a/tests/wpt/metadata/webstorage/storage_local_window_open.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[storage_local_window_open.html] - type: testharness - bug: https://github.com/servo/servo/issues/13241 - [A new window to make sure there is a copy of the previous window's localStorage, and that they do not diverge after a change] - expected: FAIL - diff --git a/tests/wpt/metadata/xhr/open-url-multi-window-6.htm.ini b/tests/wpt/metadata/xhr/open-url-multi-window-6.htm.ini index 50740305a60..59ebafd80c5 100644 --- a/tests/wpt/metadata/xhr/open-url-multi-window-6.htm.ini +++ b/tests/wpt/metadata/xhr/open-url-multi-window-6.htm.ini @@ -1,6 +1,6 @@ [open-url-multi-window-6.htm] type: testharness - expected: ERROR + expected: TIMEOUT [XMLHttpRequest: open() in document that is not fully active (but may be active) should throw] - expected: NOTRUN + expected: TIMEOUT |