aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Jeffrey <ajeffrey@mozilla.com>2017-02-09 14:28:37 -0600
committerAlan Jeffrey <ajeffrey@mozilla.com>2017-03-14 14:36:03 -0500
commit1f61a549a35ae317479f914c454fbee3580869d6 (patch)
tree1bdfd0d2c1da680af0ffd21278fe439558417061
parent628cd7de6d6229af61d44b586da74176c21cc2ae (diff)
downloadservo-1f61a549a35ae317479f914c454fbee3580869d6.tar.gz
servo-1f61a549a35ae317479f914c454fbee3580869d6.zip
Added some same-origin-domain checks.
-rw-r--r--components/constellation/constellation.rs10
-rw-r--r--components/net_traits/pub_domains.rs11
-rw-r--r--components/script/devtools.rs3
-rw-r--r--components/script/dom/document.rs5
-rw-r--r--components/script/dom/history.rs3
-rw-r--r--components/script/dom/htmliframeelement.rs40
-rw-r--r--components/script/dom/location.rs114
-rw-r--r--components/script/dom/webidls/Location.webidl28
-rw-r--r--components/script/dom/window.rs17
-rw-r--r--components/script/script_thread.rs11
-rw-r--r--components/script/webdriver_handlers.rs21
-rw-r--r--components/url/lib.rs2
-rw-r--r--tests/wpt/metadata/FileAPI/url/origin.sub.html.ini3
-rw-r--r--tests/wpt/metadata/cors/remote-origin.htm.ini91
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/security_location_0.htm.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.html.ini24
-rw-r--r--tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_script.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/additions-to-the-steps-to-clone-a-node/templates-copy-document-owner.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-document-type.html.ini8
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-test-002.html.ini12
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents.html.ini14
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/innerhtml-on-templates/innerhtml.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/content-attribute.html.ini8
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini11
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-content-node-document.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-body.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-frameset.html.ini11
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-head.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/generating-of-implied-end-tags.html.ini8
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-body-token.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-frameset-token.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-head-token.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-html-token.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/start-tag-html.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/template-end-tag-without-start-one.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-frameset-insertion-mode/end-tag-frameset.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags.html.ini8
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/template-end-tag-without-start-one.html.ini5
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/appending-to-a-template/template-child-nodes.html.ini8
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html.ini11
-rw-r--r--tests/wpt/metadata/navigation-timing/test_unique_performance_objects.html.ini3
-rw-r--r--tests/wpt/mozilla/meta/MANIFEST.json2
-rw-r--r--tests/wpt/mozilla/tests/mozilla/referrer-policy/generic/common.js4
45 files changed, 223 insertions, 348 deletions
diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs
index 391fa1a679d..ca2f871472f 100644
--- a/components/constellation/constellation.rs
+++ b/components/constellation/constellation.rs
@@ -108,7 +108,7 @@ use servo_config::opts;
use servo_config::prefs::PREFS;
use servo_rand::{Rng, SeedableRng, ServoRng, random};
use servo_remutex::ReentrantMutex;
-use servo_url::ServoUrl;
+use servo_url::{Host, ServoUrl};
use std::borrow::ToOwned;
use std::collections::{HashMap, VecDeque};
use std::iter::once;
@@ -229,13 +229,13 @@ pub struct Constellation<Message, LTF, STF> {
/// event loop for each registered domain name (aka eTLD+1) in
/// each top-level frame. We store the event loops in a map
/// indexed by top-level frame id (as a `FrameId`) and registered
- /// domain name (as a `String`) to event loops. This double
+ /// domain name (as a `Host`) to event loops. This double
/// indirection ensures that separate tabs do not share event
/// loops, even if the same domain is loaded in each.
/// It is important that scripts with the same eTLD+1
/// share an event loop, since they can use `document.domain`
/// to become same-origin, at which point they can share DOM objects.
- event_loops: HashMap<FrameId, HashMap<String, Weak<EventLoop>>>,
+ event_loops: HashMap<FrameId, HashMap<Host, Weak<EventLoop>>>,
/// The set of all the pipelines in the browser.
/// (See the `pipeline` module for more details.)
@@ -606,10 +606,10 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
None => (None, None),
Some(host) => {
let event_loop = self.event_loops.get(&top_level_frame_id)
- .and_then(|map| map.get(host))
+ .and_then(|map| map.get(&host))
.and_then(|weak| weak.upgrade());
match event_loop {
- None => (None, Some(String::from(host))),
+ None => (None, Some(host)),
Some(event_loop) => (Some(event_loop.clone()), None),
}
},
diff --git a/components/net_traits/pub_domains.rs b/components/net_traits/pub_domains.rs
index 47ebe6f9775..c98f10d90eb 100644
--- a/components/net_traits/pub_domains.rs
+++ b/components/net_traits/pub_domains.rs
@@ -15,7 +15,7 @@
//! those cases are not present.
use servo_config::resource_files::read_resource_file;
-use servo_url::ServoUrl;
+use servo_url::{Host, ImmutableOrigin, ServoUrl};
use std::collections::HashSet;
use std::iter::FromIterator;
use std::str::from_utf8;
@@ -146,6 +146,11 @@ pub fn is_reg_domain(domain: &str) -> bool {
/// Returns None if the URL has no host name.
/// Returns the registered suffix for the host name if it is a domain.
/// Leaves the host name alone if it is an IP address.
-pub fn reg_host<'a>(url: &'a ServoUrl) -> Option<&'a str> {
- url.domain().map(reg_suffix).or(url.host_str())
+pub fn reg_host<'a>(url: &'a ServoUrl) -> Option<Host> {
+ match url.origin() {
+ ImmutableOrigin::Tuple(_, Host::Domain(domain), _) => Some(Host::Domain(String::from(reg_suffix(&*domain)))),
+ ImmutableOrigin::Tuple(_, Host::Ipv4(address), _) => Some(Host::Ipv4(address)),
+ ImmutableOrigin::Tuple(_, Host::Ipv6(address), _) => Some(Host::Ipv6(address)),
+ ImmutableOrigin::Opaque(_) => None,
+ }
}
diff --git a/components/script/devtools.rs b/components/script/devtools.rs
index b0f585d8db8..7172f2bdf9d 100644
--- a/components/script/devtools.rs
+++ b/components/script/devtools.rs
@@ -10,7 +10,6 @@ use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::CSSStyleDeclar
use dom::bindings::codegen::Bindings::DOMRectBinding::DOMRectMethods;
use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
use dom::bindings::codegen::Bindings::ElementBinding::ElementMethods;
-use dom::bindings::codegen::Bindings::LocationBinding::LocationMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::conversions::{ConversionResult, FromJSValConvertible, jsstring_to_str};
use dom::bindings::inheritance::Castable;
@@ -261,6 +260,6 @@ pub fn handle_request_animation_frame(documents: &Documents,
pub fn handle_reload(documents: &Documents,
id: PipelineId) {
if let Some(win) = documents.find_window(id) {
- win.Location().Reload();
+ win.Location().reload_without_origin_check();
}
}
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 29d7227dee9..ac3b715802f 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -3396,7 +3396,10 @@ impl DocumentMethods for Document {
let entry_responsible_document = GlobalScope::entry().as_window().Document();
- if !self.origin.same_origin(&entry_responsible_document.origin) {
+ // This check should probably be same-origin-domain
+ // https://github.com/whatwg/html/issues/2282
+ // https://github.com/whatwg/html/pull/2288
+ if !self.origin.same_origin_domain(&entry_responsible_document.origin) {
// Step 4.
return Err(Error::Security);
}
diff --git a/components/script/dom/history.rs b/components/script/dom/history.rs
index 0e1aea4bf10..f034a604174 100644
--- a/components/script/dom/history.rs
+++ b/components/script/dom/history.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::HistoryBinding;
use dom::bindings::codegen::Bindings::HistoryBinding::HistoryMethods;
-use dom::bindings::codegen::Bindings::LocationBinding::LocationMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root};
@@ -65,7 +64,7 @@ impl HistoryMethods for History {
} else if delta < 0 {
TraversalDirection::Back(-delta as usize)
} else {
- self.window.Location().Reload();
+ self.window.Location().reload_without_origin_check();
return;
};
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index dd8c13de449..5e9891bdcc4 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -327,20 +327,6 @@ impl HTMLIFrameElement {
false
}
}
-
- pub fn get_content_window(&self) -> Option<Root<Window>> {
- self.pipeline_id.get()
- .and_then(|pipeline_id| ScriptThread::find_document(pipeline_id))
- .and_then(|document| {
- let current_global = GlobalScope::current();
- let current_document = current_global.as_window().Document();
- if document.origin().same_origin(current_document.origin()) {
- Some(Root::from_ref(document.window()))
- } else {
- None
- }
- })
- }
}
pub trait HTMLIFrameElementLayoutMethods {
@@ -512,15 +498,33 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement {
// https://html.spec.whatwg.org/multipage/#dom-iframe-contentwindow
fn GetContentWindow(&self) -> Option<Root<BrowsingContext>> {
- match self.get_content_window() {
- Some(ref window) => Some(window.browsing_context()),
- None => None
+ if self.pipeline_id.get().is_some() {
+ ScriptThread::find_browsing_context(self.frame_id)
+ } else {
+ None
}
}
// https://html.spec.whatwg.org/multipage/#dom-iframe-contentdocument
+ // https://html.spec.whatwg.org/multipage/#concept-bcc-content-document
fn GetContentDocument(&self) -> Option<Root<Document>> {
- self.get_content_window().map(|window| window.Document())
+ // Step 1.
+ let pipeline_id = match self.pipeline_id.get() {
+ None => return None,
+ Some(pipeline_id) => pipeline_id,
+ };
+ // Step 2-3.
+ let document = match ScriptThread::find_document(pipeline_id) {
+ None => return None,
+ Some(document) => document,
+ };
+ // Step 4.
+ let current = GlobalScope::current().as_window().Document();
+ if !current.origin().same_origin_domain(document.origin()) {
+ return None;
+ }
+ // Step 5.
+ Some(document)
}
// Experimental mozbrowser implementation is based on the webidl
diff --git a/components/script/dom/location.rs b/components/script/dom/location.rs
index d06ec02d4a2..3e3a3176cf0 100644
--- a/components/script/dom/location.rs
+++ b/components/script/dom/location.rs
@@ -4,10 +4,12 @@
use dom::bindings::codegen::Bindings::LocationBinding;
use dom::bindings::codegen::Bindings::LocationBinding::LocationMethods;
-use dom::bindings::error::{Error, ErrorResult};
+use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods;
+use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::{DOMString, USVString};
+use dom::globalscope::GlobalScope;
use dom::urlhelper::UrlHelper;
use dom::window::Window;
use dom_struct::dom_struct;
@@ -43,11 +45,27 @@ impl Location {
setter(&mut url, value);
self.window.load_url(url, false, false, None);
}
+
+ fn check_same_origin_domain(&self) -> ErrorResult {
+ let entry_document = GlobalScope::entry().as_window().Document();
+ let this_document = self.window.Document();
+ if entry_document.origin().same_origin_domain(this_document.origin()) {
+ Ok(())
+ } else {
+ Err(Error::Security)
+ }
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-location-reload
+ pub fn reload_without_origin_check(&self) {
+ self.window.load_url(self.get_url(), true, true, None);
+ }
}
impl LocationMethods for Location {
// https://html.spec.whatwg.org/multipage/#dom-location-assign
fn Assign(&self, url: USVString) -> ErrorResult {
+ // Note: no call to self.check_same_origin_domain()
// TODO: per spec, we should use the _API base URL_ specified by the
// _entry settings object_.
let base_url = self.window.get_url();
@@ -60,12 +78,15 @@ impl LocationMethods for Location {
}
// https://html.spec.whatwg.org/multipage/#dom-location-reload
- fn Reload(&self) {
+ fn Reload(&self) -> ErrorResult {
+ try!(self.check_same_origin_domain());
self.window.load_url(self.get_url(), true, true, None);
+ Ok(())
}
// https://html.spec.whatwg.org/multipage/#dom-location-replace
fn Replace(&self, url: USVString) -> ErrorResult {
+ // Note: no call to self.check_same_origin_domain()
// TODO: per spec, we should use the _API base URL_ specified by the
// _entry settings object_.
let base_url = self.window.get_url();
@@ -78,97 +99,124 @@ impl LocationMethods for Location {
}
// https://html.spec.whatwg.org/multipage/#dom-location-hash
- fn Hash(&self) -> USVString {
- UrlHelper::Hash(&self.get_url())
+ fn GetHash(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Hash(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-hash
- fn SetHash(&self, mut value: USVString) {
+ fn SetHash(&self, mut value: USVString) -> ErrorResult {
if value.0.is_empty() {
value = USVString("#".to_owned());
}
+ try!(self.check_same_origin_domain());
self.set_url_component(value, UrlHelper::SetHash);
+ Ok(())
}
// https://html.spec.whatwg.org/multipage/#dom-location-host
- fn Host(&self) -> USVString {
- UrlHelper::Host(&self.get_url())
+ fn GetHost(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Host(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-host
- fn SetHost(&self, value: USVString) {
+ fn SetHost(&self, value: USVString) -> ErrorResult {
+ try!(self.check_same_origin_domain());
self.set_url_component(value, UrlHelper::SetHost);
+ Ok(())
}
// https://html.spec.whatwg.org/multipage/#dom-location-origin
- fn Origin(&self) -> USVString {
- UrlHelper::Origin(&self.get_url())
+ fn GetOrigin(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Origin(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-hostname
- fn Hostname(&self) -> USVString {
- UrlHelper::Hostname(&self.get_url())
+ fn GetHostname(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Hostname(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-hostname
- fn SetHostname(&self, value: USVString) {
+ fn SetHostname(&self, value: USVString) -> ErrorResult {
+ try!(self.check_same_origin_domain());
self.set_url_component(value, UrlHelper::SetHostname);
+ Ok(())
}
// https://html.spec.whatwg.org/multipage/#dom-location-href
- fn Href(&self) -> USVString {
- UrlHelper::Href(&self.get_url())
+ fn GetHref(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Href(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-href
- fn SetHref(&self, value: USVString) {
- if let Ok(url) = self.window.get_url().join(&value.0) {
- self.window.load_url(url, false, false, None);
- }
+ fn SetHref(&self, value: USVString) -> ErrorResult {
+ // Note: no call to self.check_same_origin_domain()
+ let url = match self.window.get_url().join(&value.0) {
+ Ok(url) => url,
+ Err(e) => return Err(Error::Type(format!("Couldn't parse URL: {}", e))),
+ };
+ self.window.load_url(url, false, false, None);
+ Ok(())
}
// https://html.spec.whatwg.org/multipage/#dom-location-pathname
- fn Pathname(&self) -> USVString {
- UrlHelper::Pathname(&self.get_url())
+ fn GetPathname(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Pathname(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-pathname
- fn SetPathname(&self, value: USVString) {
+ fn SetPathname(&self, value: USVString) -> ErrorResult {
+ try!(self.check_same_origin_domain());
self.set_url_component(value, UrlHelper::SetPathname);
+ Ok(())
}
// https://html.spec.whatwg.org/multipage/#dom-location-port
- fn Port(&self) -> USVString {
- UrlHelper::Port(&self.get_url())
+ fn GetPort(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Port(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-port
- fn SetPort(&self, value: USVString) {
+ fn SetPort(&self, value: USVString) -> ErrorResult {
+ try!(self.check_same_origin_domain());
self.set_url_component(value, UrlHelper::SetPort);
+ Ok(())
}
// https://html.spec.whatwg.org/multipage/#dom-location-protocol
- fn Protocol(&self) -> USVString {
- UrlHelper::Protocol(&self.get_url())
+ fn GetProtocol(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Protocol(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-protocol
- fn SetProtocol(&self, value: USVString) {
+ fn SetProtocol(&self, value: USVString) -> ErrorResult {
+ try!(self.check_same_origin_domain());
self.set_url_component(value, UrlHelper::SetProtocol);
+ Ok(())
}
// https://html.spec.whatwg.org/multipage/#dom-location-href
- fn Stringifier(&self) -> DOMString {
- DOMString::from(self.Href().0)
+ fn Stringifier(&self) -> Fallible<DOMString> {
+ Ok(DOMString::from(try!(self.GetHref()).0))
}
// https://html.spec.whatwg.org/multipage/#dom-location-search
- fn Search(&self) -> USVString {
- UrlHelper::Search(&self.get_url())
+ fn GetSearch(&self) -> Fallible<USVString> {
+ try!(self.check_same_origin_domain());
+ Ok(UrlHelper::Search(&self.get_url()))
}
// https://html.spec.whatwg.org/multipage/#dom-location-search
- fn SetSearch(&self, value: USVString) {
+ fn SetSearch(&self, value: USVString) -> ErrorResult {
+ try!(self.check_same_origin_domain());
self.set_url_component(value, UrlHelper::SetSearch);
+ Ok(())
}
}
diff --git a/components/script/dom/webidls/Location.webidl b/components/script/dom/webidls/Location.webidl
index d611a20b883..6413bd3846a 100644
--- a/components/script/dom/webidls/Location.webidl
+++ b/components/script/dom/webidls/Location.webidl
@@ -4,26 +4,24 @@
// https://html.spec.whatwg.org/multipage/#location
[Exposed=Window, Unforgeable] interface Location {
- /*stringifier*/ attribute USVString href;
- readonly attribute USVString origin;
- attribute USVString protocol;
- attribute USVString host;
- attribute USVString hostname;
- attribute USVString port;
- attribute USVString pathname;
- attribute USVString search;
- attribute USVString hash;
+ /*stringifier*/ [Throws] attribute USVString href;
+ [Throws] readonly attribute USVString origin;
+ [Throws] attribute USVString protocol;
+ [Throws] attribute USVString host;
+ [Throws] attribute USVString hostname;
+ [Throws] attribute USVString port;
+ [Throws] attribute USVString pathname;
+ [Throws] attribute USVString search;
+ [Throws] attribute USVString hash;
- [Throws]
- void assign(USVString url);
- [Throws]
- void replace(USVString url);
- void reload();
+ [Throws] void assign(USVString url);
+ [Throws] void replace(USVString url);
+ [Throws] void reload();
//[SameObject] readonly attribute USVString[] ancestorOrigins;
// This is only doing as well as gecko right now.
// https://github.com/servo/servo/issues/7590 is on file for
// adding attribute stringifier support.
- stringifier;
+ [Throws] stringifier;
};
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index fcb7f85d4cf..2be65b4160c 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -42,7 +42,7 @@ use dom::location::Location;
use dom::mediaquerylist::{MediaQueryList, WeakMediaQueryListVec};
use dom::messageevent::MessageEvent;
use dom::navigator::Navigator;
-use dom::node::{Node, from_untrusted_node_address, window_from_node, NodeDamage};
+use dom::node::{Node, from_untrusted_node_address, document_from_node, window_from_node, NodeDamage};
use dom::performance::Performance;
use dom::promise::Promise;
use dom::screen::Screen;
@@ -528,7 +528,20 @@ impl WindowMethods for Window {
// https://html.spec.whatwg.org/multipage/#dom-frameelement
fn GetFrameElement(&self) -> Option<Root<Element>> {
- self.browsing_context().frame_element().map(Root::from_ref)
+ // Steps 1-3.
+ if let Some(context) = self.browsing_context.get() {
+ // Step 4-5.
+ if let Some(container) = context.frame_element() {
+ // Step 6.
+ let container_doc = document_from_node(container);
+ let current_doc = GlobalScope::current().as_window().Document();
+ if current_doc.origin().same_origin_domain(container_doc.origin()) {
+ // Step 7.
+ return Some(Root::from_ref(container));
+ }
+ }
+ }
+ None
}
// https://html.spec.whatwg.org/multipage/#dom-navigator
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index e877e904ceb..15604c5b7cf 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -27,7 +27,6 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::CSSStyleDeclarationMethods;
use dom::bindings::codegen::Bindings::DocumentBinding::{DocumentMethods, DocumentReadyState};
use dom::bindings::codegen::Bindings::EventBinding::EventInit;
-use dom::bindings::codegen::Bindings::LocationBinding::LocationMethods;
use dom::bindings::codegen::Bindings::TransitionEventBinding::TransitionEventInit;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::conversions::{ConversionResult, FromJSValConvertible, StringificationBehavior};
@@ -644,6 +643,14 @@ impl ScriptThread {
}))
}
+ pub fn find_browsing_context(id: FrameId) -> Option<Root<BrowsingContext>> {
+ SCRIPT_THREAD_ROOT.with(|root| root.get().and_then(|script_thread| {
+ let script_thread = unsafe { &*script_thread };
+ script_thread.browsing_contexts.borrow().get(&id)
+ .map(|context| Root::from_ref(&**context))
+ }))
+ }
+
/// Creates a new script thread.
pub fn new(state: InitialScriptState,
port: Receiver<MainThreadScriptMsg>,
@@ -2101,7 +2108,7 @@ impl ScriptThread {
fn handle_reload(&self, pipeline_id: PipelineId) {
let window = self.documents.borrow().find_window(pipeline_id);
if let Some(window) = window {
- window.Location().Reload();
+ window.Location().reload_without_origin_check();
}
}
diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs
index e1599d7caef..6618bac4241 100644
--- a/components/script/webdriver_handlers.rs
+++ b/components/script/webdriver_handlers.rs
@@ -113,29 +113,24 @@ pub fn handle_get_frame_id(documents: &Documents,
pipeline: PipelineId,
webdriver_frame_id: WebDriverFrameId,
reply: IpcSender<Result<Option<PipelineId>, ()>>) {
- let window = match webdriver_frame_id {
+ let result = match webdriver_frame_id {
WebDriverFrameId::Short(_) => {
// This isn't supported yet
Ok(None)
},
WebDriverFrameId::Element(x) => {
- match find_node_by_unique_id(documents, pipeline, x) {
- Some(ref node) => {
- match node.downcast::<HTMLIFrameElement>() {
- Some(ref elem) => Ok(elem.get_content_window()),
- None => Err(())
- }
- },
- None => Err(())
- }
+ find_node_by_unique_id(documents, pipeline, x)
+ .and_then(|node| node.downcast::<HTMLIFrameElement>().map(|elem| elem.pipeline_id()))
+ .ok_or(())
},
WebDriverFrameId::Parent => {
- documents.find_window(pipeline).map(|window| window.parent()).ok_or(())
+ documents.find_window(pipeline)
+ .map(|window| window.parent_info().map(|(parent_id, _)| parent_id))
+ .ok_or(())
}
};
- let frame_id = window.map(|x| x.map(|x| x.upcast::<GlobalScope>().pipeline_id()));
- reply.send(frame_id).unwrap()
+ reply.send(result).unwrap()
}
pub fn handle_find_element_css(documents: &Documents, pipeline: PipelineId, selector: String,
diff --git a/components/url/lib.rs b/components/url/lib.rs
index e8d8d363fbf..9e3948fc5ab 100644
--- a/components/url/lib.rs
+++ b/components/url/lib.rs
@@ -28,6 +28,8 @@ use std::path::Path;
use std::sync::Arc;
use url::{Url, Position};
+pub use url::Host;
+
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ServoUrl(Arc<Url>);
diff --git a/tests/wpt/metadata/FileAPI/url/origin.sub.html.ini b/tests/wpt/metadata/FileAPI/url/origin.sub.html.ini
index c08adebef97..1dc19da4374 100644
--- a/tests/wpt/metadata/FileAPI/url/origin.sub.html.ini
+++ b/tests/wpt/metadata/FileAPI/url/origin.sub.html.ini
@@ -1,5 +1,6 @@
[origin.sub.html]
type: testharness
+ expected: TIMEOUT
[Verify serialization of non-ascii origin in Blob URLs]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/cors/remote-origin.htm.ini b/tests/wpt/metadata/cors/remote-origin.htm.ini
index 57a120246c1..e9a518810d1 100644
--- a/tests/wpt/metadata/cors/remote-origin.htm.ini
+++ b/tests/wpt/metadata/cors/remote-origin.htm.ini
@@ -1,137 +1,138 @@
[remote-origin.htm]
type: testharness
+ expected: TIMEOUT
[Allow origin: *]
- expected: FAIL
+ expected: TIMEOUT
[Allow origin: _*__]
- expected: FAIL
+ expected: TIMEOUT
[Allow origin: [tab\]*]
- expected: FAIL
+ expected: TIMEOUT
[Allow origin: http://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Allow origin: _http://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Allow origin: _http://www1.web-platform.test:8000___[tab\]_]
- expected: FAIL
+ expected: TIMEOUT
[Allow origin: [tab\]http://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: //www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: ://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: ftp://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http:://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http:/www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http:www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000?]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000/]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000_/]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000#]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000%23]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000:80]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000,_*]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000\\0]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: HTTP://WWW1.WEB-PLATFORM.TEST:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: HTTP://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://WWW1.WEB-PLATFORM.TEST:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: -]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: **]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: \\0*]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: *\\0]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: '*']
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: "*"]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: *_*]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: *http://*]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: *http://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: *_http://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: *,_http://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: \\0http://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: null_http://www1.web-platform.test:8000]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://example.net]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: null]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: ]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://web-platform.test:8000/cors/remote-origin.htm]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://web-platform.test:8000/cors/]
- expected: FAIL
+ expected: TIMEOUT
[Disallow origin: http://www1.web-platform.test:8000/cors/]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/security_location_0.htm.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/security_location_0.htm.ini
deleted file mode 100644
index eb94f650336..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-location-interface/security_location_0.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[security_location_0.htm]
- type: testharness
- [Accessing location object from different origins doesn't raise SECURITY_ERR exception]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.html.ini
index 5fb19d68ce2..4fc54b9edaa 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.html.ini
@@ -342,39 +342,15 @@
[A SecurityError exception should not be thrown when window.closed is accessed from a different origin.]
expected: FAIL
- [A SecurityError exception should not be thrown when window.frames is accessed from a different origin.]
- expected: FAIL
-
[A SecurityError exception should not be thrown when window.length is accessed from a different origin.]
expected: FAIL
- [A SecurityError exception should not be thrown when window.location 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.parent is accessed from a different origin.]
- expected: FAIL
-
- [A SecurityError exception should not be thrown when window.self is accessed from a different origin.]
- expected: FAIL
-
- [A SecurityError exception should not be thrown when window.top is accessed from a different origin.]
- expected: FAIL
-
- [A SecurityError exception should not be thrown when window.window 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
- [A SecurityError exception should not be thrown when window.close is accessed from a different origin.]
- expected: FAIL
-
[A SecurityError exception should not be thrown when window.focus is accessed from a different origin.]
expected: FAIL
- [A SecurityError exception should not be thrown when window.postMessage is accessed from a different origin.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.html.ini b/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.html.ini
index 14dcf4b686f..96ec6c1081b 100644
--- a/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.html.ini
+++ b/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.html.ini
@@ -1,5 +1,6 @@
[frameElement.html]
type: testharness
+ expected: TIMEOUT
[The window's frameElement attribute must return its container element if it is a nested browsing context]
expected: FAIL
@@ -7,5 +8,5 @@
expected: FAIL
[The window's frameElement attribute must return null if the container's document does not have the same effective script origin]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini
deleted file mode 100644
index 92316d4d4a7..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe-load-event.html]
- type: testharness
- [load event of blob URL]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_script.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_script.html.ini
index 10e46d478e3..be4402dbca6 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_script.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_script.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_allow_script.html]
type: testharness
- expected: ERROR
+ expected: TIMEOUT
[iframe_sandbox_allow_scripts]
expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/additions-to-the-steps-to-clone-a-node/templates-copy-document-owner.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/additions-to-the-steps-to-clone-a-node/templates-copy-document-owner.html.ini
deleted file mode 100644
index 40f9199c5df..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/additions-to-the-steps-to-clone-a-node/templates-copy-document-owner.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[templates-copy-document-owner.html]
- type: testharness
- [ownerDocument of cloned template content is set to template content owner. Test loading HTML document from file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-document-type.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-document-type.html.ini
deleted file mode 100644
index 059169ec00a..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-document-type.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[template-contents-owner-document-type.html]
- type: testharness
- [The template contents owner document type is HTML document (case when document has browsing context and the template is created by HTML parser)]
- expected: FAIL
-
- [The template contents owner document type is HTML document (case when document has browsing context and the template is created by createElement())]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-test-002.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-test-002.html.ini
deleted file mode 100644
index e5075dc283d..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-test-002.html.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[template-contents-owner-test-002.html]
- type: testharness
- disabled: https://github.com/servo/servo/issues/9723
- [The template contents owner document must be different from template owner document, which has browsing context. Template element is created by createElement()]
- expected: FAIL
-
- [The template contents owner document must be different from template owner document, which has browsing context. Template element is created via innerHTML]
- expected: FAIL
-
- [The template contents owner document must be different from template owner document, which has browsing context. Template element is created by HTML parser]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents.html.ini
deleted file mode 100644
index f394f7448a2..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/definitions/template-contents.html.ini
+++ /dev/null
@@ -1,14 +0,0 @@
-[template-contents.html]
- type: testharness
- [The template contents must be a DocumentFragment (the empty template tag inside HTML file loaded in iframe)]
- expected: FAIL
-
- [The template contents must be a DocumentFragment (non empty template tag inside HTML file loaded in iframe)]
- expected: FAIL
-
- [The template contents must be a DocumentFragment (the template tag with some text inside HTML file loaded in iframe)]
- expected: FAIL
-
- [The template contents must be a DocumentFragment (the template tag with nested template tag inside HTML file loaded in iframe)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/innerhtml-on-templates/innerhtml.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/innerhtml-on-templates/innerhtml.html.ini
deleted file mode 100644
index 450eda06a9e..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/innerhtml-on-templates/innerhtml.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[innerhtml.html]
- type: testharness
- [innerHTML of template element replaces all referenced by the content attribute. Test loading of HTML document from a file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/content-attribute.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/content-attribute.html.ini
deleted file mode 100644
index 5a2af5e1653..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/content-attribute.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[content-attribute.html]
- type: testharness
- [Content attribute of template element is read-only. Text value of content attribute of template tag should be ignored, when loading document from a file]
- expected: FAIL
-
- [Content attribute of template element is read-only. Test content attribute of a document loaded from a file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini
deleted file mode 100644
index 997d4d6c63a..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[node-document-changes.html]
- type: testharness
- [Changing of template element's node document. Test document loaded from a file]
- expected: FAIL
-
- [Changing of template element's node document. Test the case when both old and new owner documents of template element have browsing context]
- expected: FAIL
-
- [Changing of template element's node document. Adobt template element into a document that has a browsing context]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-content-node-document.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-content-node-document.html.ini
deleted file mode 100644
index ac620e1efbd..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-content-node-document.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[template-content-node-document.html]
- type: testharness
- [Node document of the template content attribute must be template contents owner. Load HTML file with multiple template elements]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-body.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-body.html.ini
deleted file mode 100644
index 77aa831c1a8..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-body.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[template-descendant-body.html]
- type: testharness
- [Template element as a descendant of the body element. Test loading from a file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-frameset.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-frameset.html.ini
deleted file mode 100644
index 9499e6c5abe..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-frameset.html.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[template-descendant-frameset.html]
- type: testharness
- [Template element as a descendant of the frameset element. Test loading from a file]
- expected: FAIL
-
- [Template element as a descendant of the frameset element. Test template element is assigned to frameset's innerHTML)]
- expected: FAIL
-
- [Template element as a descendant of the frameset element. Test template element appended to frameset by appendChild()]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-head.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-head.html.ini
deleted file mode 100644
index ae1482660d7..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-template-element/template-element/template-descendant-head.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[template-descendant-head.html]
- type: testharness
- [Template element as a descendant of the head element. Test loading from a file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/generating-of-implied-end-tags.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/generating-of-implied-end-tags.html.ini
deleted file mode 100644
index f45ba45ce66..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/generating-of-implied-end-tags.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[generating-of-implied-end-tags.html]
- type: testharness
- [Generating of implied end tags. Test table elements. Loading of HTML document from a file]
- expected: FAIL
-
- [Generating of implied end tags. Test div element. Loading of HTML document from a file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-body-token.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-body-token.html.ini
deleted file mode 100644
index fc735163558..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-body-token.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[ignore-body-token.html]
- type: testharness
- [Ignore BODY token. Test loading a HTML file with BODY tag inside template]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-frameset-token.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-frameset-token.html.ini
deleted file mode 100644
index 38e9ede8421..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-frameset-token.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[ignore-frameset-token.html]
- type: testharness
- [Ignore frameset token. Test loading a HTML file with FRAMESET tag inside template]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-head-token.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-head-token.html.ini
deleted file mode 100644
index ebc02594e19..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-head-token.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[ignore-head-token.html]
- type: testharness
- [Ignore HEAD token. Test loading a HTML file with HEAD tag inside template]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-html-token.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-html-token.html.ini
deleted file mode 100644
index 284cd1254b2..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/ignore-html-token.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[ignore-html-token.html]
- type: testharness
- [Ignore HTML token. Test loading a HTML file with HTML tag inside template]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/start-tag-html.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/start-tag-html.html.ini
deleted file mode 100644
index 148ed2e3b18..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/start-tag-html.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[start-tag-html.html]
- type: testharness
- [In body insertion mode: html start tag should add only absent attributes]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/template-end-tag-without-start-one.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/template-end-tag-without-start-one.html.ini
deleted file mode 100644
index e9fa8c8480c..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/template-end-tag-without-start-one.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[template-end-tag-without-start-one.html]
- type: testharness
- [</template> tag in HTML body without start one should be ignored. Test HTML document loaded from file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-frameset-insertion-mode/end-tag-frameset.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-frameset-insertion-mode/end-tag-frameset.html.ini
deleted file mode 100644
index 9d9d49e816e..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-frameset-insertion-mode/end-tag-frameset.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[end-tag-frameset.html]
- type: testharness
- [<template> tag should be ignored in "in frameset" insertion mode]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags.html.ini
deleted file mode 100644
index f4621ee9cd7..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[generating-of-implied-end-tags.html]
- type: testharness
- [Generating of implied end tags. Test table elements. Load HTML document from file]
- expected: FAIL
-
- [Generating of implied end tags. Test div element. Load HTML document from file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/template-end-tag-without-start-one.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/template-end-tag-without-start-one.html.ini
deleted file mode 100644
index 67d3b078a61..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/template-end-tag-without-start-one.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[template-end-tag-without-start-one.html]
- type: testharness
- [</template> tag in HTML head without start one should be ignored. Test HTML document loaded from file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/appending-to-a-template/template-child-nodes.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/appending-to-a-template/template-child-nodes.html.ini
deleted file mode 100644
index d8b72c18c32..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/appending-to-a-template/template-child-nodes.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[template-child-nodes.html]
- type: testharness
- [Template child nodes must be appended to template content node. Load HTML document from a file]
- expected: FAIL
-
- [Template child nodes must be appended to nested template content node. Load HTML document from a file]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html.ini b/tests/wpt/metadata/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html.ini
deleted file mode 100644
index 57afa31e095..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[template-owner-document.html]
- type: testharness
- [Test ownerDocument property of two elements in a template. Load HTML document from a file, current DOCUMENT has browsing context]
- expected: FAIL
-
- [Test ownerDocument property of the element in a template. Load HTML document from a file, current DOCUMENT has browsing context]
- expected: FAIL
-
- [Test ownerDocument property of the element in a nested template. Load HTML document from a file, current DOCUMENT has browsing context]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/navigation-timing/test_unique_performance_objects.html.ini b/tests/wpt/metadata/navigation-timing/test_unique_performance_objects.html.ini
deleted file mode 100644
index 42a39a1d795..00000000000
--- a/tests/wpt/metadata/navigation-timing/test_unique_performance_objects.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[test_unique_performance_objects.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json
index c53b72ba96c..65472be2d67 100644
--- a/tests/wpt/mozilla/meta/MANIFEST.json
+++ b/tests/wpt/mozilla/meta/MANIFEST.json
@@ -25696,7 +25696,7 @@
"support"
],
"mozilla/referrer-policy/generic/common.js": [
- "1f4a0fa9285ad504cba75c01b4938c9da78cace3",
+ "6882adfd624da27cd226e1575988e85ad4e0a562",
"support"
],
"mozilla/referrer-policy/generic/referrer-policy-test-case.js": [
diff --git a/tests/wpt/mozilla/tests/mozilla/referrer-policy/generic/common.js b/tests/wpt/mozilla/tests/mozilla/referrer-policy/generic/common.js
index 3cebc2040c9..c93fad93e8a 100644
--- a/tests/wpt/mozilla/tests/mozilla/referrer-policy/generic/common.js
+++ b/tests/wpt/mozilla/tests/mozilla/referrer-policy/generic/common.js
@@ -195,8 +195,8 @@ function queryAnchor(url, callback, referrer_policy) {
var url_with_params = url + "&id=" + id + "&tagAttrs=" + JSON.stringify(referrer_policy);
var iframe = appendIframeToBody(url_with_params);
iframe.addEventListener("load", function listener() {
- if ((iframe.contentWindow !== null) &&
- (iframe.contentWindow.location.toString() === url_with_params)) {
+ if ((iframe.contentDocument !== null) &&
+ (iframe.contentDocument.location.toString() === url_with_params)) {
return;
}