From 0e29eabb879a7bbd7194b161cc023c2791d732ec Mon Sep 17 00:00:00 2001 From: yodalee Date: Sat, 14 Feb 2015 01:03:44 +0800 Subject: [PATCH] fix function on utf8 string, pass two tests dom/nodes/Node-properties.html detachedForeignComment.length] detachedXmlComment.length] --- components/script/dom/characterdata.rs | 10 +++++----- tests/wpt/metadata/dom/nodes/Node-properties.html.ini | 6 ------ 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index 9fc2f5ec0ff4..b7703e7e72a9 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -77,11 +77,11 @@ impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> { } fn Length(self) -> u32 { - self.data.borrow().len() as u32 + self.data.borrow().chars().count() as u32 } fn SubstringData(self, offset: u32, count: u32) -> Fallible { - Ok(self.data.borrow()[offset as usize .. count as usize].to_owned()) + Ok(self.data.borrow().slice_chars(offset as usize, (offset + count) as usize).to_owned()) } fn AppendData(self, arg: DOMString) -> ErrorResult { @@ -98,7 +98,7 @@ impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> { } fn ReplaceData(self, offset: u32, count: u32, arg: DOMString) -> ErrorResult { - let length = self.data.borrow().len() as u32; + let length = self.data.borrow().chars().count() as u32; if offset > length { return Err(IndexSize); } @@ -107,9 +107,9 @@ impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> { } else { count }; - let mut data = self.data.borrow()[..offset as usize].to_owned(); + let mut data = self.data.borrow().slice_chars(0, offset as usize).to_owned(); data.push_str(arg.as_slice()); - data.push_str(&self.data.borrow()[(offset + count) as usize..]); + data.push_str(&self.data.borrow().slice_chars((offset + count) as usize, length as usize)); *self.data.borrow_mut() = data; // FIXME: Once we have `Range`, we should implement step7 to step11 Ok(()) diff --git a/tests/wpt/metadata/dom/nodes/Node-properties.html.ini b/tests/wpt/metadata/dom/nodes/Node-properties.html.ini index 67eab93616a8..94e5d7b9725d 100644 --- a/tests/wpt/metadata/dom/nodes/Node-properties.html.ini +++ b/tests/wpt/metadata/dom/nodes/Node-properties.html.ini @@ -132,12 +132,6 @@ [detachedXmlTextNode.wholeText] expected: FAIL - [detachedForeignComment.length] - expected: FAIL - - [detachedXmlComment.length] - expected: FAIL - [paras[0\].previousElementSibling] expected: FAIL