diff options
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 03ca9b864ab..762716b7a09 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -346115,6 +346115,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", @@ -583616,6 +583622,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 |