diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-06-15 13:59:12 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-15 13:59:12 -0400 |
commit | 0c5b0201637899bd8ec7f63d0dc3944a01895986 (patch) | |
tree | c670dbf26e7e49deed6f377d4d708f61cedbea61 | |
parent | 3279d1fe85d3aa8dbb99c59b4184e4bc3cc6c54b (diff) | |
parent | 0907940db85f49541b1caa7581027ea0c02413aa (diff) | |
download | servo-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 -->
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 |