Dirty text nodes when their content changes

Fixes #7793.
This commit is contained in:
Matt Brubeck 2015-09-29 15:35:42 -07:00
parent 0c64e4a2c9
commit 7e199f9bda
5 changed files with 11 additions and 14 deletions

View file

@ -15,7 +15,7 @@ use dom::bindings::js::{LayoutJS, Root};
use dom::document::Document; use dom::document::Document;
use dom::element::Element; use dom::element::Element;
use dom::eventtarget::{EventTarget, EventTargetTypeId}; use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::node::{Node, NodeTypeId}; use dom::node::{Node, NodeDamage, NodeTypeId};
use std::borrow::ToOwned; use std::borrow::ToOwned;
use std::cell::Ref; use std::cell::Ref;
use util::str::DOMString; use util::str::DOMString;
@ -54,6 +54,7 @@ impl CharacterDataMethods for CharacterData {
// https://dom.spec.whatwg.org/#dom-characterdata-data // https://dom.spec.whatwg.org/#dom-characterdata-data
fn SetData(&self, data: DOMString) { fn SetData(&self, data: DOMString) {
*self.data.borrow_mut() = data; *self.data.borrow_mut() = data;
self.content_changed();
} }
// https://dom.spec.whatwg.org/#dom-characterdata-length // https://dom.spec.whatwg.org/#dom-characterdata-length
@ -117,6 +118,7 @@ impl CharacterDataMethods for CharacterData {
new_data new_data
}; };
*self.data.borrow_mut() = new_data; *self.data.borrow_mut() = new_data;
self.content_changed();
// FIXME: Once we have `Range`, we should implement step 8 to step 11 // FIXME: Once we have `Range`, we should implement step 8 to step 11
Ok(()) Ok(())
} }
@ -171,7 +173,14 @@ impl CharacterData {
} }
#[inline] #[inline]
pub fn append_data(&self, data: &str) { pub fn append_data(&self, data: &str) {
self.data.borrow_mut().push_str(data) self.data.borrow_mut().push_str(data);
self.content_changed();
}
fn content_changed(&self) {
let node = NodeCast::from_ref(self);
let document = node.owner_doc();
document.r().content_changed(node, NodeDamage::OtherNodeDamage);
} }
} }

View file

@ -1,3 +0,0 @@
[first-letter-dynamic-003a.htm]
type: reftest
expected: FAIL

View file

@ -1,3 +0,0 @@
[first-letter-dynamic-003b.htm]
type: reftest
expected: FAIL

View file

@ -1,3 +0,0 @@
[run-in-basic-017.htm]
type: reftest
expected: FAIL

View file

@ -1,3 +0,0 @@
[run-in-text-between-003.htm]
type: reftest
expected: FAIL