aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-06-15 13:59:12 -0400
committerGitHub <noreply@github.com>2018-06-15 13:59:12 -0400
commit0c5b0201637899bd8ec7f63d0dc3944a01895986 (patch)
treec670dbf26e7e49deed6f377d4d708f61cedbea61
parent3279d1fe85d3aa8dbb99c59b4184e4bc3cc6c54b (diff)
parent0907940db85f49541b1caa7581027ea0c02413aa (diff)
downloadservo-0c5b0201637899bd8ec7f63d0dc3944a01895986.tar.gz
servo-0c5b0201637899bd8ec7f63d0dc3944a01895986.zip
Auto merge of #21052 - tigercosmos:rrr, r=jdm
add TextLength <!-- Please describe your changes on the following line: --> add TextLength in HTMLTextAreaElement --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [ ] These changes fix #__ (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21052) <!-- Reviewable:end -->
-rwxr-xr-xcomponents/script/dom/htmltextareaelement.rs5
-rw-r--r--components/script/dom/webidls/HTMLTextAreaElement.webidl2
-rw-r--r--tests/wpt/metadata/MANIFEST.json10
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-textLength.html19
4 files changed, 35 insertions, 1 deletions
diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs
index 359fe4d8a19..d03fb1a348c 100755
--- a/components/script/dom/htmltextareaelement.rs
+++ b/components/script/dom/htmltextareaelement.rs
@@ -263,6 +263,11 @@ impl HTMLTextAreaElementMethods for HTMLTextAreaElement {
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
}
+ // https://html.spec.whatwg.org/multipage/#dom-textarea-textlength
+ fn TextLength(&self) -> u32 {
+ self.textinput.borrow().utf16_len() as u32
+ }
+
// https://html.spec.whatwg.org/multipage/#dom-lfe-labels
fn Labels(&self) -> DomRoot<NodeList> {
self.upcast::<HTMLElement>().labels()
diff --git a/components/script/dom/webidls/HTMLTextAreaElement.webidl b/components/script/dom/webidls/HTMLTextAreaElement.webidl
index 3ff20242bfe..f8f52c82b92 100644
--- a/components/script/dom/webidls/HTMLTextAreaElement.webidl
+++ b/components/script/dom/webidls/HTMLTextAreaElement.webidl
@@ -39,7 +39,7 @@ interface HTMLTextAreaElement : HTMLElement {
attribute DOMString defaultValue;
[CEReactions,TreatNullAs=EmptyString]
attribute DOMString value;
- // readonly attribute unsigned long textLength;
+ readonly attribute unsigned long textLength;
// readonly attribute boolean willValidate;
// readonly attribute ValidityState validity;
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 7ab2ed5ec98..589adbc2469 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -346322,6 +346322,12 @@
{}
]
],
+ "html/semantics/forms/the-textarea-element/textarea-textLength.html": [
+ [
+ "/html/semantics/forms/the-textarea-element/textarea-textLength.html",
+ {}
+ ]
+ ],
"html/semantics/forms/the-textarea-element/textarea-type.html": [
[
"/html/semantics/forms/the-textarea-element/textarea-type.html",
@@ -583939,6 +583945,10 @@
"7b513a17599ea93eb430a81bbff8d5aa94d07c3c",
"manual"
],
+ "html/semantics/forms/the-textarea-element/textarea-textLength.html": [
+ "0f9b8cdaace12d4f4e7fbd57a90fcba7e826ced5",
+ "testharness"
+ ],
"html/semantics/forms/the-textarea-element/textarea-type.html": [
"81a270bc3c9304f8b2e7dd526519f4eab7d94f45",
"testharness"
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-textLength.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-textLength.html
new file mode 100644
index 00000000000..d249278960e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-textLength.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<title>The textLengh IDL attribute</title>
+<meta content="charset=utf-16">
+<link rel="author" title="tigercosmos" href="mailto:phy.tiger@gmail.com">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-textarea-textlength">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<textarea id="textarea"></textarea>
+<script>
+ var textarea = document.getElementById("textarea");
+
+ test(function () {
+ textarea.value= "Hello, World!";
+ assert_equals(textarea.textLength, 13);
+
+ textarea.value = "\u4f60\u597d\uff0c\u4e16\u754c\uff01"; //你好,世界!
+ assert_equals(textarea.textLength, 6);
+ }, "Textarea's 'testLength' should work for utf-16.");
+</script> \ No newline at end of file