141 lines
5.4 KiB
HTML
141 lines
5.4 KiB
HTML
<!DOCTYPE html><!-- webkit-test-runner [ KeygenElementEnabled=true ] -->
|
|
<html>
|
|
<body>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<p id="description"></p>
|
|
<div id="divId">
|
|
<form id="form1">
|
|
<button id=button1></button>
|
|
<fieldset id=fieldset1><legend id=legend1></legend></fieldset>
|
|
<input id=inputhidden type=hidden>
|
|
<input id=commoninput type=text>
|
|
<input id=inputcommon type=search value=searching>
|
|
<input id=inputCOMMON type=url>
|
|
<input id=commoninput type=email>
|
|
<input id=inputpassword type=password>
|
|
<input id=inputdate type=date>
|
|
<input id=numberId name=inputcommon type=number value=123>
|
|
<input id=inputrange type=range>
|
|
<input id=inputcolor type=color>
|
|
<input id=inputcheckbox type=checkbox>
|
|
<input id=inputcommon type=radio value="inputRadioValue">
|
|
<input id=inputfile type=file>
|
|
<input id=inputsubmit type=submit>
|
|
<input id=inputcommon type=image>
|
|
<input id=commoninput type=reset>
|
|
<input id=inputcommon type=button value=buttonValue>
|
|
<keygen id=keygen1></keygen>
|
|
<label id=label1></label>
|
|
<meter id=meter1></meter>
|
|
<object id=object1></object>
|
|
<output id=output1></output>
|
|
<progress id=progress1></progress>
|
|
<select id=select1 name=inputCOmmon>
|
|
<optgroup id=optgroup1>group1</optgroup>
|
|
<option id=option1>option1</option>
|
|
</select>
|
|
<textarea id=textarea1></textarea>
|
|
</form>
|
|
</div>
|
|
<div id="console"></div>
|
|
<script>
|
|
description("This test is for RadioNodeList specified at http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#radionodelist ");
|
|
debug("");
|
|
var owner = document.getElementById('form1');
|
|
|
|
shouldBe('owner.elements.length', '23');
|
|
|
|
var elementsList = owner.elements;
|
|
var radioNodeList = elementsList.namedItem("inputcommon");
|
|
shouldBe('radioNodeList.length', '4');
|
|
|
|
shouldBe('radioNodeList[0].value', "'searching'");
|
|
shouldBe('radioNodeList[1].value', "'123'");
|
|
shouldBe('radioNodeList[2].value', "'inputRadioValue'");
|
|
shouldBe('radioNodeList[3].value', "'buttonValue'");
|
|
|
|
debug("");
|
|
debug("Changing the input value to check RadioNodeList is live view of FormCollection");
|
|
document.getElementById("numberId").value = 456;
|
|
shouldBe('radioNodeList[1].value', "'456'");
|
|
|
|
debug("");
|
|
debug("Checking value IDL attribute on the RadioNodeList");
|
|
shouldBe('radioNodeList.value', '""');
|
|
shouldBe('radioNodeList.value = "inputRadioValue"; radioNodeList[2].checked', 'true');
|
|
shouldBe('Object.prototype.toString.call(radioNodeList[2])', "'[object HTMLInputElement]'");
|
|
shouldBe('radioNodeList[2].type', "'radio'");
|
|
|
|
radioNodeList[2].checked = false;
|
|
shouldBe('radioNodeList.value', '""');
|
|
shouldBe('radioNodeList[2].checked = true; radioNodeList.value', "'inputRadioValue'");
|
|
|
|
var newElement = document.createElement("input");
|
|
newElement.setAttribute("type", "text");
|
|
newElement.setAttribute("value", "new element");
|
|
newElement.setAttribute("id", "inputcommon");
|
|
|
|
debug("");
|
|
debug("Check RadioNodeList is updated after adding a new element");
|
|
shouldBe('owner.appendChild(newElement); radioNodeList.length', '5');
|
|
shouldBe('radioNodeList[4].value', "'new element'");
|
|
|
|
debug("");
|
|
debug("Check RadioNodeList is updated after remove an element");
|
|
shouldBe('owner.removeChild(newElement); radioNodeList.length', '4');
|
|
shouldBe('radioNodeList[3].value', "'buttonValue'");
|
|
|
|
var nonSubtreeElement = document.createElement("input");
|
|
nonSubtreeElement.setAttribute("type", "text");
|
|
nonSubtreeElement.setAttribute("value", "non subtree element");
|
|
nonSubtreeElement.setAttribute("id", "inputcommon");
|
|
nonSubtreeElement.setAttribute("form", "form1");
|
|
|
|
var container = document.getElementById("divId");
|
|
|
|
debug("");
|
|
debug("Check RadioNodeList is updated after adding a new element");
|
|
shouldBe('container.appendChild(nonSubtreeElement); radioNodeList.length', '5');
|
|
shouldBe('owner.elements.length', '24');
|
|
shouldBe('radioNodeList[4].value', "'non subtree element'");
|
|
|
|
debug("");
|
|
debug("Check RadioNodeList is updated after change in id, type and checked state of an element");
|
|
shouldBe('radioNodeList.length', '5');
|
|
debug("After changing the id");
|
|
radioNodeList[4].id = "changedName";
|
|
shouldBe('radioNodeList.length', '4');
|
|
|
|
shouldBe('elementsList[13].checked = false; radioNodeList.value', '""');
|
|
shouldBe('elementsList[13].checked = true; radioNodeList.value', "'inputRadioValue'");
|
|
shouldBe('elementsList[13].type = "date"; radioNodeList.value', "''");
|
|
|
|
debug("");
|
|
debug("Check second RadioNodeList is also created properly");
|
|
var radioNodeList2 = elementsList.namedItem("commoninput");
|
|
shouldBe('radioNodeList2.length', '3');
|
|
|
|
shouldBe('radioNodeList2[0].type', "'text'");
|
|
shouldBe('radioNodeList2[1].type', "'email'");
|
|
shouldBe('radioNodeList2[2].type', "'reset'");
|
|
radioNodeList2[2].id = "idChanged";
|
|
debug("After changing the id");
|
|
shouldBe('radioNodeList2.length', '2');
|
|
debug("");
|
|
|
|
debug("Check that object element also reflects in RadioNodeList.");
|
|
document.getElementById("object1").id = "inputcommon";
|
|
shouldBe('radioNodeList.length', '5');
|
|
|
|
debug("");
|
|
debug("Check that object element does not reflect in RadioNodeList if its owner form is not present.");
|
|
var nonSubtreeObjectElement = document.createElement("object");
|
|
nonSubtreeObjectElement.setAttribute("id", "inputcommon");
|
|
shouldBe('container.appendChild(nonSubtreeObjectElement); radioNodeList.length', '5');
|
|
|
|
container.parentNode.removeChild(container);
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|