mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-11-18 11:08:26 +00:00
183 lines
5.1 KiB
HTML
183 lines
5.1 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=346485
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 346485</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="application/javascript" src="../reflect.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
<script type="application/javascript">
|
|
frameLoaded = function() {
|
|
is(frames['submit_frame'].location.href, "about:blank",
|
|
"Blank frame loaded");
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=346485">Mozilla Bug 346485</a>
|
|
<p id="display"></p>
|
|
<iframe name="submit_frame" onload="frameLoaded()" style="visibility: hidden;"></iframe>
|
|
<div id="content" style="display: none">
|
|
<form id='f' method='get' target='submit_frame' action='foo'>
|
|
<input name='a' id='a'>
|
|
<input name='b' id='b'>
|
|
<output id='o' for='a b' name='output-name'>tulip</output>
|
|
</form>
|
|
</div>
|
|
<pre id="test">
|
|
<script type="application/javascript">
|
|
|
|
/** Test for Bug 346485 **/
|
|
|
|
function checkNameAttribute(element)
|
|
{
|
|
is(element.name, "output-name", "Output name IDL attribute is not correct");
|
|
is(element.getAttribute('name'), "output-name",
|
|
"Output name content attribute is not correct");
|
|
}
|
|
|
|
function checkValueAndDefaultValueIDLAttribute(element)
|
|
{
|
|
is(element.value, element.textContent,
|
|
"The value IDL attribute should act like the textContent IDL attribute");
|
|
|
|
element.value = "foo";
|
|
is(element.value, "foo", "Value should be 'foo'");
|
|
|
|
is(element.defaultValue, "", "Default defaultValue is ''");
|
|
|
|
element.defaultValue = "bar";
|
|
is(element.defaultValue, "bar", "defaultValue should be 'bar'");
|
|
|
|
// More complex situation.
|
|
element.textContent = 'foo';
|
|
var b = document.createElement('b');
|
|
b.textContent = 'bar'
|
|
element.appendChild(b);
|
|
is(element.value, element.textContent,
|
|
"The value IDL attribute should act like the textContent IDL attribute");
|
|
}
|
|
|
|
function checkValueModeFlag(element)
|
|
{
|
|
/**
|
|
* The value mode flag is the flag used to know if value should represent the
|
|
* textContent or the default value.
|
|
*/
|
|
// value mode flag should be 'value'
|
|
isnot(element.defaultValue, element.value,
|
|
"When value is set, defaultValue keeps its value");
|
|
|
|
var f = document.getElementById('f');
|
|
f.reset();
|
|
// value mode flag should be 'default'
|
|
is(element.defaultValue, element.value, "When reset, defaultValue=value");
|
|
is(element.textContent, element.defaultValue,
|
|
"textContent should contain the defaultValue");
|
|
}
|
|
|
|
function checkDescendantChanged(element)
|
|
{
|
|
/**
|
|
* Whenever a descendant is changed if the value mode flag is value,
|
|
* the default value should be the textContent value.
|
|
*/
|
|
element.defaultValue = 'tulip';
|
|
element.value = 'foo';
|
|
|
|
// set value mode flag to 'default'
|
|
var f = document.getElementById('f');
|
|
f.reset();
|
|
|
|
is(element.textContent, element.defaultValue,
|
|
"textContent should contain the defaultValue");
|
|
element.textContent = "bar";
|
|
is(element.textContent, element.defaultValue,
|
|
"textContent should contain the defaultValue");
|
|
}
|
|
|
|
function checkFormIDLAttribute(element)
|
|
{
|
|
is(element.form, document.getElementById('f'),
|
|
"form IDL attribute is invalid");
|
|
}
|
|
|
|
function checkHtmlForIDLAttribute(element)
|
|
{
|
|
is(String(element.htmlFor), 'a b',
|
|
"htmlFor IDL attribute should reflect the for content attribute");
|
|
|
|
// DOMSettableTokenList is tested in another bug so we just test assignation
|
|
element.htmlFor.value = 'a b c';
|
|
is(String(element.htmlFor), 'a b c', "htmlFor should have changed");
|
|
}
|
|
|
|
function submitForm()
|
|
{
|
|
// Setting the values for the submit.
|
|
document.getElementById('o').value = 'foo';
|
|
document.getElementById('a').value = 'afield';
|
|
document.getElementById('b').value = 'bfield';
|
|
|
|
frameLoaded = checkFormSubmission;
|
|
|
|
// This will call checkFormSubmission() which is going to call ST.finish().
|
|
document.getElementById('f').submit();
|
|
}
|
|
|
|
function checkFormSubmission()
|
|
{
|
|
/**
|
|
* All elements values have been set just before the submission.
|
|
* The input elements values should be in the submit url but the ouput
|
|
* element value should not appear.
|
|
*/
|
|
|
|
is(frames['submit_frame'].location.href,
|
|
'http://mochi.test:8888/tests/dom/html/test/forms/foo?a=afield&b=bfield',
|
|
"The output element value should not be submitted");
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
addLoadEvent(function() {
|
|
reflectString({
|
|
element: document.createElement("output"),
|
|
attribute: "name",
|
|
});
|
|
|
|
var o = document.getElementsByTagName('output');
|
|
is(o.length, 1, "There should be one output element");
|
|
|
|
o = o[0];
|
|
ok(o instanceof HTMLOutputElement,
|
|
"The output should be instance of HTMLOutputElement");
|
|
|
|
o = document.getElementById('o');
|
|
ok(o instanceof HTMLOutputElement,
|
|
"The output should be instance of HTMLOutputElement");
|
|
|
|
is(o.type, "output", "Output type IDL attribute should be 'output'");
|
|
|
|
checkNameAttribute(o);
|
|
|
|
checkValueAndDefaultValueIDLAttribute(o);
|
|
|
|
checkValueModeFlag(o);
|
|
|
|
checkDescendantChanged(o);
|
|
|
|
checkFormIDLAttribute(o);
|
|
|
|
checkHtmlForIDLAttribute(o);
|
|
|
|
submitForm();
|
|
});
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|