Index: LayoutTests/imported/web-platform-tests/html/semantics/forms/the-label-element/label-attributes.html |
diff --git a/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-label-element/label-attributes.html b/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-label-element/label-attributes.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..164eaccbe64eaa30d36d85ce8a3fc49cb8b03418 |
--- /dev/null |
+++ b/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-label-element/label-attributes.html |
@@ -0,0 +1,124 @@ |
+<!DOCTYPE html> |
+<meta charset="utf-8"> |
+<title>HTML Test: The label element</title> |
+<link rel="author" title="Intel" href="http://www.intel.com/"> |
+<script src="../../../../../../resources/testharness.js"></script> |
+<script src="../../../../../../resources/testharnessreport.js"></script> |
+<div id="log"></div> |
+<form id="fm" style="display:none"> |
+ <label id="lbl0" for="test0"></label> |
+ <b id="test0"></b> |
+ |
+ <input id="test1"></input> |
+ |
+ <label id="lbl1"> |
+ <a id="test2"></a> |
+ <div><input id="test3"></div> |
+ <input id="test4"> |
+ </label> |
+ |
+ <label id="lbl2" for="testx"> |
+ <input id="test5"> |
+ </label> |
+ |
+ <label id="lbl3" for="test6"> |
+ <b id="test6"></b> |
+ <input id="test6" class="class1"> |
+ </label> |
+ |
+ <label id="lbl4" for=""> |
+ <input id="" class="class2"> |
+ </label> |
+ |
+ <label id="lbl5" for="test7"></label> |
+ <input id="test7"> |
+</form> |
+ |
+<label id="lbl6" for="test7"></label> |
+ |
+<script> |
+ |
+ //control attribute |
+ test(function () { |
+ assert_not_equals(document.getElementById("lbl0").control, document.getElementById("test0"), |
+ "An element that's not a labelable element can't be a label element's labeled control."); |
+ assert_equals(document.getElementById("lbl0").control, null, |
+ "A label element whose 'for' attribute doesn't reference any labelable element shouldn't have any labeled control."); |
+ }, "A label element with a 'for' attribute should only be associated with a labelable element."); |
+ |
+ test(function () { |
+ var label = document.createElement("label"); |
+ label.htmlFor = "test1"; |
+ assert_not_equals(label.control, document.getElementById("test1"), |
+ "A label element not in a document should not label an element in a document."); |
+ document.body.appendChild(label); |
+ assert_equals(label.control, document.getElementById("test1")); |
+ }, "A label element not in a document can not label any element in the document."); |
+ |
+ test(function () { |
+ assert_equals(document.getElementById("lbl1").control, document.getElementById("test3"), |
+ "The first labelable descendant of a label element should be its labeled control."); |
+ |
+ var input = document.createElement("input"); |
+ document.getElementById("lbl1").insertBefore(input, document.getElementById("test2")); |
+ assert_equals(document.getElementById("lbl1").control, input, |
+ "The first labelable descendant of a label element in tree order should be its labeled control."); |
+ }, "The labeled control for a label element that has no 'for' attribute is the first labelable element which is a descendant of that label element."); |
+ |
+ test(function () { |
+ assert_equals(document.getElementById("lbl2").control, null, |
+ "The label's 'control' property should return null if its 'for' attribute points to an inexistent element."); |
+ }, "The 'for' attribute points to an inexistent id."); |
+ |
+ test(function () { |
+ assert_equals(document.getElementById("lbl3").control, null, "The label should have no control associated."); |
+ assert_equals(document.querySelector(".class1").labels.length, 0); |
+ }, "A non-control follows by a control with same ID."); |
+ |
+ test(function () { |
+ assert_equals(document.getElementById("lbl4").control, null, |
+ "A label element with an empty 'for' attribute should not associate with anything."); |
+ }, "The 'for' attribute is an empty string."); |
+ |
+ //labels attribute |
+ test(function () { |
+ var labels = document.getElementById("test7").labels; |
+ assert_true(labels instanceof NodeList, |
+ "A form control's 'labels' property should be an instance of a NodeList."); |
+ assert_equals(labels.length, 2, |
+ "The number of labels associated with a form control should be the number of label elements for which it is a labeled control."); |
+ assert_array_equals(labels, [document.getElementById("lbl5"), document.getElementById("lbl6")], |
+ "The labels for a form control should be returned in tree order."); |
+ |
+ var newLabel = document.createElement("label"); |
+ newLabel.htmlFor = "test7"; |
+ document.getElementById("fm").insertBefore(newLabel, document.getElementById("lbl0")); |
+ assert_array_equals(document.getElementById("test7").labels, [newLabel, document.getElementById("lbl5"), document.getElementById("lbl6")], |
+ "The labels for a form control should be returned in tree order."); |
+ }, "A form control has multiple labels."); |
+ |
+ test(function () { |
+ var labels = document.getElementById("test4").labels; |
+ assert_true(labels instanceof NodeList, "A form control's 'labels' property should be an instance of a NodeList."); |
+ assert_equals(labels.length, 0, "The number of labels should be 0 if the associated form control isn't referenced by any <label>."); |
+ }, "A form control has no label 1."); |
+ |
+ test(function () { |
+ assert_equals(document.getElementById("test5").labels.length, 0, |
+ "The number of labels should be 0 if the form control has an ancestor label elment that the for attribute points to another control."); |
+ assert_equals(document.getElementById("lbl2").control, null, |
+ "The labeled cotrol should be associated with the control whose ID is equal to the value of the 'for' attribute."); |
+ }, "A form control has no label 2."); |
+ |
+ // form attribute |
+ test(function () { |
+ assert_equals(document.getElementById("lbl0").form, document.getElementById("fm"), |
+ "The 'form' property for a label with a form owner should return the form owner."); |
+ }, "A label's form attribute should return its form owner."); |
+ |
+ test(function () { |
+ assert_equals(document.getElementById("lbl6").form, null, |
+ "The 'form' property for a label without a form owner should return null."); |
+ }, "Check that the labels property of a form control with no label returns a zero-length NodeList."); |
+ |
+</script> |