<?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=533596 --> <window title="Mozilla Bug 533596" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <!-- 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=533596" target="_blank">Mozilla Bug 533596</a> </body> <!-- test code goes here --> <script type="application/javascript"><![CDATA[ /** Test for Bug 533596 **/ function go() { try { XPCNativeWrapper.unwrap(); } catch (e) {} try { XPCNativeWrapper.unwrap(0); } catch (e) {} try { XPCNativeWrapper.unwrap(null); } catch (e) {} var o = {}; is(o, XPCNativeWrapper.unwrap(o), "unwrap on a random object returns it"); var win = $('ifr').contentWindow; var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindowUtils); is(utils.getClassName(win), "Proxy", "win is a Proxy"); ok("x" in XPCNativeWrapper.unwrap(win), "actually unwrapped"); is(utils.getClassName(XPCNativeWrapper.unwrap(win)), "Proxy", "unwrap on an Proxy returns the same object"); is(utils.getClassName(XPCNativeWrapper.unwrap(new XPCNativeWrapper(win))), "Proxy", "unwrap on an explicit NW works too"); ok(utils.getClassName(window) !== "XPCNativeWrapper", "window is not a native wrapper"); ok(utils.getClassName(XPCNativeWrapper.unwrap(new XPCNativeWrapper(window))) !== "XPCSafeJSObjectWrapper", "unwrapping a chrome object returns the object itself"); SimpleTest.finish(); } SimpleTest.waitForExplicitFinish(); ]]></script> <iframe type="content" src="http://example.org/tests/js/xpconnect/tests/mochitest/bug500931_helper.html" onload="go()" id="ifr"> </iframe> </window>