123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <!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");
- // DOMTokenList 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>
|