12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?xml version="1.0"?>
- <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
- <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
- <!--
- https://bugzilla.mozilla.org/show_bug.cgi?id=468176
- -->
- <window title="Test for Bug 468176"
- id="test_bug468176_xul"
- xmlns:html="http://www.w3.org/1999/xhtml"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <body id="body" xmlns="http://www.w3.org/1999/xhtml">
- <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=468176">Mozilla Bug 468176</a>
- <xul:hbox id="b1" value="foo"/>
- <xul:hbox id="o1">
- <xul:observes id="inner" element="b1" attribute="*"/>
- </xul:hbox>
- <pre id="test">
- <script class="testbody" type="text/javascript">
- <![CDATA[
- SimpleTest.waitForExplicitFinish();
- var broadcastCount = 0;
- function b_listener(evt) {
- ++broadcastCount;
- }
- function do_test() {
- var b1 = document.getElementById("b1");
- var o1 = document.getElementById("o1");
- var inner = document.getElementById("inner");
- is(o1.getAttribute("value"), b1.getAttribute("value"), "Wrong value (1)");
- inner.addEventListener("broadcast", b_listener, true);
- b1.setAttribute("value", "bar");
- is(o1.getAttribute("value"), b1.getAttribute("value"), "Wrong value (2)");
- is(broadcastCount, 1, "Wrong value (3)");
- b1.removeAttribute("value");
- is(o1.hasAttribute("value"), b1.hasAttribute("value"), "Wrong value (4)");
- is(broadcastCount, 2, "Wrong value (5)");
- o1.setAttribute("value", "foo");
- isnot(o1.getAttribute("value"), b1.getAttribute("value"), "Wrong value (6)");
- is(broadcastCount, 2, "Wrong value (7)");
- b1.setAttribute("value", "foobar");
- is(o1.getAttribute("value"), b1.getAttribute("value"), "Wrong value (8)");
- is(broadcastCount, 3, "Wrong value (9)");
- b1.removeAttribute("value");
- is(o1.getAttribute("value"), b1.getAttribute("value"), "Wrong value (10)");
- is(broadcastCount, 4, "Wrong value (11)");
- b1.removeAttribute("value");
- is(o1.getAttribute("value"), b1.getAttribute("value"), "Wrong value (12)");
- is(broadcastCount, 4, "Wrong value (13)");
- o1.setAttribute("value", "bar");
- b1.setAttribute("value", "bar"); // This should still dispatch 'broadcast'
- is(o1.getAttribute("value"), b1.getAttribute("value"), "Wrong value (14)");
- is(broadcastCount, 5, "Wrong value (15)");
- //After removing listener, changes to broadcaster shouldn't have any effect.
- o1.parentNode.removeChild(o1);
- b1.setAttribute("value", "foo");
- isnot(o1.getAttribute("value"), b1.getAttribute("value"), "Wrong value (16)");
- is(broadcastCount, 5, "Wrong value (17)");
- SimpleTest.finish();
- }
- addLoadEvent(do_test);
- ]]>
- </script>
- </pre>
- </body>
- </window>
|