112 lines
4.9 KiB
HTML
112 lines
4.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- webkit-test-runner [ KeygenElementEnabled=true ] -->
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<p id="description"></p>
|
|
<div id="console"></div>
|
|
<script>
|
|
description("This test examines the order of form associated elements which are classified as 'listed'.");
|
|
|
|
var container = document.createElement('div');
|
|
document.body.appendChild(container);
|
|
var owner;
|
|
|
|
function checkOrder(victims) {
|
|
if (owner.elements.length != victims.length)
|
|
return 'length mismatch, elements.length = ' + owner.elements.length +
|
|
', expected length = ' + victims.length;
|
|
for (var i = 0; i < victims.length; ++i)
|
|
if (owner.elements[i] != victims[i])
|
|
return 'element mismatch at index ' + i;
|
|
return 'OK';
|
|
}
|
|
|
|
debug('- Checks the order of form associated elements.');
|
|
container.innerHTML = '<form id=owner>' +
|
|
'<button name=victim></button>' +
|
|
'<fieldset name=victim>Test</fieldset>' +
|
|
'<input name=victim/>' +
|
|
'<keygen name=victim></keygen>' +
|
|
'<label name=victim></label>' +
|
|
'<meter name=victim></meter>' +
|
|
'<object name=victim></object>' +
|
|
'<output name=victim></output>' +
|
|
'<progress name=victim></progress>' +
|
|
'<select name=victim></select>' +
|
|
'<textarea name=victim></textarea>'+
|
|
'</form>';
|
|
owner = document.getElementById('owner');
|
|
var button = document.getElementsByTagName('button')[0];
|
|
var fieldset = document.getElementsByTagName('fieldset')[0];
|
|
var input = document.getElementsByTagName('input')[0];
|
|
var keygen = document.getElementsByTagName('keygen')[0];
|
|
var label = document.getElementsByTagName('label')[0];
|
|
var meter = document.getElementsByTagName('meter')[0];
|
|
var object = document.getElementsByTagName('object')[0];
|
|
var output = document.getElementsByTagName('output')[0];
|
|
var progress = document.getElementsByTagName('progress')[0];
|
|
var select = document.getElementsByTagName('select')[0];
|
|
var textarea = document.getElementsByTagName('textarea')[0];
|
|
shouldBe('checkOrder([button, fieldset, input, keygen, object, output, select, textarea])', '"OK"');
|
|
|
|
debug('');
|
|
debug('- Checks the order after some elements removed/inserted.');
|
|
owner.removeChild(object);
|
|
shouldBe('checkOrder([button, fieldset, input, keygen, output, select, textarea])', '"OK"');
|
|
owner.removeChild(button);
|
|
shouldBe('checkOrder([fieldset, input, keygen, output, select, textarea])', '"OK"');
|
|
owner.insertBefore(object, fieldset);
|
|
shouldBe('checkOrder([object, fieldset, input, keygen, output, select, textarea])', '"OK"');
|
|
owner.appendChild(button);
|
|
shouldBe('checkOrder([object, fieldset, input, keygen, output, select, textarea, button])', '"OK"');
|
|
|
|
debug('');
|
|
debug('- Checks the order of form associated elements with form attribute.');
|
|
container.innerHTML = '<button name=victim form=owner></button>' +
|
|
'<fieldset name=victim form=owner>Test</fieldset>' +
|
|
'<input name=victim form=owner />' +
|
|
'<keygen name=victim form=owner></keygen>' +
|
|
'<form id=owner>' +
|
|
'<label name=victim></label>' +
|
|
'<meter name=victim></meter>' +
|
|
'<object name=victim></object>' +
|
|
'</form>' +
|
|
'<output name=victim form=owner></output>' +
|
|
'<progress name=victim form=owner></progress>' +
|
|
'<select name=victim form=owner></select>' +
|
|
'<textarea name=victim form=owner></textarea>';
|
|
owner = document.getElementById('owner');
|
|
button = document.getElementsByTagName('button')[0];
|
|
fieldset = document.getElementsByTagName('fieldset')[0];
|
|
input = document.getElementsByTagName('input')[0];
|
|
keygen = document.getElementsByTagName('keygen')[0];
|
|
label = document.getElementsByTagName('label')[0];
|
|
meter = document.getElementsByTagName('meter')[0];
|
|
object = document.getElementsByTagName('object')[0];
|
|
output = document.getElementsByTagName('output')[0];
|
|
progress = document.getElementsByTagName('progress')[0];
|
|
select = document.getElementsByTagName('select')[0];
|
|
textarea = document.getElementsByTagName('textarea')[0];
|
|
shouldBe('checkOrder([button, fieldset, input, keygen, object, output, select, textarea])', '"OK"');
|
|
|
|
debug('');
|
|
debug('- Checks the order after some elements removed/inserted with form attribute.');
|
|
owner.removeChild(object);
|
|
shouldBe('checkOrder([button, fieldset, input, keygen, output, select, textarea])', '"OK"');
|
|
container.removeChild(button);
|
|
shouldBe('checkOrder([fieldset, input, keygen, output, select, textarea])', '"OK"');
|
|
container.removeChild(textarea);
|
|
shouldBe('checkOrder([fieldset, input, keygen, output, select])', '"OK"');
|
|
owner.appendChild(object);
|
|
shouldBe('checkOrder([fieldset, input, keygen, object, output, select])', '"OK"');
|
|
container.insertBefore(textarea, fieldset);
|
|
shouldBe('checkOrder([textarea, fieldset, input, keygen, object, output, select])', '"OK"');
|
|
container.appendChild(button);
|
|
shouldBe('checkOrder([textarea, fieldset, input, keygen, object, output, select, button])', '"OK"');
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|