304 lines
10 KiB
HTML
304 lines
10 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
<style type="text/css">
|
|
input {
|
|
background:rgb(255,255,100);
|
|
}
|
|
input:disabled {
|
|
background:rgb(255,0,0);
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<p id="description"></p>
|
|
<div id="console"></div>
|
|
<form>
|
|
<fieldset>
|
|
<legend><input type="text" id="parserGeneratedInput1"></legend>
|
|
<legend><input type="text" id="parserGeneratedInput2"></legend>
|
|
<input type="text" id="parserGeneratedInput3">
|
|
<input type="text" id="parserGeneratedInput4" disabled>
|
|
</fieldset>
|
|
<fieldset disabled>
|
|
<legend><input type="text" id="parserGeneratedInput5"></legend>
|
|
<legend><input type="text" id="parserGeneratedInput6"></legend>
|
|
<input type="text" id="parserGeneratedInput7">
|
|
<input type="text" id="parserGeneratedInput8" disabled>
|
|
</fieldset>
|
|
<fieldset disabled>
|
|
<input type="text" id="parserGeneratedInput9">
|
|
</fieldset>
|
|
</form>
|
|
|
|
<script>
|
|
description('Tests for HTMLFieldSetElement.disabled behavior.');
|
|
|
|
debug('\nVerifying parser generated fieldsets.');
|
|
var parserGeneratedInput1 = document.getElementById("parserGeneratedInput1");
|
|
var parserGeneratedInput2 = document.getElementById("parserGeneratedInput2");
|
|
var parserGeneratedInput3 = document.getElementById("parserGeneratedInput3");
|
|
var parserGeneratedInput4 = document.getElementById("parserGeneratedInput4");
|
|
var parserGeneratedInput5 = document.getElementById("parserGeneratedInput5");
|
|
var parserGeneratedInput6 = document.getElementById("parserGeneratedInput6");
|
|
var parserGeneratedInput7 = document.getElementById("parserGeneratedInput7");
|
|
var parserGeneratedInput8 = document.getElementById("parserGeneratedInput8");
|
|
var parserGeneratedInput9 = document.getElementById("parserGeneratedInput9");
|
|
|
|
parserGeneratedInput1.focus();
|
|
document.execCommand('insertText', false, 'L');
|
|
parserGeneratedInput2.focus();
|
|
document.execCommand('insertText', false, 'M');
|
|
parserGeneratedInput3.focus();
|
|
document.execCommand('insertText', false, 'N');
|
|
parserGeneratedInput4.focus();
|
|
document.execCommand('insertText', false, 'O');
|
|
parserGeneratedInput5.focus();
|
|
document.execCommand('insertText', false, 'P');
|
|
parserGeneratedInput6.focus();
|
|
document.execCommand('insertText', false, 'Q');
|
|
parserGeneratedInput7.focus();
|
|
document.execCommand('insertText', false, 'R');
|
|
parserGeneratedInput8.focus();
|
|
document.execCommand('insertText', false, 'S');
|
|
parserGeneratedInput9.focus();
|
|
document.execCommand('insertText', false, 'T');
|
|
|
|
shouldBe('parserGeneratedInput1.value', '"L"');
|
|
shouldBe('parserGeneratedInput2.value', '"M"');
|
|
shouldBe('parserGeneratedInput3.value', '"NO"');
|
|
shouldBe('parserGeneratedInput4.value', '""');
|
|
shouldBe('parserGeneratedInput5.value', '"PQRST"');
|
|
shouldBe('parserGeneratedInput6.value', '""');
|
|
shouldBe('parserGeneratedInput7.value', '""');
|
|
shouldBe('parserGeneratedInput8.value', '""');
|
|
shouldBe('parserGeneratedInput9.value', '""');
|
|
|
|
|
|
debug('\nTesting a single fieldset element.');
|
|
var fieldSet = document.createElement('fieldset');
|
|
document.body.appendChild(fieldSet);
|
|
var textInput = document.createElement('input');
|
|
textInput.type = "text";
|
|
fieldSet.appendChild(textInput);
|
|
|
|
debug('Verifying HTMLFormControl can be disabled regardless of enclosing fieldset.');
|
|
textInput.disabled = true;
|
|
shouldBeTrue('textInput.disabled');
|
|
textInput.focus();
|
|
document.execCommand('insertText', false, 'A');
|
|
shouldBe('textInput.value', '""');
|
|
shouldBeFalse('fieldSet.disabled');
|
|
textInput.disabled = false;
|
|
|
|
debug('Fieldset is enabled by default. A user can insertText into the text input field.');
|
|
textInput.focus();
|
|
document.execCommand('insertText', false, 'A');
|
|
shouldBe('textInput.value', '"A"');
|
|
|
|
debug('Disable fieldset.');
|
|
fieldSet.disabled = true;
|
|
shouldBeTrue('fieldSet.disabled');
|
|
|
|
debug('Once the fieldset is disabled, text cannot be inserted.');
|
|
textInput.focus();
|
|
document.execCommand('insertText', false, 'B');
|
|
shouldBe('textInput.value', '"A"');
|
|
|
|
debug("Check if the style of the text element changed.");
|
|
shouldBe("getComputedStyle(textInput).backgroundColor", "'rgb(255, 0, 0)'");
|
|
|
|
debug('Enable fieldset.');
|
|
fieldSet.disabled = false;
|
|
shouldBeFalse('fieldSet.disabled');
|
|
shouldBe("getComputedStyle(textInput).backgroundColor", "'rgb(255, 255, 100)'");
|
|
|
|
textInput.focus();
|
|
document.execCommand('insertText', false, 'B');
|
|
shouldBe('textInput.value', '"AB"');
|
|
|
|
debug('Move the textinput element out of the fieldset.');
|
|
fieldSet.removeChild(textInput);
|
|
document.body.appendChild(textInput);
|
|
|
|
debug('Disable the fieldset.');
|
|
fieldSet.disabled = true;
|
|
shouldBeTrue('fieldSet.disabled');
|
|
|
|
debug('Text can be inserted, because the textinput element is outside of the disabled fieldset.');
|
|
textInput.focus();
|
|
document.execCommand('insertText', false, 'C');
|
|
shouldBe('textInput.value', '"ABC"');
|
|
|
|
debug('Enable the fieldset.');
|
|
fieldSet.disabled = false;
|
|
shouldBeFalse('fieldSet.disabled');
|
|
|
|
debug('Insert a table into the fieldset.');
|
|
var table = document.createElement('table');
|
|
fieldSet.appendChild(table);
|
|
var tr = document.createElement('tr');
|
|
table.appendChild(tr);
|
|
var td = document.createElement('td');
|
|
tr.appendChild(td);
|
|
|
|
debug('Move the textinput field into the table.');
|
|
document.body.removeChild(textInput);
|
|
td.appendChild(textInput);
|
|
|
|
textInput.focus();
|
|
document.execCommand('insertText', false, 'D');
|
|
shouldBe('textInput.value', '"ABCD"');
|
|
|
|
debug('Disable the fieldset.');
|
|
fieldSet.disabled = true;
|
|
shouldBeTrue('fieldSet.disabled');
|
|
|
|
debug('Inserting text should fail.')
|
|
textInput.focus();
|
|
document.execCommand('insertText', false, 'E');
|
|
shouldBe('textInput.value', '"ABCD"');
|
|
|
|
debug('Enable the fieldset.');
|
|
fieldSet.disabled = false;
|
|
shouldBeFalse('fieldSet.disabled');
|
|
|
|
textInput.focus();
|
|
document.execCommand('insertText', false, 'E');
|
|
shouldBe('textInput.value', '"ABCDE"');
|
|
|
|
|
|
debug('\nTesting nested fieldset elements.');
|
|
var outerFieldSet = document.createElement('fieldset');
|
|
document.body.appendChild(outerFieldSet);
|
|
var innerFieldSet = document.createElement('fieldset');
|
|
outerFieldSet.appendChild(innerFieldSet);
|
|
var outerTextInput = document.createElement('input');
|
|
outerTextInput.type = "text";
|
|
outerFieldSet.appendChild(outerTextInput);
|
|
var innerTextInput = document.createElement('input');
|
|
innerTextInput.type = "text";
|
|
innerFieldSet.appendChild(innerTextInput);
|
|
|
|
debug('Verifying that subordinates of both fieldsets are enabled.');
|
|
outerTextInput.focus();
|
|
document.execCommand('insertText', false, 'F');
|
|
innerTextInput.focus();
|
|
document.execCommand('insertText', false, 'F');
|
|
shouldBe('outerTextInput.value', '"F"');
|
|
shouldBe('innerTextInput.value', '"F"');
|
|
|
|
debug('Disabling the inner fieldset only.');
|
|
innerFieldSet.disabled = true;
|
|
shouldBeTrue('innerFieldSet.disabled');
|
|
outerTextInput.focus();
|
|
document.execCommand('insertText', false, 'G');
|
|
innerTextInput.focus();
|
|
document.execCommand('insertText', false, 'G');
|
|
shouldBe('outerTextInput.value', '"FGG"');
|
|
shouldBe('innerTextInput.value', '"F"');
|
|
|
|
debug('Enabling the inner and disabling the outer fieldset.');
|
|
outerFieldSet.disabled = true;
|
|
innerFieldSet.disabled = false;
|
|
shouldBeTrue('outerFieldSet.disabled');
|
|
shouldBeFalse('innerFieldSet.disabled');
|
|
outerTextInput.focus();
|
|
document.execCommand('insertText', false, 'H');
|
|
innerTextInput.focus();
|
|
document.execCommand('insertText', false, 'H');
|
|
shouldBe('outerTextInput.value', '"FGG"');
|
|
shouldBe('innerTextInput.value', '"F"');
|
|
|
|
debug('Disabling both fieldset elements.');
|
|
outerFieldSet.disabled = true;
|
|
innerFieldSet.disabled = true;
|
|
shouldBeTrue('outerFieldSet.disabled');
|
|
shouldBeTrue('innerFieldSet.disabled');
|
|
outerTextInput.focus();
|
|
document.execCommand('insertText', false, 'H');
|
|
innerTextInput.focus();
|
|
document.execCommand('insertText', false, 'H');
|
|
shouldBe('outerTextInput.value', '"FGG"');
|
|
shouldBe('innerTextInput.value', '"F"');
|
|
|
|
debug('Enabling both fieldset elements.');
|
|
outerFieldSet.disabled = false;
|
|
innerFieldSet.disabled = false;
|
|
shouldBeFalse('outerFieldSet.disabled');
|
|
shouldBeFalse('innerFieldSet.disabled');
|
|
outerTextInput.focus();
|
|
document.execCommand('insertText', false, 'H');
|
|
innerTextInput.focus();
|
|
document.execCommand('insertText', false, 'H');
|
|
shouldBe('outerTextInput.value', '"FGGH"');
|
|
shouldBe('innerTextInput.value', '"FH"');
|
|
|
|
|
|
debug('\nTest behavior of the first legend element in a fieldset elements.');
|
|
var legendFieldSet = document.createElement('fieldset');
|
|
document.body.appendChild(legendFieldSet);
|
|
var firstLegend = document.createElement('legend');
|
|
legendFieldSet.appendChild(firstLegend);
|
|
var secondLegend = document.createElement('legend');
|
|
legendFieldSet.appendChild(secondLegend);
|
|
|
|
var firstLegendTextInput = document.createElement('input');
|
|
firstLegendTextInput.type = "text";
|
|
firstLegend.appendChild(firstLegendTextInput);
|
|
|
|
var secondLegendTextInput = document.createElement('input');
|
|
secondLegendTextInput.type = "text";
|
|
secondLegend.appendChild(secondLegendTextInput);
|
|
|
|
debug('Children of the first legend element in a fieldset should not get disabled with the fieldset.');
|
|
legendFieldSet.disabled = true;
|
|
shouldBeTrue('legendFieldSet.disabled');
|
|
firstLegendTextInput.focus();
|
|
document.execCommand('insertText', false, 'I');
|
|
secondLegendTextInput.focus()
|
|
document.execCommand('insertText', false, 'I');
|
|
shouldBe('firstLegendTextInput.value', '"II"');
|
|
shouldBe('secondLegendTextInput.value', '""');
|
|
|
|
debug('Insert another legend element before the currently first one, and check again.');
|
|
var insertedLegend = document.createElement('legend');
|
|
legendFieldSet.insertBefore(insertedLegend, firstLegend);
|
|
var insertedLegendTextInput = document.createElement('input');
|
|
insertedLegend.appendChild(insertedLegendTextInput);
|
|
|
|
insertedLegendTextInput.focus();
|
|
document.execCommand('insertText', false, 'J');
|
|
firstLegendTextInput.focus();
|
|
document.execCommand('insertText', false, 'J');
|
|
secondLegendTextInput.focus()
|
|
document.execCommand('insertText', false, 'J');
|
|
shouldBe('insertedLegendTextInput.value', '"JJJ"');
|
|
shouldBe('firstLegendTextInput.value', '"II"');
|
|
shouldBe('secondLegendTextInput.value', '""');
|
|
|
|
debug('Enable the fieldset again and check for sanity.');
|
|
legendFieldSet.disabled = false;
|
|
shouldBeFalse('legendFieldSet.disabled');
|
|
insertedLegendTextInput.focus();
|
|
document.execCommand('insertText', false, 'K');
|
|
firstLegendTextInput.focus();
|
|
document.execCommand('insertText', false, 'K');
|
|
secondLegendTextInput.focus()
|
|
document.execCommand('insertText', false, 'K');
|
|
shouldBe('insertedLegendTextInput.value', '"JJJK"');
|
|
shouldBe('firstLegendTextInput.value', '"IIK"');
|
|
shouldBe('secondLegendTextInput.value', '"K"');
|
|
|
|
document.body.removeChild(document.getElementsByTagName('form')[0]);
|
|
document.body.removeChild(fieldSet);
|
|
document.body.removeChild(outerFieldSet);
|
|
document.body.removeChild(legendFieldSet);
|
|
var successfullyParsed = true;
|
|
</script>
|
|
<script src="../../../resources/js-test-post.js"></script>
|
|
|
|
</body>
|
|
</html>
|