aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/document.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/document.rs')
-rw-r--r--components/script/dom/document.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 7995b438a4c..4fbdaab837d 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -47,6 +47,7 @@ use dom::htmltitleelement::HTMLTitleElement;
use dom::location::Location;
use dom::mouseevent::MouseEvent;
use dom::keyboardevent::KeyboardEvent;
+use dom::messageevent::MessageEvent;
use dom::node::{Node, ElementNodeTypeId, DocumentNodeTypeId, NodeHelpers};
use dom::node::{CloneChildren, DoNotCloneChildren};
use dom::nodelist::NodeList;
@@ -176,6 +177,7 @@ pub trait DocumentHelpers<'a> {
fn set_last_modified(self, value: DOMString);
fn set_encoding_name(self, name: DOMString);
fn content_changed(self, node: JSRef<Node>);
+ fn content_and_heritage_changed(self, node: JSRef<Node>);
fn reflow(self);
fn wait_until_safe_to_modify_dom(self);
fn unregister_named_element(self, to_unregister: JSRef<Element>, id: Atom);
@@ -226,10 +228,17 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
}
fn content_changed(self, node: JSRef<Node>) {
+ debug!("content_changed on {}", node.debug_str());
node.dirty();
self.reflow();
}
+ fn content_and_heritage_changed(self, node: JSRef<Node>) {
+ debug!("content_and_heritage_changed on {}", node.debug_str());
+ node.force_dirty_ancestors();
+ self.reflow();
+ }
+
fn reflow(self) {
self.window.root().reflow();
}
@@ -716,6 +725,8 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
global::Window(*window))),
"keyboardevent" | "keyevents" => Ok(EventCast::from_temporary(
KeyboardEvent::new_uninitialized(*window))),
+ "messageevent" => Ok(EventCast::from_temporary(
+ MessageEvent::new_uninitialized(global::Window(*window)))),
_ => Err(NotSupported)
}
}