mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Fix document.write check for activity.
This commit is contained in:
parent
a43c842099
commit
ca9cee084e
6 changed files with 48 additions and 2 deletions
|
@ -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(());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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>
|
Loading…
Add table
Add a link
Reference in a new issue