Skip to content

Commit

Permalink
Fix document.write check for activity.
Browse files Browse the repository at this point in the history
  • Loading branch information
Alan Jeffrey committed Jan 27, 2017
1 parent a43c842 commit ca9cee0
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 2 deletions.
3 changes: 1 addition & 2 deletions components/script/dom/document.rs
Expand Up @@ -3271,8 +3271,7 @@ impl DocumentMethods for Document {

// Step 2.
// TODO: handle throw-on-dynamic-markup-insertion counter.
// FIXME: this should check for being active rather than fully active
if !self.is_fully_active() {
if !self.is_active() {
// Step 3.
return Ok(());
}
Expand Down
1 change: 1 addition & 0 deletions components/script/script_thread.rs
Expand Up @@ -1304,6 +1304,7 @@ impl ScriptThread {

/// Handles activity change message
fn handle_set_document_activity_msg(&self, id: PipelineId, activity: DocumentActivity) {
debug!("Setting activity of {} to be {:?}.", id, activity);
let document = self.documents.borrow().find_document(id);
if let Some(document) = document {
document.set_activity(activity);
Expand Down
6 changes: 6 additions & 0 deletions tests/wpt/metadata/MANIFEST.json
Expand Up @@ -45873,6 +45873,12 @@
"url": "/cssom/stylesheet-same-origin.sub.html"
}
],
"html/dom/dynamic-markup-insertion/document-write/write-active-document.html": [
{
"path": "html/dom/dynamic-markup-insertion/document-write/write-active-document.html",
"url": "/html/dom/dynamic-markup-insertion/document-write/write-active-document.html"
}
],
"html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html": [
{
"path": "html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html",
Expand Down
@@ -0,0 +1,4 @@
[write-active-document.html]
type: testharness
[document.write only writes to active documents]
expected: FAIL
@@ -0,0 +1 @@
<html><body></body></html>
@@ -0,0 +1,35 @@
<!doctype html>
<title>document.write only writes to active documents</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body><div id="log"></div></body>
<script>
async_test(function(t) {
var child = document.createElement("iframe");
child.src = "empty.html?1";
child.onload = t.step_func(function() {
var child1 = child.contentDocument;
var link = child1.createElement("a");
link.href = "data:text/html,Clicked.";
link.innerText = "Link.";
child1.body.appendChild(link);
var grandchild = child1.createElement("iframe");
grandchild.src = "empty.html?2";
grandchild.onload = t.step_func(function() {
var grandchild1 = grandchild.contentDocument;
child.onload = t.step_func(function() {
// This is a write to an inactive document
child1.write('WRITE HAPPENED');
assert_equals(child1.body.lastChild.tagName, "IFRAME");
// This is a write to an active but not fully active document
grandchild1.write('WRITE HAPPENED');
assert_equals(grandchild1.body.innerHTML, "WRITE HAPPENED");
t.done();
});
link.click();
});
child1.body.appendChild(grandchild);
});
document.body.appendChild(child);
});
</script>

0 comments on commit ca9cee0

Please sign in to comment.