<?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=360220 --> <window title="Mozilla Bug 360220" 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 xmlns="http://www.w3.org/1999/xhtml"> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=360220">Mozilla Bug 360220</a> <p id="display"></p> <div id="content" style="display: none"> </div> <pre id="test"> </pre> </body> <menulist id="menulist"> <menupopup> <menuitem id="firstItem" label="foo" selected="true"/> <menuitem id="secondItem" label="bar"/> </menupopup> </menulist> <script class="testbody" type="application/javascript"> <![CDATA[ SimpleTest.waitForExplicitFinish(); /** Test for Bug 360220 **/ var menulist = document.getElementById("menulist"); var secondItem = document.getElementById("secondItem"); menulist.selectedItem = secondItem; is(menulist.label, "bar", "second item was not selected"); let mutObserver = new MutationObserver(() => { is(menulist.label, "new label", "menulist label was not updated to the label of its selected item"); done(); }); mutObserver.observe(menulist, { attributeFilter: ['label'] }); secondItem.label = "new label"; let failureTimeout = setTimeout(function() { ok(false, "menulist label should have updated"); done(); }, 2000); function done() { mutObserver.disconnect(); clearTimeout(failureTimeout); SimpleTest.finish(); } ]]> </script> </window>