gecko-dev/dom/xbl/test/test_bug398492.xul

85 строки
2.8 KiB
XML

<?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=398492
-->
<window title="Mozilla Bug 398492"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<bindings xmlns="http://www.mozilla.org/xbl">
<binding id="test">
<content>
<xul:hbox id="xxx"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<children/>
</xul:hbox>
</content>
</binding>
</bindings>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=398492"
target="_blank">Mozilla Bug 398492</a>
</body>
<hbox id="testbox" style="-moz-binding: url(#test)">Text</hbox>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
/** Test for Bug 398492 **/
SimpleTest.waitForExplicitFinish();
const InspectorUtils = SpecialPowers.InspectorUtils;
function getXBLParent(node) {
return SpecialPowers.unwrap(InspectorUtils.getParentForNode(node, true));
}
addLoadEvent(function() {
var n = $("testbox");
var kid = n.firstChild;
var anonKid = document.getAnonymousNodes(n)[0];
is(anonKid instanceof XULElement, true, "Must be a XUL element");
is(anonKid, getXBLParent(kid), "Unexpected anonymous nodes");
var n2 = n.cloneNode(true);
var kid2 = n2.firstChild;
var anonKids = document.getAnonymousNodes(n2);
is(anonKids, null, "No XBL binding attached to cloned node");
var n3 = document.createXULElement("hbox");
document.documentElement.appendChild(n3);
var kid3 = document.createTextNode("Text");
n3.appendChild(kid3);
// Note - we rely on the fact that the binding is preloaded
// by the other hbox here, so that the binding will be applied
// sync.
n3.style.MozBinding = "url(" + document.location.href + "#test)";
n3.getBoundingClientRect(); // Flush styles.
var anonKid3 = document.getAnonymousNodes(n3)[0];
is(anonKid3 instanceof XULElement, true,
"Must be a XUL element after addBinding");
is(anonKid3, getXBLParent(kid3),
"Unexpected anonymous nodes after addBinding");
n.removeChild(kid);
isnot(anonKid, getXBLParent(kid),
"Should have removed kid from insertion point");
n3.removeChild(kid3);
isnot(anonKid3, getXBLParent(kid3),
"Should have removed kid3 from insertion point");
SimpleTest.finish();
});
]]></script>
</window>