diff options
author | mrmiywj <jsyangwenjie@gmail.com> | 2016-06-10 15:21:32 +0800 |
---|---|---|
committer | mrmiywj <jsyangwenjie@gmail.com> | 2016-06-14 21:40:32 -0700 |
commit | 4bb88432b23b07bd7aab0e60908d57c0cb248ea5 (patch) | |
tree | 0d5d37c52cad872216b18136358d4319457c4b4c | |
parent | 3fa0dca3a32552a83ae020c57535346d9cdf3bdd (diff) | |
download | servo-4bb88432b23b07bd7aab0e60908d57c0cb248ea5.tar.gz servo-4bb88432b23b07bd7aab0e60908d57c0cb248ea5.zip |
indexed getter of form elements
5 files changed, 36 insertions, 6 deletions
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index fcc10e3d134..515d49c0f7c 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -6,6 +6,7 @@ use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::HTMLButtonElementBinding::HTMLButtonElementMethods; +use dom::bindings::codegen::Bindings::HTMLFormControlsCollectionBinding::HTMLFormControlsCollectionMethods; use dom::bindings::codegen::Bindings::HTMLFormElementBinding; use dom::bindings::codegen::Bindings::HTMLFormElementBinding::HTMLFormElementMethods; use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods; @@ -229,6 +230,12 @@ impl HTMLFormElementMethods for HTMLFormElement { fn Length(&self) -> u32 { self.Elements().Length() as u32 } + + // https://html.spec.whatwg.org/multipage/#dom-form-item + fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<Element>> { + let elements = self.Elements(); + elements.IndexedGetter(index, found) + } } #[derive(Copy, Clone, HeapSizeOf, PartialEq)] diff --git a/components/script/dom/webidls/HTMLFormElement.webidl b/components/script/dom/webidls/HTMLFormElement.webidl index a56b83235b6..fba10d25509 100644 --- a/components/script/dom/webidls/HTMLFormElement.webidl +++ b/components/script/dom/webidls/HTMLFormElement.webidl @@ -17,7 +17,7 @@ interface HTMLFormElement : HTMLElement { [SameObject] readonly attribute HTMLFormControlsCollection elements; readonly attribute unsigned long length; - //getter Element (unsigned long index); + getter Element? (unsigned long index); //getter (RadioNodeList or Element) (DOMString name); void submit(); diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 069fe38d842..3bfef890c21 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -36058,6 +36058,12 @@ "url": "/html/semantics/embedded-content/the-iframe-element/same_origin_parentage.html" } ], + "html/semantics/forms/the-form-element/form-indexed-element.html": [ + { + "path": "html/semantics/forms/the-form-element/form-indexed-element.html", + "url": "/html/semantics/forms/the-form-element/form-indexed-element.html" + } + ], "url/url-domainToUnicode.html": [ { "path": "url/url-domainToUnicode.html", diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/031.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/031.html.ini deleted file mode 100644 index 3a3b16289bd..00000000000 --- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/031.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[031.html] - type: testharness - [ scheduler: focus and blur events] - expected: FAIL - diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-form-element/form-indexed-element.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-form-element/form-indexed-element.html new file mode 100644 index 00000000000..44471aa8ca3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-form-element/form-indexed-element.html @@ -0,0 +1,22 @@ +<!doctype html> +<meta charset="utf-8"> +<title>form.elements: indexed</title> +<link rel="author" title="Ivan.Yang" href="mailto:jsyangwenjie@gmail.com"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<div id="test"> +<form id=form> +<input type="radio" name="radio1" id="r1" value=1> +<input type="radio" name="radio2" id="r2" value=2> +</form> +</div> +<script> +test(function() { + var form = document.getElementById("form"); + assert_equals(form[0], document.getElementById("r1")); + assert_equals(form[1], document.getElementById("r2")); + assert_equals(form[2], undefined); + assert_equals(form[-1], undefined); + }, "form.elements should be accessed correctly by index") +</script> |