aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory Terzian <gterzian@users.noreply.github.com>2018-04-22 12:58:30 +0800
committerGregory Terzian <gterzian@users.noreply.github.com>2018-08-11 01:12:55 +0200
commitf408b798c4666eddeb8b52d8965d7d4a6942e066 (patch)
tree70f4bd491b024ba11a9d6526ff6d49d815e58e88
parent3e96a322ae6797631fd784dfde4b92ffccefd85d (diff)
downloadservo-f408b798c4666eddeb8b52d8965d7d4a6942e066.tar.gz
servo-f408b798c4666eddeb8b52d8965d7d4a6942e066.zip
implement window.open, create auxiliary browsing context
-rw-r--r--components/constellation/constellation.rs61
-rw-r--r--components/embedder_traits/lib.rs6
-rw-r--r--components/script/dom/htmlanchorelement.rs80
-rwxr-xr-xcomponents/script/dom/htmlformelement.rs55
-rw-r--r--components/script/dom/webidls/Window.webidl4
-rw-r--r--components/script/dom/window.rs9
-rw-r--r--components/script/dom/windowproxy.rs143
-rw-r--r--components/script/script_thread.rs12
-rw-r--r--components/script_traits/lib.rs13
-rw-r--r--components/script_traits/script_msg.rs4
-rw-r--r--ports/servo/browser.rs12
-rw-r--r--tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini9
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-aux-frame-navigation.sub.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-main-frame-navigation.sub.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/window-name-after-same-origin-aux-frame-navigation.sub.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/006.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/008.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/010.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/011.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_submit.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/history_back_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/history_forward_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_no_argument.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_to_uri.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/history_go_zero.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/001.html.ini21
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/joint_session_history/002.html.ini11
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini1
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini1
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini1
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_unload_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_after_load_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_onload_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_write_onload_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write.html.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_assign_during_load.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_click_location_assign_during_load.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/scripted_form_submit_assign_during_load.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload.tentative.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html.ini8
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini9
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html.ini16
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_2.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_3.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/window-open-noopener.html.ini14
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-002.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-_blank-003.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-default-001.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/windows/browsing-context-names/choose-existing-001.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/windows/noreferrer-null-opener.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/windows/noreferrer-window-name.html.ini9
-rw-r--r--tests/wpt/metadata/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html.ini2
-rw-r--r--tests/wpt/metadata/html/dom/usvstring-reflection.html.ini9
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/submission-checks.window.js.ini10
-rw-r--r--tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini9
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini2
-rw-r--r--tests/wpt/metadata/websockets/unload-a-document/003.html.ini3
-rw-r--r--tests/wpt/metadata/websockets/unload-a-document/004.html.ini2
-rw-r--r--tests/wpt/metadata/webstorage/storage_local_window_open.html.ini6
-rw-r--r--tests/wpt/metadata/xhr/open-url-multi-window-6.htm.ini4
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