aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/bindings/str.rs7
-rw-r--r--components/script/dom/document.rs215
-rw-r--r--components/script/dom/eventtarget.rs4
-rw-r--r--components/script/dom/servoparser/mod.rs115
-rw-r--r--components/script/dom/webidls/Document.webidl6
-rw-r--r--components/script/dom/window.rs28
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/closing-the-input-stream/document.close-01.xhtml.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/047.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/048.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/049.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/050.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/document.write-02.html.ini8
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_001.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_002.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_003.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_004.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_005.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_006.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_007.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_008.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_009.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_010.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/write-active-document.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-02.html.ini8
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-03.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/001.html.ini1
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/002.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/004.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/006.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/007.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/008.html.ini1
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/011.html.ini6
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/012.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/013.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/014.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/015.html.ini10
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/016.html.ini12
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-01.xhtml.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-03.html.ini4
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.html.ini54
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_02.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_04.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini3
-rw-r--r--tests/wpt/metadata/navigation-timing/test_document_open.html.ini3
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/070.html.ini3
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/071.html.ini3
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/072.html.ini3
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/073.html.ini3
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/074.html.ini3
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/075.html.ini6
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/094.html.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/101.html.ini5
52 files changed, 351 insertions, 296 deletions
diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs
index 896c2af5b24..d5b10fcb01e 100644
--- a/components/script/dom/bindings/str.rs
+++ b/components/script/dom/bindings/str.rs
@@ -170,11 +170,16 @@ impl DOMString {
self.0.push_str(string)
}
- /// Truncates this `DOMString`, removing all contents.
+ /// Clears this `DOMString`, removing all contents.
pub fn clear(&mut self) {
self.0.clear()
}
+ /// Shortens this String to the specified length.
+ pub fn truncate(&mut self, new_len: usize) {
+ self.0.truncate(new_len);
+ }
+
/// An iterator over the bytes of this `DOMString`.
pub fn bytes(&self) -> Bytes {
self.0.bytes()
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index b2e93325236..722e0283d1e 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -16,6 +16,7 @@ use dom::bindings::codegen::Bindings::DocumentBinding::{DocumentMethods, Documen
use dom::bindings::codegen::Bindings::ElementBinding::ElementMethods;
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
use dom::bindings::codegen::Bindings::EventHandlerBinding::OnErrorEventHandlerNonNull;
+use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFrameElementBinding::HTMLIFrameElementMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter;
use dom::bindings::codegen::Bindings::PerformanceBinding::PerformanceMethods;
@@ -131,7 +132,7 @@ use style::attr::AttrValue;
use style::context::{QuirksMode, ReflowGoal};
use style::restyle_hints::{RestyleHint, RESTYLE_STYLE_ATTRIBUTE};
use style::selector_parser::{RestyleDamage, Snapshot};
-use style::str::{split_html_space_chars, str_join};
+use style::str::{HTML_SPACE_CHARACTERS, split_html_space_chars, str_join};
use style::stylesheets::Stylesheet;
use task_source::TaskSource;
use time;
@@ -1756,6 +1757,37 @@ impl Document {
// TODO: client message queue.
}
+ // https://html.spec.whatwg.org/multipage/#abort-a-document
+ fn abort(&self) {
+ // We need to inhibit the loader before anything else.
+ self.loader.borrow_mut().inhibit_events();
+
+ // Step 1.
+ for iframe in self.iter_iframes() {
+ if let Some(document) = iframe.GetContentDocument() {
+ // TODO: abort the active documents of every child browsing context.
+ document.abort();
+ // TODO: salvageable flag.
+ }
+ }
+
+ // Step 2.
+ self.script_blocking_stylesheets_count.set(0);
+ *self.pending_parsing_blocking_script.borrow_mut() = None;
+ *self.asap_scripts_set.borrow_mut() = vec![];
+ self.asap_in_order_scripts_list.clear();
+ self.deferred_scripts.clear();
+
+ // TODO: https://github.com/servo/servo/issues/15236
+ self.window.cancel_all_tasks();
+
+ // Step 3.
+ if let Some(parser) = self.get_current_parser() {
+ parser.abort();
+ // TODO: salvageable flag.
+ }
+ }
+
pub fn notify_constellation_load(&self) {
let global_scope = self.window.upcast::<GlobalScope>();
let pipeline_id = global_scope.pipeline_id();
@@ -3280,6 +3312,149 @@ impl DocumentMethods for Document {
elements
}
+ // https://html.spec.whatwg.org/multipage/#dom-document-open
+ fn Open(&self, type_: DOMString, replace: DOMString) -> Fallible<Root<Document>> {
+ if !self.is_html_document() {
+ // Step 1.
+ return Err(Error::InvalidState);
+ }
+
+ // Step 2.
+ // TODO: handle throw-on-dynamic-markup-insertion counter.
+
+ if !self.is_active() {
+ // Step 3.
+ return Ok(Root::from_ref(self));
+ }
+
+ let entry_responsible_document = GlobalScope::entry().as_window().Document();
+
+ if !self.origin.same_origin(&entry_responsible_document.origin) {
+ // Step 4.
+ return Err(Error::Security);
+ }
+
+ if self.get_current_parser().map_or(false, |parser| parser.script_nesting_level() > 0) {
+ // Step 5.
+ return Ok(Root::from_ref(self));
+ }
+
+ // Step 6.
+ // TODO: ignore-opens-during-unload counter check.
+
+ // Step 7: first argument already bound to `type_`.
+
+ // Step 8.
+ // TODO: check session history's state.
+ let replace = replace.eq_ignore_ascii_case("replace");
+
+ // Step 9.
+ // TODO: salvageable flag.
+
+ // Step 10.
+ // TODO: prompt to unload.
+
+ // Step 11.
+ // TODO: unload.
+
+ // Step 12.
+ self.abort();
+
+ // Step 13.
+ for node in self.upcast::<Node>().traverse_preorder() {
+ node.upcast::<EventTarget>().remove_all_listeners();
+ }
+
+ // Step 14.
+ // TODO: remove any tasks associated with the Document in any task source.
+
+ // Step 15.
+ Node::replace_all(None, self.upcast::<Node>());
+
+ // Steps 16-18.
+ // Let's not?
+ // TODO: https://github.com/whatwg/html/issues/1698
+
+ // Step 19.
+ self.implementation.set(None);
+ self.location.set(None);
+ self.images.set(None);
+ self.embeds.set(None);
+ self.links.set(None);
+ self.forms.set(None);
+ self.scripts.set(None);
+ self.anchors.set(None);
+ self.applets.set(None);
+ *self.stylesheets.borrow_mut() = None;
+ self.stylesheets_changed_since_reflow.set(true);
+ self.animation_frame_ident.set(0);
+ self.animation_frame_list.borrow_mut().clear();
+ self.pending_restyles.borrow_mut().clear();
+ self.target_element.set(None);
+ *self.last_click_info.borrow_mut() = None;
+
+ // Step 20.
+ self.set_encoding(UTF_8);
+
+ // Step 21.
+ // TODO: reload override buffer.
+
+ // Step 22.
+ // TODO: salvageable flag.
+
+ let url = entry_responsible_document.url();
+
+ // Step 23.
+ self.set_url(url.clone());
+
+ // Step 24.
+ // TODO: mute iframe load.
+
+ // Step 27.
+ let type_ = if type_.eq_ignore_ascii_case("replace") {
+ "text/html"
+ } else if let Some(position) = type_.find(';') {
+ &type_[0..position]
+ } else {
+ &*type_
+ };
+ let type_ = type_.trim_matches(HTML_SPACE_CHARACTERS);
+
+ // Step 25.
+ let resource_threads =
+ self.window.upcast::<GlobalScope>().resource_threads().clone();
+ *self.loader.borrow_mut() =
+ DocumentLoader::new_with_threads(resource_threads, Some(url.clone()));
+ ServoParser::parse_html_script_input(self, url, type_);
+
+ // Step 26.
+ self.ready_state.set(DocumentReadyState::Interactive);
+
+ // Step 28 is handled when creating the parser in step 25.
+
+ // Step 29.
+ // TODO: truncate session history.
+
+ // Step 30.
+ // TODO: remove history traversal tasks.
+
+ // Step 31.
+ // TODO: remove earlier entries.
+
+ if !replace {
+ // Step 32.
+ // TODO: add history entry.
+ }
+
+ // Step 33.
+ // TODO: clear fired unload flag.
+
+ // Step 34 is handled when creating the parser in step 25.
+
+ // Step 35.
+ Ok(Root::from_ref(self))
+ }
+
// https://html.spec.whatwg.org/multipage/#dom-document-write
fn Write(&self, text: Vec<DOMString>) -> ErrorResult {
if !self.is_html_document() {
@@ -3294,9 +3469,8 @@ impl DocumentMethods for Document {
return Ok(());
}
- let parser = self.get_current_parser();
- let parser = match parser.as_ref() {
- Some(parser) if parser.script_nesting_level() > 0 => parser,
+ let parser = match self.get_current_parser() {
+ Some(ref parser) if parser.can_write() => Root::from_ref(&**parser),
_ => {
// Either there is no parser, which means the parsing ended;
// or script nesting level is 0, which means the method was
@@ -3307,8 +3481,8 @@ impl DocumentMethods for Document {
return Ok(());
}
// Step 5.
- // TODO: call document.open().
- return Err(Error::InvalidState);
+ self.Open("text/html".into(), "".into())?;
+ self.get_current_parser().unwrap()
}
};
@@ -3328,6 +3502,30 @@ impl DocumentMethods for Document {
self.Write(text)
}
+ // https://html.spec.whatwg.org/multipage/#dom-document-close
+ fn Close(&self) -> ErrorResult {
+ if !self.is_html_document() {
+ // Step 1.
+ return Err(Error::InvalidState);
+ }
+
+ // Step 2.
+ // TODO: handle throw-on-dynamic-markup-insertion counter.
+
+ let parser = match self.get_current_parser() {
+ Some(ref parser) if parser.is_script_created() => Root::from_ref(&**parser),
+ _ => {
+ // Step 3.
+ return Ok(());
+ }
+ };
+
+ // Step 4-6.
+ parser.close();
+
+ Ok(())
+ }
+
// https://html.spec.whatwg.org/multipage/#documentandelementeventhandlers
document_and_element_event_handlers!();
@@ -3496,6 +3694,7 @@ impl PendingInOrderScriptVec {
fn is_empty(&self) -> bool {
self.scripts.borrow().is_empty()
}
+
fn push(&self, element: &HTMLScriptElement) {
self.scripts.borrow_mut().push_back(PendingScript::new(element));
}
@@ -3515,6 +3714,10 @@ impl PendingInOrderScriptVec {
scripts.pop_front();
pair
}
+
+ fn clear(&self) {
+ *self.scripts.borrow_mut() = Default::default();
+ }
}
#[derive(HeapSizeOf, JSTraceable)]
diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs
index 15790d7ce53..1e1a52830a6 100644
--- a/components/script/dom/eventtarget.rs
+++ b/components/script/dom/eventtarget.rs
@@ -306,6 +306,10 @@ impl EventTarget {
event.dispatch(self, None)
}
+ pub fn remove_all_listeners(&self) {
+ *self.handlers.borrow_mut() = Default::default();
+ }
+
/// https://html.spec.whatwg.org/multipage/#event-handler-attributes:event-handlers-11
fn set_inline_event_listener(&self,
ty: Atom,
diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs
index 0d8e02d273e..67f1b23e583 100644
--- a/components/script/dom/servoparser/mod.rs
+++ b/components/script/dom/servoparser/mod.rs
@@ -38,6 +38,7 @@ use script_thread::ScriptThread;
use script_traits::DocumentActivity;
use servo_config::resource_files::read_resource_file;
use servo_url::ServoUrl;
+use std::ascii::AsciiExt;
use std::cell::Cell;
use std::mem;
@@ -75,6 +76,10 @@ pub struct ServoParser {
suspended: Cell<bool>,
/// https://html.spec.whatwg.org/multipage/#script-nesting-level
script_nesting_level: Cell<usize>,
+ /// https://html.spec.whatwg.org/multipage/#abort-a-parser
+ aborted: Cell<bool>,
+ /// https://html.spec.whatwg.org/multipage/#script-created-parser
+ script_created_parser: bool,
}
#[derive(PartialEq)]
@@ -87,7 +92,8 @@ impl ServoParser {
pub fn parse_html_document(document: &Document, input: DOMString, url: ServoUrl) {
let parser = ServoParser::new(document,
Tokenizer::Html(self::html::Tokenizer::new(document, url, None)),
- LastChunkState::NotReceived);
+ LastChunkState::NotReceived,
+ ParserKind::Normal);
parser.parse_chunk(String::from(input));
}
@@ -129,7 +135,8 @@ impl ServoParser {
Tokenizer::Html(self::html::Tokenizer::new(&document,
url.clone(),
Some(fragment_context))),
- LastChunkState::Received);
+ LastChunkState::Received,
+ ParserKind::Normal);
parser.parse_chunk(String::from(input));
// Step 14.
@@ -139,10 +146,23 @@ impl ServoParser {
}
}
+ pub fn parse_html_script_input(document: &Document, url: ServoUrl, type_: &str) {
+ let parser = ServoParser::new(document,
+ Tokenizer::Html(self::html::Tokenizer::new(document, url, None)),
+ LastChunkState::NotReceived,
+ ParserKind::ScriptCreated);
+ document.set_current_parser(Some(&parser));
+ if !type_.eq_ignore_ascii_case("text/html") {
+ parser.parse_chunk("<pre>\n".to_owned());
+ parser.tokenizer.borrow_mut().set_plaintext_state();
+ }
+ }
+
pub fn parse_xml_document(document: &Document, input: DOMString, url: ServoUrl) {
let parser = ServoParser::new(document,
Tokenizer::Xml(self::xml::Tokenizer::new(document, url)),
- LastChunkState::NotReceived);
+ LastChunkState::NotReceived,
+ ParserKind::Normal);
parser.parse_chunk(String::from(input));
}
@@ -150,6 +170,10 @@ impl ServoParser {
self.script_nesting_level.get()
}
+ pub fn is_script_created(&self) -> bool {
+ self.script_created_parser
+ }
+
/// Corresponds to the latter part of the "Otherwise" branch of the 'An end
/// tag whose tag name is "script"' of
/// https://html.spec.whatwg.org/multipage/#parsing-main-incdata
@@ -186,9 +210,13 @@ impl ServoParser {
}
}
+ pub fn can_write(&self) -> bool {
+ self.script_created_parser || self.script_nesting_level.get() > 0
+ }
+
/// Steps 6-8 of https://html.spec.whatwg.org/multipage/#document.write()
pub fn write(&self, text: Vec<DOMString>) {
- assert!(self.script_nesting_level.get() > 0);
+ assert!(self.can_write());
if self.document.has_pending_parsing_blocking_script() {
// There is already a pending parsing blocking script so the
@@ -225,10 +253,47 @@ impl ServoParser {
assert!(input.is_empty());
}
+ // Steps 4-6 of https://html.spec.whatwg.org/multipage/#dom-document-close
+ pub fn close(&self) {
+ assert!(self.script_created_parser);
+
+ // Step 4.
+ self.last_chunk_received.set(true);
+
+ if self.suspended.get() {
+ // Step 5.
+ return;
+ }
+
+ // Step 6.
+ self.parse_sync();
+ }
+
+ // https://html.spec.whatwg.org/multipage/#abort-a-parser
+ pub fn abort(&self) {
+ assert!(!self.aborted.get());
+ self.aborted.set(true);
+
+ // Step 1.
+ *self.script_input.borrow_mut() = BufferQueue::new();
+ *self.network_input.borrow_mut() = BufferQueue::new();
+
+ // Step 2.
+ self.document.set_ready_state(DocumentReadyState::Interactive);
+
+ // Step 3.
+ self.tokenizer.borrow_mut().end();
+ self.document.set_current_parser(None);
+
+ // Step 4.
+ self.document.set_ready_state(DocumentReadyState::Interactive);
+ }
+
#[allow(unrooted_must_root)]
fn new_inherited(document: &Document,
tokenizer: Tokenizer,
- last_chunk_state: LastChunkState)
+ last_chunk_state: LastChunkState,
+ kind: ParserKind)
-> Self {
ServoParser {
reflector: Reflector::new(),
@@ -239,15 +304,18 @@ impl ServoParser {
last_chunk_received: Cell::new(last_chunk_state == LastChunkState::Received),
suspended: Default::default(),
script_nesting_level: Default::default(),
+ aborted: Default::default(),
+ script_created_parser: kind == ParserKind::ScriptCreated,
}
}
#[allow(unrooted_must_root)]
fn new(document: &Document,
tokenizer: Tokenizer,
- last_chunk_state: LastChunkState)
+ last_chunk_state: LastChunkState,
+ kind: ParserKind)
-> Root<Self> {
- reflect_dom_object(box ServoParser::new_inherited(document, tokenizer, last_chunk_state),
+ reflect_dom_object(box ServoParser::new_inherited(document, tokenizer, last_chunk_state, kind),
document.window(),
ServoParserBinding::Wrap)
}
@@ -301,6 +369,7 @@ impl ServoParser {
{
loop {
assert!(!self.suspended.get());
+ assert!(!self.aborted.get());
self.document.reflow_if_reflow_timer_expired();
let script = match feed(&mut *self.tokenizer.borrow_mut()) {
@@ -358,6 +427,12 @@ impl Iterator for FragmentParsingResult {
}
}
+#[derive(HeapSizeOf, JSTraceable, PartialEq)]
+enum ParserKind {
+ Normal,
+ ScriptCreated,
+}
+
#[derive(HeapSizeOf, JSTraceable)]
#[must_root]
enum Tokenizer {
@@ -454,6 +529,9 @@ impl FetchResponseListener for ParserContext {
Some(parser) => parser,
None => return,
};
+ if parser.aborted.get() {
+ return;
+ }
self.parser = Some(Trusted::new(&*parser));
@@ -512,15 +590,19 @@ impl FetchResponseListener for ParserContext {
}
fn process_response_chunk(&mut self, payload: Vec<u8>) {
- if !self.is_synthesized_document {
- // FIXME: use Vec<u8> (html5ever #34)
- let data = UTF_8.decode(&payload, DecoderTrap::Replace).unwrap();
- let parser = match self.parser.as_ref() {
- Some(parser) => parser.root(),
- None => return,
- };
- parser.parse_chunk(data);
+ if self.is_synthesized_document {
+ return;
+ }
+ // FIXME: use Vec<u8> (html5ever #34)
+ let data = UTF_8.decode(&payload, DecoderTrap::Replace).unwrap();
+ let parser = match self.parser.as_ref() {
+ Some(parser) => parser.root(),
+ None => return,
+ };
+ if parser.aborted.get() {
+ return;
}
+ parser.parse_chunk(data);
}
fn process_response_eof(&mut self, status: Result<(), NetworkError>) {
@@ -528,6 +610,9 @@ impl FetchResponseListener for ParserContext {
Some(parser) => parser.root(),
None => return,
};
+ if parser.aborted.get() {
+ return;
+ }
if let Err(NetworkError::Internal(ref reason)) = status {
// Show an error page for network errors,
diff --git a/components/script/dom/webidls/Document.webidl b/components/script/dom/webidls/Document.webidl
index 4955bf6e956..46e5ce05abf 100644
--- a/components/script/dom/webidls/Document.webidl
+++ b/components/script/dom/webidls/Document.webidl
@@ -111,9 +111,11 @@ partial /*sealed*/ interface Document {
readonly attribute HTMLScriptElement? currentScript;
// dynamic markup insertion
- // Document open(optional DOMString type = "text/html", optional DOMString replace = "");
+ [Throws]
+ Document open(optional DOMString type = "text/html", optional DOMString replace = "");
// WindowProxy open(DOMString url, DOMString name, DOMString features, optional boolean replace = false);
- // void close();
+ [Throws]
+ void close();
[Throws]
void write(DOMString... text);
[Throws]
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 86957d943d9..f1834de260d 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -60,8 +60,8 @@ use net_traits::storage_thread::StorageType;
use num_traits::ToPrimitive;
use open;
use origin::Origin;
-use profile_traits::mem;
-use profile_traits::time::ProfilerChan;
+use profile_traits::mem::ProfilerChan as MemProfilerChan;
+use profile_traits::time::ProfilerChan as TimeProfilerChan;
use rustc_serialize::base64::{FromBase64, STANDARD, ToBase64};
use script_layout_interface::TrustedNodeAddress;
use script_layout_interface::message::{Msg, Reflow, ReflowQueryType, ScriptReflow};
@@ -87,6 +87,7 @@ use std::cell::Cell;
use std::collections::{HashMap, HashSet};
use std::default::Default;
use std::io::{Write, stderr, stdout};
+use std::mem;
use std::rc::Rc;
use std::sync::{Arc, Mutex};
use std::sync::atomic::{AtomicBool, Ordering};
@@ -231,7 +232,7 @@ pub struct Window {
/// A flag to prevent async events from attempting to interact with this window.
#[ignore_heap_size_of = "defined in std"]
- ignore_further_async_events: Arc<AtomicBool>,
+ ignore_further_async_events: DOMRefCell<Arc<AtomicBool>>,
error_reporter: CSSErrorReporter,
@@ -255,7 +256,7 @@ impl Window {
*self.js_runtime.borrow_for_script_deallocation() = None;
self.browsing_context.set(None);
self.current_state.set(WindowState::Zombie);
- self.ignore_further_async_events.store(true, Ordering::Relaxed);
+ self.ignore_further_async_events.borrow().store(true, Ordering::Relaxed);
}
}
@@ -917,10 +918,19 @@ impl WindowMethods for Window {
impl Window {
pub fn get_runnable_wrapper(&self) -> RunnableWrapper {
RunnableWrapper {
- cancelled: Some(self.ignore_further_async_events.clone()),
+ cancelled: Some(self.ignore_further_async_events.borrow().clone()),
}
}
+ /// Cancels all the tasks associated with that window.
+ ///
+ /// This sets the current `ignore_further_async_events` sentinel value to
+ /// `true` and replaces it with a brand new one for future tasks.
+ pub fn cancel_all_tasks(&self) {
+ let cancelled = mem::replace(&mut *self.ignore_further_async_events.borrow_mut(), Default::default());
+ cancelled.store(true, Ordering::Relaxed);
+ }
+
pub fn clear_js_runtime(&self) {
// We tear down the active document, which causes all the attached
// nodes to dispose of their layout data. This messages the layout
@@ -944,7 +954,7 @@ impl Window {
self.current_state.set(WindowState::Zombie);
*self.js_runtime.borrow_mut() = None;
self.browsing_context.set(None);
- self.ignore_further_async_events.store(true, Ordering::SeqCst);
+ self.ignore_further_async_events.borrow().store(true, Ordering::SeqCst);
}
/// https://drafts.csswg.org/cssom-view/#dom-window-scroll
@@ -1611,8 +1621,8 @@ impl Window {
image_cache_thread: ImageCacheThread,
resource_threads: ResourceThreads,
bluetooth_thread: IpcSender<BluetoothRequest>,
- mem_profiler_chan: mem::ProfilerChan,
- time_profiler_chan: ProfilerChan,
+ mem_profiler_chan: MemProfilerChan,
+ time_profiler_chan: TimeProfilerChan,
devtools_chan: Option<IpcSender<ScriptToDevtoolsControlMsg>>,
constellation_chan: IpcSender<ConstellationMsg>,
control_chan: IpcSender<ConstellationControlMsg>,
@@ -1681,7 +1691,7 @@ impl Window {
devtools_marker_sender: DOMRefCell::new(None),
devtools_markers: DOMRefCell::new(HashSet::new()),
webdriver_script_chan: DOMRefCell::new(None),
- ignore_further_async_events: Arc::new(AtomicBool::new(false)),
+ ignore_further_async_events: Default::default(),
error_reporter: error_reporter,
scroll_offsets: DOMRefCell::new(HashMap::new()),
media_query_lists: WeakMediaQueryListVec::new(),
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/closing-the-input-stream/document.close-01.xhtml.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/closing-the-input-stream/document.close-01.xhtml.ini
deleted file mode 100644
index b3631cf0e57..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/closing-the-input-stream/document.close-01.xhtml.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[document.close-01.xhtml]
- type: testharness
- [document.close in XHTML]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/047.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/047.html.ini
deleted file mode 100644
index aaea77fd62a..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/047.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[047.html]
- type: testharness
- [document.write]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/048.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/048.html.ini
deleted file mode 100644
index 9eecfd65400..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/048.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[048.html]
- type: testharness
- [document.write]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/049.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/049.html.ini
deleted file mode 100644
index 3e8828bbee7..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/049.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[049.html]
- type: testharness
- [document.write plaintext]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/050.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/050.html.ini
deleted file mode 100644
index 49f2e23bbe4..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/050.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[050.html]
- type: testharness
- [document.write plaintext]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/document.write-02.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/document.write-02.html.ini
deleted file mode 100644
index 2060c25a09a..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/document.write-02.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[document.write-02.html]
- type: testharness
- [document.write(null)]
- expected: FAIL
-
- [document.write(undefined)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_001.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_001.html.ini
deleted file mode 100644
index 52b81f67d7c..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_001.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_001.html]
- type: testharness
- [document.write into iframe]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_002.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_002.html.ini
deleted file mode 100644
index 2ff277a9e17..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_002.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_002.html]
- type: testharness
- [document.write into iframe]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_003.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_003.html.ini
deleted file mode 100644
index eb6199a85ed..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_003.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_003.html]
- type: testharness
- [document.write script into iframe]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_004.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_004.html.ini
deleted file mode 100644
index 8a0ba8992a8..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_004.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_004.html]
- type: testharness
- [document.write script into iframe write back into parent]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_005.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_005.html.ini
deleted file mode 100644
index c921b37f80a..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_005.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_005.html]
- type: testharness
- [document.write external script into iframe write back into parent]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_006.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_006.html.ini
deleted file mode 100644
index 3f4286f9d70..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_006.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_006.html]
- type: testharness
- [document.write external script into iframe write back into parent]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_007.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_007.html.ini
deleted file mode 100644
index 7fcb001e740..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_007.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_007.html]
- type: testharness
- [document.write comment into iframe]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_008.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_008.html.ini
deleted file mode 100644
index dd4c78c967b..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_008.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_008.html]
- type: testharness
- [document.write plaintext into iframe]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_009.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_009.html.ini
deleted file mode 100644
index 43ea13ee2b5..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_009.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_009.html]
- type: testharness
- [document.write plaintext into iframe]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_010.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_010.html.ini
deleted file mode 100644
index c9450c9c996..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/iframe_010.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[iframe_010.html]
- type: testharness
- [document.write plaintext]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/write-active-document.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/write-active-document.html.ini
deleted file mode 100644
index 30cc2c0eaf3..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-write/write-active-document.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[write-active-document.html]
- type: testharness
- [document.write only writes to active documents]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-02.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-02.html.ini
deleted file mode 100644
index ad4e48307f0..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-02.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[document.writeln-02.html]
- type: testharness
- [document.writeln(null)]
- expected: FAIL
-
- [document.writeln(undefined)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-03.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-03.html.ini
deleted file mode 100644
index 4f4f59f240f..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-03.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[document.writeln-03.html]
- type: testharness
- [Calling document.writeln with multiple arguments]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/001.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/001.html.ini
index 3ad7845733a..ed58748d169 100644
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/001.html.ini
+++ b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/001.html.ini
@@ -2,4 +2,5 @@
type: testharness
[Replacement of window object after document.open]
expected: FAIL
+ bug: https://github.com/whatwg/html/issues/1698
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/002.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/002.html.ini
deleted file mode 100644
index 8c264c9af32..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/002.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[002.html]
- type: testharness
- [document.open during parsing]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/004.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/004.html.ini
deleted file mode 100644
index 559d5322c35..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/004.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[004.html]
- type: testharness
- [Reuse of document object after document.open]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/006.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/006.html.ini
deleted file mode 100644
index dc2719185df..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/006.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[006.html]
- type: testharness
- [Cancelling error after document.open]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/007.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/007.html.ini
deleted file mode 100644
index aeee21ef161..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/007.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[007.html]
- type: testharness
- [Unregistering event handlers after document.open]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/008.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/008.html.ini
index cf175361340..6afc3d97df7 100644
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/008.html.ini
+++ b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/008.html.ini
@@ -2,4 +2,5 @@
type: testharness
[Replacement of document prototype object after document.open]
expected: FAIL
+ bug: https://github.com/whatwg/html/issues/1698
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/011.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/011.html.ini
deleted file mode 100644
index 5bad6977acf..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/011.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[011.html]
- type: testharness
- expected: TIMEOUT
- [Timeout after document.open]
- expected: NOTRUN
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/012.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/012.html.ini
deleted file mode 100644
index 1b006518688..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/012.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[012.html]
- type: testharness
- [Timeout after document.open in load event]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/013.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/013.html.ini
deleted file mode 100644
index 3464f107c4e..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/013.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[013.html]
- type: testharness
- [Timeout after document.open in DOMContentLoaded event]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/014.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/014.html.ini
deleted file mode 100644
index d51f902a3eb..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/014.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[014.html]
- type: testharness
- [Timeout after document.open after document is completely loaded]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/015.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/015.html.ini
index fa309385bae..31caad97d35 100644
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/015.html.ini
+++ b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/015.html.ini
@@ -1,12 +1,6 @@
[015.html]
type: testharness
- expected: TIMEOUT
[global scope unchanged]
- expected: TIMEOUT
-
- [window object changed]
- expected: NOTRUN
-
- [this is the window object]
- expected: NOTRUN
+ expected: FAIL
+ bug: https://github.com/whatwg/html/issues/1698
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/016.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/016.html.ini
index 1695214e2bf..8aa68bbbc4b 100644
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/016.html.ini
+++ b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/016.html.ini
@@ -1,15 +1,9 @@
[016.html]
type: testharness
- expected: TIMEOUT
+ bug: https://github.com/whatwg/html/issues/1698
[Timeout on original window, scope]
- expected: NOTRUN
-
- [Timeout on original window, this object]
- expected: NOTRUN
+ expected: FAIL
[Timeout on new window, scope]
- expected: NOTRUN
-
- [Timeout on new window, this object]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-01.xhtml.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-01.xhtml.ini
deleted file mode 100644
index c96709c96e2..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-01.xhtml.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[document.open-01.xhtml]
- type: testharness
- [document.open in XHTML]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-03.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-03.html.ini
index f905274ca59..b9aa7e44b05 100644
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-03.html.ini
+++ b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-03.html.ini
@@ -1,6 +1,6 @@
[document.open-03.html]
type: testharness
- expected: TIMEOUT
[document.open and singleton replacement]
- expected: NOTRUN
+ expected: FAIL
+ bug: https://github.com/whatwg/html/issues/1698
diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini
index 61cfa61cef7..15a00959433 100644
--- a/tests/wpt/metadata/html/dom/interfaces.html.ini
+++ b/tests/wpt/metadata/html/dom/interfaces.html.ini
@@ -12,15 +12,9 @@
[Document interface: attribute cssElementMap]
expected: FAIL
- [Document interface: operation open(DOMString,DOMString)]
- expected: FAIL
-
[Document interface: operation open(DOMString,DOMString,DOMString,boolean)]
expected: FAIL
- [Document interface: operation close()]
- expected: FAIL
-
[Document interface: attribute designMode]
expected: FAIL
@@ -216,21 +210,9 @@
[Document interface: iframe.contentDocument must inherit property "cssElementMap" with the proper type (52)]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "open" with the proper type (54)]
- expected: FAIL
-
- [Document interface: calling open(DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "open" with the proper type (55)]
- expected: FAIL
-
[Document interface: calling open(DOMString,DOMString,DOMString,boolean) on iframe.contentDocument with too few arguments must throw TypeError]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "close" with the proper type (56)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "designMode" with the proper type (62)]
expected: FAIL
@@ -591,21 +573,9 @@
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "cssElementMap" with the proper type (52)]
expected: FAIL
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "open" with the proper type (54)]
- expected: FAIL
-
- [Document interface: calling open(DOMString,DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "open" with the proper type (55)]
- expected: FAIL
-
[Document interface: calling open(DOMString,DOMString,DOMString,boolean) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
expected: FAIL
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "close" with the proper type (56)]
- expected: FAIL
-
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "designMode" with the proper type (62)]
expected: FAIL
@@ -6096,12 +6066,6 @@
[Document interface: new Document() must inherit property "cssElementMap" with the proper type (53)]
expected: FAIL
- [Document interface: new Document() must inherit property "open" with the proper type (55)]
- expected: FAIL
-
- [Document interface: calling open(DOMString,DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: new Document() must inherit property "open" with the proper type (56)]
expected: FAIL
@@ -8151,12 +8115,6 @@
[Document interface: new Document() must inherit property "cssElementMap" with the proper type (52)]
expected: FAIL
- [Document interface: new Document() must inherit property "open" with the proper type (54)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "close" with the proper type (56)]
- expected: FAIL
-
[Document interface: new Document() must inherit property "designMode" with the proper type (62)]
expected: FAIL
@@ -8334,9 +8292,6 @@
[Event interface: calling initEvent(DOMString,boolean,boolean) on new TrackEvent("addtrack", {track:document.createElement("track").track}) with too few arguments must throw TypeError]
expected: FAIL
- [Document interface: operation open(USVString,DOMString,DOMString)]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "createCDATASection" with the proper type (18)]
expected: FAIL
@@ -8361,9 +8316,6 @@
[Document interface: iframe.contentDocument must inherit property "dir" with the proper type (43)]
expected: FAIL
- [Document interface: calling open(USVString,DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (71)]
expected: FAIL
@@ -8403,9 +8355,6 @@
[Document interface: new Document() must inherit property "dir" with the proper type (43)]
expected: FAIL
- [Document interface: calling open(USVString,DOMString,DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: new Document() must inherit property "linkColor" with the proper type (71)]
expected: FAIL
@@ -8445,9 +8394,6 @@
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "dir" with the proper type (43)]
expected: FAIL
- [Document interface: calling open(USVString,DOMString,DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "linkColor" with the proper type (71)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_02.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_02.html.ini
deleted file mode 100644
index 8a741a2d5fd..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_02.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[move_iframe_in_dom_02.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_04.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_04.html.ini
deleted file mode 100644
index 8c607ee10fb..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_04.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[move_iframe_in_dom_04.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
index 0579394435a..39c3a3d651b 100644
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
@@ -1,6 +1,3 @@
[script-onerror-insertion-point-2.html]
type: testharness
expected: TIMEOUT
- [Test that the insertion point is not defined in the error event of a\n parser-inserted script that has an unparseable URL]
- expected: NOTRUN
-
diff --git a/tests/wpt/metadata/navigation-timing/test_document_open.html.ini b/tests/wpt/metadata/navigation-timing/test_document_open.html.ini
deleted file mode 100644
index 81027037b49..00000000000
--- a/tests/wpt/metadata/navigation-timing/test_document_open.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[test_document_open.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/070.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/070.html.ini
deleted file mode 100644
index a92c4cea048..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/070.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[070.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/071.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/071.html.ini
deleted file mode 100644
index 119c30eda82..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/071.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[071.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/072.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/072.html.ini
deleted file mode 100644
index abaaec0fe59..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/072.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[072.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/073.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/073.html.ini
deleted file mode 100644
index 6b366aa1ebb..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/073.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[073.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/074.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/074.html.ini
deleted file mode 100644
index 4aab3101a19..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/074.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[074.html]
- type: testharness
- expected: ERROR
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/075.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/075.html.ini
deleted file mode 100644
index 5f4a885905e..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/075.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[075.html]
- type: testharness
- expected: ERROR
- [dispatchEvent from child frame during document.write :-o ]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/094.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/094.html.ini
deleted file mode 100644
index b89f6319d28..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/094.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[094.html]
- type: testharness
- [ scheduler: parser-created defer script after document load]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/101.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/101.html.ini
deleted file mode 100644
index 19f83b1602e..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/101.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[101.html]
- type: testharness
- [ scheduler: defer script after initial onload event]
- expected: FAIL
-