aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-06-15 01:10:49 -0500
committerGitHub <noreply@github.com>2016-06-15 01:10:49 -0500
commit2086d216ddf2cf87f44dd2da44281daaf810e0a0 (patch)
treebe11be289522e9b656998be238e040e643639e30
parentbc2f4c3450787654c955c7b4ce08d98f1f168e70 (diff)
parent4bb88432b23b07bd7aab0e60908d57c0cb248ea5 (diff)
downloadservo-2086d216ddf2cf87f44dd2da44281daaf810e0a0.tar.gz
servo-2086d216ddf2cf87f44dd2da44281daaf810e0a0.zip
Auto merge of #11697 - mrmiywj:form-index-getter, r=Ms2ger
indexed getter of form elements <!-- Please describe your changes on the following line: --> --- <!-- 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 - [X] These changes fix #11405 (github issue number if applicable). <!-- Either: --> - [X] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- 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="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11697) <!-- Reviewable:end -->
-rw-r--r--components/script/dom/htmlformelement.rs7
-rw-r--r--components/script/dom/webidls/HTMLFormElement.webidl2
-rw-r--r--tests/wpt/metadata/MANIFEST.json6
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/031.html.ini5
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-form-element/form-indexed-element.html22
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 cf86aac2955..b97ed7da68b 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -36064,6 +36064,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>