Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 771429. Instead of using bound functions for the functions we get…
… off the sandbox proto, use a function proxy. That allows property gets on the functions to get through. r=bholley, a=akeybl
- Loading branch information
Showing
4 changed files
with
125 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
<?xml version="1.0"?> | ||
<?xml-stylesheet type="text/css" href="chrome://global/skin"?> | ||
<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?> | ||
<!-- | ||
https://bugzilla.mozilla.org/show_bug.cgi?id=771429 | ||
--> | ||
<window title="Mozilla Bug 771429" | ||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> | ||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> | ||
|
||
<!-- 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=771429" | ||
target="_blank">Mozilla Bug 771429</a> | ||
</body> | ||
|
||
<!-- test code goes here --> | ||
<script type="application/javascript"> | ||
<![CDATA[ | ||
/** Test for Bug 771429 **/ | ||
function f() {} | ||
function g() { return this; } | ||
f.x = 2; | ||
f.g = g; | ||
var Cu = Components.utils; | ||
var s = new Cu.Sandbox(window, { sandboxPrototype: window } ); | ||
try { | ||
is(Cu.evalInSandbox('f.x', s), 2, | ||
"Should have gotten the right thing back"); | ||
is(Cu.evalInSandbox('f.g()', s), f, | ||
"Should have the right function object"); | ||
is(Cu.evalInSandbox('var x = { z: 7 }; g.call(x).z', s), 7, | ||
"Should not rebind calls that are already bound"); | ||
// And test what happens when we use the normal Function.prototype.call | ||
// on g instead of whatever our proxies happen to return. | ||
is(Cu.evalInSandbox('var x = { z: 7 }; Function.prototype.call.call(g, x).z', s), 7, | ||
"Should not rebind calls that are already bound"); | ||
} catch (e) { | ||
ok(false, "Should not get an exception: " + e); | ||
} | ||
]]> | ||
</script> | ||
</window> |