Commit Graph

469 Commits

Author SHA1 Message Date
Bobby Holley
174fac9ba4 Bug 658909 - Remove GWNOJO from JSObject2NativeInterface. r=mrbkap 2013-03-21 08:20:44 -07:00
Bobby Holley
c651a918fd Bug 658909 - Implement carefully-checked unwrapping in XPCCallContext. r=mrbkap 2013-03-21 08:20:42 -07:00
Bobby Holley
821b04d2d6 Bug 658909 - Make isSafeToUnwrap pseudo-dynamic for SOWs. r=mrbkap
This can go away as soon as XBL scopes are no longer behind a pref.
2013-03-21 08:20:41 -07:00
Jon Coppeard
6d69a696e4 Bug 853028 - GC: Fix some rooting issues found by static analysis r=terrence
--HG--
extra : rebase_source : a1d340a00516ae890c98fa7420497e85526823fc
2013-03-21 12:56:58 +00:00
Mike Shal
ea1d9b8ba7 Bug 844654 - Part 2: Move MODULE to moz.build; rs=gps 2013-03-19 11:47:00 -07:00
Mohit Gahlot
178c13c865 Bug 851377 - Now ResolvingId::isResolving is not called with a null object. r=bholley 2013-03-18 21:28:05 +05:30
Bobby Holley
71de982af1 Bug 851987 - QI to nsPIDOMWindow instead of nsIDOMWindow in XPCWrappedJS. r=bz 2013-03-18 14:30:23 -07:00
Ms2ger
24bcddcf77 Bug 845374 - Part l: Stop including nsIDocument.h in nsContentUtils.h and fix two nits; r=khuey 2013-03-17 08:55:15 +01:00
Bobby Holley
876133f6c7 Bug 850517 - Support named window access via Xray. r=mrbkap 2013-03-14 22:38:26 -07:00
Bobby Holley
1e45639054 Bug 849730 - Let objectClassIs through for COWs. r=mrbkap 2013-03-13 14:48:59 -07:00
Bill McCloskey
15ccdb3cef Bug 846890 - Avoid check for native anonymous content when possible (r=bholley) 2013-03-08 18:49:36 -08:00
Bill McCloskey
7c63e47dd5 Back out bug 846890 for reftest orange 2013-03-08 21:27:25 -08:00
Bill McCloskey
df7b843a49 Bug 846890 - Avoid check for native anonymous content when possible (r=bholley) 2013-03-08 18:49:36 -08:00
Jon Coppeard
f85957ecb3 Bug 848395 - GC: Move Rooted to JS namespace - rename js::Rooted to JS::Rooted outside SpiderMonkey r=terrence
--HG--
extra : rebase_source : 35cbf3cc4da4598c2e9e6975028ef397718849db
2013-03-06 16:41:43 +00:00
Ed Morley
0887cddaa0 Backed out changeset 28ef4bdff455 (bug 848395) 2013-03-07 13:03:35 +00:00
Jon Coppeard
19ed4f05c2 Bug 848395 - GC: Move Rooted to JS namespace - rename js::Rooted to JS::Rooted outside SpiderMonkey r=terrence
--HG--
extra : rebase_source : 866879df05e3ec3f8e93570eb3f6b71103636b41
2013-03-06 16:41:43 +00:00
Gregory Szorc
803629b9c6 Merge mozilla-central into build-system
There were merges in configure.in and some Makefile.in. None had any
conflicts. I spot verified the Makefile.in changes and confirmed that
the changes did not touch any DIRS* variables.
2013-02-27 10:03:52 -08:00
Gregory Szorc
16f0413b0c Merge mozilla-central into build-system
Only conflict was configure.in amd was due to context, not
changed lines themselves.
2013-02-25 22:09:18 -08:00
Gregory Szorc
51faf012ef Bug 784841 - Part 18s: Convert /js; r=glandium 2013-02-25 12:47:22 -08:00
Bobby Holley
71a3669399 Bug 836301 - Hoist some assertions, remove a bunch of no-op trap overrides, and add assertions that we've entered our policy. r=mrbkap 2013-02-25 13:54:18 -08:00
Bobby Holley
c3361bfc99 Bug 836301 - Hoist enter() calls from {Xray,}Wrapper::foo into Proxy::foo. r=mrbkap 2013-02-25 13:54:18 -08:00
Bobby Holley
256ed2c8ba Bug 836301 - Introduce an RAII class for entering policies. r=mrbkap
This will allow us to make some hard assertions that a given policy has been
entered exactly once.
2013-02-25 13:54:18 -08:00
Bobby Holley
22266c42fe Bug 836301 - Add Special handling to allow us to call enter() for defineProperty on Xrays. r=mrbkap 2013-02-25 13:54:17 -08:00
Bobby Holley
3cd9119770 Bug 836301 - Stop using JSRESOLVE_ASSIGNING to determine GET vs SET. r=mrbkap
This is just a heuristic, anyway, and some of the usage is downright broken.
There are two cases here:

1 - Deciding what to do for get{Own,}PropertyDescriptor. In these cases, we can
just enter with GET and rely on the filtering machinery to filter out dangerous
setters for security wrappers.

2 - Custom Xray props. None of these make sense in a |set| context. In fact,
    they generally have null setters anyway, so we can just assume GET.

The policy-entering code in XrayWrapper is super haphazard. We'll get rid of it
entirely later in these patches.
2013-02-25 13:54:17 -08:00
Bobby Holley
2c5746f6db Bug 834732 - Assert proper cx stack handling in WrapperFactory::Rewrap. r=mrbkap 2013-02-26 11:04:13 -08:00
Bobby Holley
0cff91747e Bug 834697 - Enable XBL scopes, and disable assertion. r=bz,me 2013-02-14 15:15:59 +01:00
Ryan VanderMeulen
0e981ca346 Backed out 12 changesets (bug 834732) for b2g bustage and OSX mochitest-1 crashes on a CLOSED TREE. 2013-02-12 20:54:48 -05:00
Bobby Holley
f946ae9e15 Bug 834732 - Assert proper cx stack handling in WrapperFactory::Rewrap. r=mrbkap 2013-02-13 00:22:27 +01:00
Phil Ringnalda
03a1dc0a38 Back out 4d301b2bcad0:e0632e639097 (bug 836301) for Windows build bustage
CLOSED TREE
2013-02-22 08:41:37 -08:00
Bobby Holley
b9a551bd57 Bug 836301 - Hoist some assertions, remove a bunch of no-op trap overrides, and add assertions that we've entered our policy. r=mrbkap 2013-02-22 08:14:34 -08:00
Bobby Holley
a98d6a7dfd Bug 836301 - Hoist enter() calls from {Xray,}Wrapper::foo into Proxy::foo. r=mrbkap 2013-02-22 08:14:34 -08:00
Bobby Holley
9ea662d5a5 Bug 836301 - Introduce an RAII class for entering policies. r=mrbkap
This will allow us to make some hard assertions that a given policy has been
entered exactly once.
2013-02-22 08:14:33 -08:00
Bobby Holley
fa62b333b9 Bug 836301 - Add Special handling to allow us to call enter() for defineProperty on Xrays. r=mrbkap 2013-02-22 08:14:33 -08:00
Bobby Holley
93369747ec Bug 836301 - Stop using JSRESOLVE_ASSIGNING to determine GET vs SET. r=mrbkap
This is just a heuristic, anyway, and some of the usage is downright broken.
There are two cases here:

1 - Deciding what to do for get{Own,}PropertyDescriptor. In these cases, we can
just enter with GET and rely on the filtering machinery to filter out dangerous
setters for security wrappers.

2 - Custom Xray props. None of these make sense in a |set| context. In fact,
    they generally have null setters anyway, so we can just assume GET.

The policy-entering code in XrayWrapper is super haphazard. We'll get rid of it
entirely later in these patches.
2013-02-22 08:14:32 -08:00
Bobby Holley
6c9a0d2a78 Bug 839867 - Align gecko with the spec on cross-origin access to Location.hash. r=bz
We update the tests to cover this case. There was also a bug in the tests where
we were accidentally testing non-writable Location properties against window
rather than window.location. :-(
2013-02-11 00:05:17 +01:00
Bobby Holley
a9cbc7eea3 Bug 821850 - Dynamically waive Xray for field access by XBL script on bound nodes. r=bz 2013-02-08 14:24:22 +00:00
Bobby Holley
2be0c8d31e Bug 821850 - Expose XBL members via Xray wrappers. r=bz 2013-02-08 14:24:21 +00:00
Bobby Holley
fd02fd27ef Bug 821850 - Clean up security wrappers for NAC. r=bz 2013-02-08 14:24:20 +00:00
Bobby Holley
9124b9b5fd Bug 831076 - Outerize during same-compartment wrapping so that JS_Wrap* is guaranteed to outerize. r=mrbkap 2013-02-04 15:13:14 +00:00
Bobby Holley
b32a8d4b14 Bug 831076 - Outerize at the very beginning of XPConnect wrapping and remove other outerization checks. r=mrbkap 2013-02-04 15:13:13 +00:00
Peter Van der Beken
105d61cacc Fix for bug 715156 (JS code no longer work for select options as array in a Greasemonkey script (index and name setters don't really work via XrayWrapper)). r=bz.
--HG--
extra : rebase_source : 2ced75b6d49dbab5afe9a6ce7c322bf18a634026
2013-01-14 11:29:48 +01:00
Ed Morley
19dd19ed37 Backout f3c145bd1dd2 & 5075690572a9 for OS X startup failures 2013-01-28 11:08:21 +00:00
Peter Van der Beken
18764acd4b Fix for bug 715156 (JS code no longer work for select options as array in a Greasemonkey script (index and name setters don't really work via XrayWrapper)). r=bz.
--HG--
extra : rebase_source : 6bc420bd917e00a49dc5f6f3de13ff9e290c9580
2013-01-14 11:29:48 +01:00
Bobby Holley
ded682bc4a Bug 823348 - Stop checking for Xray waivers in the Xray machinery. r=mrbkap
All the casese where we want to waive should now be going through WaiveXrayWrapper.
2013-01-23 06:04:39 +01:00
Bobby Holley
4e3138cf29 Bug 823348 - Replace security wrapper enumeration with a more rule-based approach. r=mrbkap 2013-01-23 06:04:39 +01:00
Bobby Holley
f7f57d1c83 Bug 823348 - Hoist special cases to the top of WrapperFactory::Rewrap. r=mrbkap
This paves the way for more rule-based selection of wrappers in the common case.
2013-01-23 06:04:39 +01:00
Bobby Holley
0d89c821ca Bug 823348 - Move COW prototype remapping out of wrapper selection. r=mrbkap
It's pretty orthogonal, and makes the critical block more complicated than it
needs to be.
2013-01-23 06:04:39 +01:00
Bobby Holley
08c058f711 Bug 823348 - Precompute various parameters in Rewrap. r=mrbkap
This is generally cleaner, and avoids potentially calling these functions
multiple times when we start moving this stuff around.
2013-01-23 06:04:39 +01:00
Bobby Holley
39b3f7c72e Bug 823348 - Use GetXrayType for content->chrome Xray wrappers. r=mrbkap
There's no reason to do this any different than we do for XOWs and such. The
only thing this might conceivably support would be certain chrome XPWNs-as-COWs.
But that would require that they forced a parent in precreate without being
flagged as DOM objects in classinfo. And it's not clear why we'd want to support
that. And we're generally moving away from COWs anyway.
2013-01-23 06:04:39 +01:00
Bobby Holley
69822a012d Bug 823348 - Use EnsureCompartmentPrivate In Rewrap and stop checking for null. r=mrbkap 2013-01-23 06:04:39 +01:00
Bobby Holley
44a21fc15a Bug 823348 - Make NNXOWs use an explicitly opaque Policy. r=mrbkap
There's no reason to be doing a dynamic check here, given that the JSClasses
will never match. Lets be explicit and safe.
2013-01-23 06:04:38 +01:00
Bobby Holley
ddece7045a Bug 823348 - Do a better job of lying about the holder and make assertions fatal. r=mrbkap
I noticed this nonfatal assertion firing, unrelated to my patches. Leaking
the holder is not so great. Let's fix this for real.
2013-01-23 06:04:38 +01:00
Bobby Holley
d0a9794947 Bug 823348 - Remove broken and unused __scriptOnly__ check. r=mrbkap
__scriptOnly__ is unused on mxr and addons-mxr. Morevoer, the current
implementation is totally broken, because we check for NNXOW, which only
happens when a random content JS object ends up in some other cross-origin
scope (via addons, presumably), whereas chrome objects use ChomeObjectWrapper.

I'm soon going to replace SCRIPT_ACCESS_ONLY with checked unwrapping, and mark
all COWs as unsafe to unwrap (see bug 821573 and bug 658909). So let's just kill
this thing here.
2013-01-23 06:04:38 +01:00
Boris Zbarsky
2837c731e6 Bug 823228 part 2. Move indexed property access on windows from nsWindowSH::GetProperty to the outer window proxy. r=bholley 2013-01-17 12:30:37 -05:00
Jeff Walden
816e713d85 Whitespace tab-killing patrol. No bug, r=sparky 2013-01-04 17:00:43 -06:00
Jeff Walden
f1646c3edf Bug 824217 - Make ChromeObjectWrapper::getPropertyDescriptor not pretend no descriptor exists when the property exists along the prototype chain, when the property is being resolved just before an assignment. r=bholley 2013-01-03 17:55:58 -06:00
Jeff Walden
86789118e4 Bug 826447 - Change all the proxy API signatures to take unsigned flags, rather than bool set, so that it's easier to find all tests of JSRESOLVE_ASSIGNING. r=bz
--HG--
extra : rebase_source : 3b88b411965087984d7973a90f8fa1b06457a6ce
2013-01-03 15:31:36 -06:00
Jeff Walden
c3a0e6572c Bug 823283 - Remove all remaining uses of JSRESOLVE_QUALIFIED, and the few remaining tests (which were pretty much purely diagnostic). r=luke
--HG--
extra : rebase_source : 51e2ac7ccc76be84d12600baeb6d458c2927bea7
2012-09-15 11:19:55 -07:00
Bobby Holley
e3b2e4ad4b Bug 809652 - Deny nativeCall for SecurityWrapper except under specific circumstances. r=jorendorff 2012-12-20 22:33:26 -08:00
Bobby Holley
a7fd1fbfc7 Bug 809652 - Have SecurityWrapper::enter default to deny, and override SecurityWrapper::objectClassIs. r=jorendorff 2012-12-20 22:33:26 -08:00
Peter Van der Beken
0730848e6c Fix for bug 815149 (Add support for SOWs and XBL bindings in new DOM bindings). r=bz.
--HG--
extra : rebase_source : c24544fd3d1c99651e279e687a07a02c5b994323
2012-09-12 22:29:30 +02:00
Bobby Holley
e6d3334eb8 Bug 818716 - Move XBL detection into nsContentUtils and remove filename hack. r=mrbkap 2012-12-12 17:09:37 -08:00
Saurabh Anand
151d13c7a5 Bug 818817 - Fix some compiler warnings, r=Ms2ger 2012-12-09 22:53:19 +05:30
Bobby Holley
28c393b4b2 Bug 813901 - Validate __exposedProps__. r=mrbkap
This also involves modifying test_cows to deep clone in getCOW.
2012-12-07 14:49:11 -08:00
Bobby Holley
58fb47e8e1 Bug 813901 - Throw COW exceptions in the wrapper's scope. r=mrbkap 2012-12-07 14:49:11 -08:00
Bobby Holley
4fb0eb55a2 Bug 808608 - Remove Xray shadowing protection infrastructure. r=mrbkap
This is now unused.
2012-11-21 13:20:05 -08:00
Bobby Holley
9081886d4a Bug 808608 - Remove specialized Location security wrappers. r=mrbkap 2012-11-21 13:20:05 -08:00
Peter Van der Beken
fa62dbbc16 Fix for bug 811895 (Fix WN Xray special methods so they can take new DOM binding objects). r=bz.
--HG--
extra : rebase_source : 4b4ade0c3cddee9241e94f2e20216cee73a8e284
2012-09-26 16:17:51 +02:00
Bobby Holley
a75f5ca4d9 Bug 800915 - Remove the cx parameter and simplify various APIs. r=sfink,bz
If callers want to throw, it's now their responsibility.
2012-11-14 09:56:26 -08:00
Bobby Holley
5fe101ddca Bug 800915 - Reimplement PUNCTURE consumers in terms of isSafeToUnwrap() and remove PUNCTURE API. r=mrbkap 2012-11-14 09:56:25 -08:00
Bobby Holley
583cb7273a Bug 800915 - Add infrastructure to flag security wrappers as unsafe to unwrap. r=mrbkap 2012-11-14 09:56:25 -08:00
Bobby Holley
1bc19ac093 Bug 800915 - Clarify and refine the semantics of SecurityWrapper so that it is used if and only if unwrapping is unsafe. r=mrbkap
The naming scheme for Xray typedefs is the concatenation of the tuple:
({SC,}, {Security,Permissive}, Xray, {XPCWN,DOM}). This is admittedly a bit
much, but I think it's still better than explicitly doing the "typdef Foo Xray"
everywhere. Moreover, once the new DOM bindings are done, the last component
in the tuple will go away.
2012-11-14 09:56:25 -08:00
Bill McCloskey
a31392133c Bug 803376 - Allow wrappers to be reused (r=bholley) 2012-09-11 17:14:24 -07:00
Boris Zbarsky
ffdef1ff6b Bug 779048 part 0.5. Don't require a JSContext argument for nsJSUtils::GetStaticScriptGlobal. r=bholley 2012-11-09 07:43:57 -08:00
Bobby Holley
65525139b8 Bug 805807 - Filter setters. r=mrbkap 2012-11-07 15:45:50 -08:00
Bobby Holley
b7a80f0b32 Bug 808611 - Move valueOf to nsIDOMLocation. r=mrbkap 2012-11-07 08:27:23 -08:00
Bobby Holley
3606ad5e6b Bug 807179 - Add a constructor for JSPropertyDescriptor. r=luke 2012-11-05 17:49:44 -08:00
Boris Zbarsky
5865858536 Bug 807548. Enumerating an Xray should not see the 'constructor' property on DOM prototypes unless we're told to include non-enumerable properties. r=peterv 2012-11-05 11:58:03 -05:00
Bobby Holley
6877351937 Bug 805807 - Rearchitect filtering policies so that check() doesn't throw on denial. r=mrbkap
This is another one of those annoying situaitons in XPConnect right now where we
can't ask a question without potentially throwing if the answer is no. There's
also a bunch of unused cruft in here (like the Perm*Access stuff), so this stuff
was ripe for a spring cleaning. Unfortunately, I wasn't able to divide this patch
up nicely. Sorry for the big diff. :-(

In a nutshell, this patch changes things so that Policy::check() just becomes
a predicate that says whether the access is allowed or not. There's the remote
possibility that one of the underlying JSAPI calls in a ::check() implementation
might throw, so callers to ::check() should check JS_IsExceptionPending
afterwards (this doesn't catch OOM, but we can just continue along until the
next OOM-triggering operation and throw there).

Aside from exceptional cases, callers should call Policy::deny if they want to
report the failure. Policy::deny returns success value that should be returned
to the wrapper's consumer.
2012-11-02 21:47:49 -03:00
Bobby Holley
d2fe9d94ec Bug 805807 - Make Components wrapper throw on denial. r=mrbkap
There's really no reason to use the wishy-washy static COW Deny() here.

Also, note that the xpcshell-test wasn't testing what it thought it
was - interfaces is accessible from content code.
2012-11-02 21:47:49 -03:00
Ed Morley
14d92519c8 Backout 23c9f61a243b & 6ca11f4b470c (bug 805807) for mochitest-1 orange in test_contextmenu.html 2012-11-02 14:12:51 +00:00
Bobby Holley
0123f9f2d2 Bug 805807 - Rearchitect filtering policies so that check() doesn't throw on denial. r=mrbkap
This is another one of those annoying situaitons in XPConnect right now where we
can't ask a question without potentially throwing if the answer is no. There's
also a bunch of unused cruft in here (like the Perm*Access stuff), so this stuff
was ripe for a spring cleaning. Unfortunately, I wasn't able to divide this patch
up nicely. Sorry for the big diff. :-(

In a nutshell, this patch changes things so that Policy::check() just becomes
a predicate that says whether the access is allowed or not. There's the remote
possibility that one of the underlying JSAPI calls in a ::check() implementation
might throw, so callers to ::check() should check JS_IsExceptionPending
afterwards (this doesn't catch OOM, but we can just continue along until the
next OOM-triggering operation and throw there).

Aside from exceptional cases, callers should call Policy::deny if they want to
report the failure. Policy::deny returns success value that should be returned
to the wrapper's consumer.
2012-11-02 13:27:59 +01:00
Bobby Holley
7c2fa965c3 Bug 805807 - Make Components wrapper throw on denial. r=mrbkap
There's really no reason to use the wishy-washy static COW Deny() here.

Also, note that the xpcshell-test wasn't testing what it thought it
was - interfaces is accessible from content code.
2012-11-02 13:27:59 +01:00
Peter Van der Beken
99782186da Fix for bug 778152 (Content window does not have an XMLHttpRequest property when accessed via an Xray wrapper in a subscript). r=bz.
Switch from using the interface objects from the Xrays compartment to wrapping
interface objects and interface prototype objects in Xrays. Make dom binding
Xrays deal with both instance objects and interface and interface prototype
objects.
2012-10-09 20:50:27 +02:00
Bobby Holley
b9ab242827 Bug 803068 - Merge DirectWrapper and Wrapper. r=ejpbruel
--HG--
extra : rebase_source : a2b98a9585c6f7761747cfaf55684e6eeed91344
2012-10-29 16:52:53 +01:00
Bobby Holley
b709b3dc7f Bug 803068 - Manually grab the BaseProxyHandler derived traps in SandboxProxyHandler. r=ejpbruel
Let's just bite the bullet and do this here. It will let us get rid of
IndirectProxyHandler, which has really overcomplicated our proxy hierarchy.

--HG--
extra : rebase_source : 7e81529936bc256d672e40537eb6abca6374e52c
2012-10-29 16:52:53 +01:00
Bobby Holley
2c584933ef Bug 797821 - Address Ms2ger's review comments. r=me 2012-10-25 17:01:09 +02:00
Bobby Holley
461c6572fd Bug 797821 - Hoist XPConnect-y stuff out of the compartment private and into the XPCWrappedNativeScope. r=mrbkap
This change means we no longer have to keep around a set of XPConnect compartments.
We keep the compartment private around for non-xpconnecty stuff like about:memory
instrumentation that needs to happen on non-xpconnect compartments.
2012-10-25 17:01:09 +02:00
Bobby Holley
617a6ac6bd Bug 801576 - Forbid cross-origin access to the History object. r=mrbkap 2012-10-24 12:04:18 +02:00
Peter Van der Beken
e86cd8818c Fix for bug 801083 (Remove old proxy-based list bindings). r=bz. 2012-10-13 14:50:24 +02:00
Bobby Holley
1fc641f872 Bug 793969 - Define an identity transformation at the Xray layer. r=mrbkap 2012-10-19 21:00:48 +02:00
Isaac Aggrey
8c55998b7e Bug 794510: Part 1 - Build with NO_NSPR_10_SUPPORT by default; r=ehsan,glandium,wtc 2012-10-11 01:00:54 -05:00
Bobby Holley
bb0dcf4cec Bug 797204 - Consolidate XBL filename hack logic into nsContentUtils. r=mrbkap
These two functions do the exact same thing, as far as I can tell.
2012-10-10 11:01:26 +02:00
Boris Zbarsky
d111159c5b Bug 798011. Deal with JS_ValueToString failing. r=gabor 2012-10-06 12:06:24 -04:00
Bobby Holley
d2677f7903 Bug 761695 - Put Proxy and DOM expandos on the expando object, rather than the holder. r=peterv 2012-10-05 18:59:24 +02:00
Bobby Holley
65d701d159 Bug 761695 - Hoist expando-checking (but not expando-creating) operations into common code. r=peterv
We do this for delete_, enumerateNames, and resolveOwnProperty. This doesn't change
existing behavior, because for ProxyXrayTraits and DOMXrayTraits the expando object
will (currently) always be null.
2012-10-05 18:59:24 +02:00
Bobby Holley
c0372a746c Bug 761695 - Create XrayTraits::resolveOwnProperty. r=peterv 2012-10-05 18:59:23 +02:00
Bobby Holley
b568e20af2 Bug 761695 - Reorder checks for expandos and nodePrincipal. r=peterv
Peter and I decided this was ok. We can't hoist expando stuff otherwise.
2012-10-05 18:59:23 +02:00
Bobby Holley
9f982e86a6 Bug 761695 - Implement expando traps for ProxyXrayTraits DOMXrayTraits. r=peterv
For new DOM proxies, we could probably use the Xray expando machinery for the
regular expando object as well, and free up one of the reserved slots. That's
more than I want to bite off for the moment, though.

I also decided not to block on bug 760095 and just kick the problem of globals
with new binding down the road a little bit.
2012-10-05 18:59:23 +02:00
Bobby Holley
bde8b4dc55 Bug 761695 - Move wrapper preservation stuff into a virtual trap. r=peterv
I'm not sure this stuff is correct for non-WN objects. Hopefully that will
come out in review.

Anyway, with this change, the expando infrastructure in XrayTraits is now
fully generic and non-WN-specific. To make things work for other objects,
we now need to implement the virtual traps and hoist the code that calls the
expando machinery out of XPCWrappedNativeXrayTraits.
2012-10-05 18:59:23 +02:00
Bobby Holley
83413fc2ff Bug 761695 - Make expando chain getting/setting a virtual trap. r=peterv 2012-10-05 18:59:23 +02:00
Bobby Holley
27d1f16b24 Bug 761695 - Hoist expando infrastructure into XrayTraits. r=peterv
It's still WN-only, now we can move the WN-only bits into virtual traps.

Note that the new-binding reparenting code will need to have a call to
CloneExpandoChain.
2012-10-05 18:59:23 +02:00
Bobby Holley
24447452ab Bug 761695 - Hoist Xray identification machinery into XrayWrapper, and use it for trait identification. r=peterv
We don't currently have a good way of selecting the traits used by a given Xray
wrapper. This lets us do that.

Note: We add a call to js::UnwrapObject to GetXrayType while hoisting it. When
it was used only in WrapperFactory, this was unnecessary, because |obj| was
always unwrapped. But for our new purposes, it might not be. Aside from that,
there are no changes to the function.
2012-10-05 18:59:23 +02:00
Bobby Holley
bc9563cdd3 Bug 761695 - Move Xray expando infrastructure further down in the file. r=peterv
Just cut/paste. No code changes.
2012-10-05 18:59:23 +02:00
Bobby Holley
14a7c3faef Bug 761695 - Unify holder creation and access. r=peterv
With this patch, all holders are created lazily. There are two common accessors,
getHolder() and ensureHolder(). The former returns null if no holder exists, the
latter lazily creates the holder if it doesn't exist. It does this by calling into
a virtual trap on XrayTraits, which lets the appropriate Xray type do its thing.
2012-10-05 18:59:23 +02:00
Bobby Holley
39eb44c43c Bug 761695 - Get the WN directly from the wrapper. r=peterv
All this indirection was getting seriously mucky. This, incidentally, means that
the XPCWN holder no longer needs a reserved slot pointing to the WN.
2012-10-05 18:59:23 +02:00
Bobby Holley
39b50f40b1 Bug 761695 - Hoist call and construct traps into Traits, since the current implementations are XPCWN-specific. r=peterv 2012-10-05 18:59:22 +02:00
Bobby Holley
af5508a4ff Bug 761695 - Rename getInnerObject to getTargetObject. r=peterv
The current name potentially implies that the object returned is an inner
object in the JS sense, which isn't true. Really we just want the thing
we're Xraying to.
2012-10-05 18:59:22 +02:00
Bobby Holley
8138496fa5 Bug 761695 - Hoist getInnerObject into XrayTraits. r=peterv
The only special handling here with wrapped natives is to make sure that we
bypass outer windows. But we can do this with js::UnwrapObject.
2012-10-05 18:59:22 +02:00
Bobby Holley
49a666ce37 Bug 761695 - Make Xray traits inherit from a common superclass and give them a singleton instance. r=peterv
There's some code that can be shared between different Xray traits, but can't
(yet) be hoisted into XrayWrapper, because it needs to be callable from outside
XrayWrapper where we don't have the appropriate template parameters. Moreover,
this code benefits from virtual function specialization. The use case here is
illuminated in the next patch.

For the moment, we skip converting the bulk of the traits calls to virtual
methods, because they're working just fine.
2012-10-05 18:59:22 +02:00
Bobby Holley
95a9308d91 Bug 761695 - Stop stashing a raw WN pointer in XPCWN Xray holders. r=peterv
We might as well do this dynamically, which simplifies the code. Note that we
could avoid the reserved slot by parenting the holder to the wrapper. But the
JS parent API is deprecated, and we need to move away from it to reserved slots
anyhow. We might as well start here, with the added advantage that parenting
to the global makes us consistent with the other Xray types.
2012-10-05 18:59:22 +02:00
Bobby Holley
0d9f3281b6 Bug 761695 - Simplify XPCWN Xray holder creation. r=peterv
The major semantic change here is that we parent holders directly to their
global. This should be fine.
2012-10-05 18:59:22 +02:00
Bobby Holley
f044136221 Bug 761695 - Fix inaccurate commenting. r=peterv
The .wrappedJSObject property only exists when the Xray wrapper subsumes the wrappee.
2012-10-05 18:59:22 +02:00
Bobby Holley
94833f2614 Bug 795275 - Introduce an explicit mechanism for determining if a script is from XBL. r=mrbkap
We want this right now so that we can avoid the scary warning when content Components
access happens in XBL (which we're allowing going forward). This patch would be overkill
just for that, but I also have plans to introduce a SOW-like protection of the Components
wrapper filtering policy. I can't just do the filename hack for that though, because real-
world XBL filenames might be all over the place. So let's just be safe here.
2012-10-03 11:44:18 +02:00
Bobby Holley
4d764c2439 Bug 795275 - Clean up isSystemOnlyAccessPermitted. r=mrbkap
A lot of this stuff can be simplified now, and we can stop using the deprecated APIs.
2012-10-03 11:44:18 +02:00
Bobby Holley
54469cd1cc Bug 794912 - Remove dynamic privilege check in isCrossOriginAccessPermitted. r=mrbkap 2012-10-01 23:13:49 +02:00
Bill McCloskey
5a5da681b3 Bug 787856 - Use lazy protos for cross-compartment wrappers (r=bholley) 2012-09-03 16:42:22 -07:00
Bill McCloskey
f13e8e29d9 Bug 787856 - Convert JS_GetPrototype to support lazy protos (r=bhackett) 2012-09-03 16:42:17 -07:00
Bill McCloskey
83bc2a1a11 Bug 787856 - Convert js::GetObjectProto to support lazy protos (r=bhackett) 2012-09-03 16:42:10 -07:00
Ms2ger
369cb4e081 Bug 792474 - Don't JS_ASSERT in xpconnect; rs=bholley 2012-09-20 09:55:37 +02:00
Gabor Krizsanits
a7ba877db5 Bug 791845 - mozMatchesSelectorStub should return false on error. r=bholley 2012-09-19 10:53:42 +02:00
Bobby Holley
f82cbc37b3 Bug 789713 - Ignore domain when computing whether to share non-PreCreate WNs cross-compartment. r=mrbkap 2012-09-11 10:23:20 -07:00
Bobby Holley
69477ff25f Bug 788914 - Kill the XOW flag. r=mrbkap
There are really two questions to be asked: is the caller chrome, and does the
caller subsume the callee. We have other, more precise ways of asking both of
these questions.
2012-09-11 01:05:10 -07:00
Bobby Holley
395ad03437 Bug 788914 - Kill partially transparent wrappers. r=mrbkap 2012-09-11 01:05:10 -07:00
Bobby Holley
98aa19a8be Bug 788914 - Remove dynamic UniversalXPConnect checks sprinkled around the wrapper code. r=mrbkap 2012-09-11 01:05:10 -07:00
Bobby Holley
a163a6189b Bug 788914 - Generate vanilla cross-compartment wrappers when UniversalXPConnect is enabled. r=mrbkap 2012-09-11 01:05:10 -07:00
Ryan VanderMeulen
2ff849733d Backout bug 788914 and bug 789494 because they were backed out on inbound. 2012-09-07 19:40:57 -04:00
Bobby Holley
86393522e9 Bug 788914 - Kill the XOW flag. r=mrbkap
There are really two questions to be asked: is the caller chrome, and does the
caller subsume the callee. We have other, more precise ways of asking both of
these questions.
2012-09-07 11:28:56 -07:00
Bobby Holley
9faec0aaac Bug 788914 - Kill partially transparent wrappers. r=mrbkap 2012-09-07 11:28:56 -07:00
Bobby Holley
4d977e36d4 Bug 788914 - Remove dynamic UniversalXPConnect checks sprinkled around the wrapper code. r=mrbkap 2012-09-07 11:28:56 -07:00
Bobby Holley
5ccd4c0daa Bug 788914 - Generate vanilla cross-compartment wrappers when UniversalXPConnect is enabled. r=mrbkap 2012-09-07 11:28:56 -07:00
Ed Morley
8cf4ffc2ea Backout 5853df66d488, e8fadd906232, d787279d282c, 8c1ed6327355, 94cfcf5da7c8, 87aa103d7e87 (bug 585922) for failures in test_bug411236.html 2012-09-07 09:15:34 +01:00
Bobby Holley
263394dbe4 Bug 788914 - Kill the XOW flag. r=mrbkap
There are really two questions to be asked: is the caller chrome, and does the
caller subsume the callee. We have other, more precise ways of asking both of
these questions.
2012-09-06 22:55:18 -07:00
Bobby Holley
4a03556c3e Bug 788914 - Kill partially transparent wrappers. r=mrbkap 2012-09-06 22:55:18 -07:00
Bobby Holley
b5dd375098 Bug 788914 - Remove dynamic UniversalXPConnect checks sprinkled around the wrapper code. r=mrbkap 2012-09-06 22:55:18 -07:00
Bobby Holley
325c6bae80 Bug 788914 - Generate vanilla cross-compartment wrappers when UniversalXPConnect is enabled. r=mrbkap 2012-09-06 22:55:18 -07:00
Andrew Sutherland
551a753f47 Bug 786639 - XPCChromeObjectWrapper __exposedProps__ should expose the content of typed arrays like UInt8Array. r=bholley 2012-09-05 14:05:32 -07:00
Bobby Holley
eef8d9f4eb Bug 774607 - Remove use of JS_{Is,Make}SystemObject from Gecko. r=bz
We currently set this for system globals and anything whose parent
chain leads to a system global. Maybe this was relevant before, but
with CPG this is just equivalent to asking whether the object is in
a system compartment. And the only place where we _check_ this bit
is immediately after checking for a system compartment, in
WrapperFactory. So AFAICT this can go away entirely.
2012-09-05 11:32:07 -07:00
Gabor Krizsanits
5138045eff Bug 763897 - Incorrect behaviour of mozMatchesSelector.call through xray; r=bholley 2012-08-27 15:15:20 +02:00
Gabor Krizsanits
9a223560e1 Bug 738244 - Supporting DOM specific collection properties through xray wrappers; r=mrbkap 2012-08-27 15:06:34 +02:00
Luke Wagner
c3caa3a90c Fix backout to account for infallible-JSAutoCompartment change on a CLOSED TREE (no bug, r=bustage) 2012-08-23 22:12:21 -07:00
Matt Brubeck
424ea88da6 Back out 670c8a2695b3 (bug 771354), 134557d57e6e 4ad52e488977 (bug 774607), and...
036eb8c2a08a d4d36e3b948f 35334e820632 6bd07fd5147d d49e7c0d762c 407f19deb14c d84551808abb (bug 774633)
on a CLOSED TREE
2012-08-23 21:34:27 -07:00
Bobby Holley
48fc85f058 Bug 780370 - Remap objects from standard prototypes even if they're explicitly exposed. r=mrbkap 2012-08-23 19:07:14 -07:00
Bobby Holley
b2b8ff55f2 Bug 780370 - Clarify the compartment situation in ChromeObjectWrapper. r=mrbkap
Not sure what I was thinking before. We should always be in the compartment of the wrapper here.
2012-08-23 19:07:13 -07:00
Peter Van der Beken
486198a6d8 Fix for bug 785188 (Make Xrays work with newest DOM list bindings). r=mrbkap. 2012-06-06 21:52:26 +02:00
Luke Wagner
ce71e55555 Bug 625199 - s/JSAutoEnterCompartment/JSAutoCompartment/ and make it infallible (r=bholley)
--HG--
extra : rebase_source : 12acf2288285f5caefd7fecea8207de3a47eab5b
2012-08-21 18:42:53 -07:00
Luke Wagner
48412c861d Bug 625199 - kill dummy frames (r=mrbkap)
--HG--
extra : rebase_source : df4e3bddabf20cdc5b9122370fa62b40e64177c7
2012-08-17 18:05:06 -07:00
Bobby Holley
63dfef11f8 Bug 774607 - Remove use of JS_{Is,Make}SystemObject from Gecko. r=bz
We currently set this for system globals and anything whose parent
chain leads to a system global. Maybe this was relevant before, but
with CPG this is just equivalent to asking whether the object is in
a system compartment. And the only place where we _check_ this bit
is immediately after checking for a system compartment, in
WrapperFactory. So AFAICT this can go away entirely.
2012-08-23 16:44:53 -07:00
Peter Van der Beken
854457d901 Fix for bug 768692 (Move DOM list binding generation to the new DOM binding codegen). r=bzbarsky.
--HG--
extra : rebase_source : 651a0fac4c9a87ef1c0a9cd91588c6421fd050c4
2012-05-22 15:46:20 +02:00
Bobby Holley
826e13d885 Bug 784233 - Relax __exposedProps__ check for sandboxes until we can repack AMO addons. r=gal 2012-08-21 10:27:08 -07:00
Bobby Holley
7e122c271a Backed out changeset 61e9eaf9aae2
--HG--
extra : rebase_source : 30fb2e7a057482412d29a96f8b8e98135beb6a79
2012-08-20 21:07:07 -07:00
Bobby Holley
db7c7123df Bug 784233 - Relax __exposedProps__ check for sandboxes until we can repack AMO addons. r=gal 2012-08-20 21:03:44 -07:00
Bobby Holley
2fd623ff39 Bug 553102 - Make content-> access default to deny if __exposedProps__ is not defined. r=mrbkap 2012-08-17 23:14:55 -07:00
Bobby Holley
239bc1b66a Bug 781476 - Cross-compartment wrap same-origin objects with PreCreate even if PreCreate requests one wrapper per scope. r=mrbkap 2012-08-16 12:25:39 -07:00
Bobby Holley
480c7597d4 Bug 776328 - Only create holders for WNs. r=mrbkap 2012-08-10 10:19:51 +02:00
Mike Hommey
c1b35e7b2a Bug 774032 bonus - Use @DEPTH@ and @relativesrcdir@ in Makefile.in. r=ted 2012-08-04 20:26:44 +02:00
Bobby Holley
2c48de6a45 Bug 778409 - Enter the compartment of unwrappedProto rather than obj in Rewrap. r=gabor
This can happen if chrome sets its proto to a content object from a different scope
than the one doing the wrapping. In this case, the prototype chain looks like this:

chromeobj => CCW(examplecom_obj) => CCW(examplecom_scope.Object.prototype)

When wrapping chromeobj for exampleorg_scope, things will look like this:

COW(chromeobj) => CCW(examplecom_obj) => CCW(examplecom_scope.Object.prototype)

Note that we don't remap the proto of CCW(examplecom_scope) to
exampleorg_scope.Object.prototype, because the proto remapping only happens when
the object we're wrapping is chrome. There's no reason it has to be this way, but
even if we changed it we still wouldn't get the nice remapped lookup behavior to
exampleorg_scope.Object.prototype, because the proxy handler for CCW(examplecom_obj)
isn't a ChromeObjectWrapper, and thus doesn't know how to to the prototype bouncing
correctly.

Anyway, I suspect this case isn't worth worrying about as long as we don't crash.
2012-07-30 22:18:55 +02:00
Ehsan Akhgari
c80897316e Merge the nullptr conversion from mozilla-central into mozilla-inbound 2012-07-30 10:28:15 -04:00
Aryeh Gregor
57c0ad57fb Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
Brian Hackett
4da0b7720d Use HandleValue and MutableHandleValue in API hooks where possible, bug 776579. r=billm, sr=dmandelin 2012-07-30 05:19:09 -06:00
Bobby Holley
a7c9c6c0e0 Bug 760109 - Override traps in ChromeObjectWrapper to bounce lookups to the local prototype chain. r=mrbkap 2012-07-27 12:15:46 +02:00
Bobby Holley
27dfe5daed Bug 760109 - Introduce an explicit ChromeObjectWrapper. r=mrbkap
For now it's identical to ChromeObjectWrapperBase. Custom behavior comes in the next patch.
2012-07-27 12:15:46 +02:00
Bobby Holley
bc2fe5e629 Bug 760109 - When COWing objects with standard prototypes, use the prototype in the home compartment instead. r=mrbkap 2012-07-27 12:15:46 +02:00
Ehsan Akhgari
ed5670e57a Bug 776660 - Return null from EnsureExpandoObject instead of false; r=bholley 2012-07-23 15:58:41 -04:00
Bobby Holley
3c7a723a9f Bug 773962 - Fix up waivers after transplanting. r=mrbkap 2012-07-23 15:51:18 +02:00
Bobby Holley
c85756fcc0 Bug 773962 - Refactor Xray waiving logic to allow simple lookups in the waiver map without creating a waiver. r=mrbkap 2012-07-23 15:51:18 +02:00
Bobby Holley
217bf3edb0 Bug 774245 - Add WrapperFactory and XrayWrapper machinery to allow same-compartment Xray wrapping. r=mrbkap 2012-07-18 13:51:28 +02:00
Gabor Krizsanits
d5f97a1ca6 Bug 771081 - part3: Rename WaiveXrayWrapperWrapper. r=gal 2012-07-16 19:28:17 +02:00
Gabor Krizsanits
a9011adbd5 Bug 771081 - part2: Rename CrossOriginWrapper files. r=gal
--HG--
rename : js/xpconnect/wrappers/CrossOriginWrapper.cpp => js/xpconnect/wrappers/WaiveXrayWrapper.cpp
rename : js/xpconnect/wrappers/CrossOriginWrapper.h => js/xpconnect/wrappers/WaiveXrayWrapper.h
2012-07-16 19:22:51 +02:00
Gabor Krizsanits
c39841ecfc Bug 771081 - part1: Rename CrossOriginWrapper. r=gal 2012-07-16 17:53:16 +02:00
Bobby Holley
15d867f5bd Bug 655649 - Stop doing dynamic security checks for document.domain. r=mrbkap 2012-07-12 10:10:15 +02:00
Bobby Holley
4a5e0d850d Bug 655649 - Use Subsumes Rather than Equals in XPConnect wrapper computation. r=mrbkap
Now that we have nsExpandedPrincipal, the current way of doing things is wrong. For some reason, the old document.domain hackery was hiding the failures here.
2012-07-12 10:10:15 +02:00
Eddy Bruel
38a59d2484 Bug 771908 - Get rid of Wrapper::leave; r=bholley, sr=mrbkap 2012-07-11 14:01:10 +02:00
Eddy Bruel
e445b70867 Bug 703537: Rename AbstractWrapper to IndirectWrapper + adding comments; r=bholley 2012-07-08 19:04:14 +02:00
Ehsan Akhgari
f32943d99a Backout changeset 20b0bce4c165 (bug 703537) under the suspicion of breaking Linux32 mochitest-chrome without framepointers 2012-07-04 19:24:04 -04:00
Eddy Bruel
4109621aae Bug 703537 - Rename AbstractWrapper to IndirectWrapper; r=bholley 2012-07-04 01:20:35 +02:00
Bobby Holley
70050366ad Bug 754202 - Remove NoWaiverWrapper. r=mrbkap
No more principal pushing!
2012-06-28 23:47:55 +02:00
Bobby Holley
fb16bc5a98 Bug 754202 - Remove context pushing/popping API. r=mrbkap Each one of these uses grabs the principal off of an object for pushing, but also enters the compartment of that object. So we shouldn't need this anymore.
Can I get a 'hell yeah'?
2012-06-28 23:47:55 +02:00
Eddy Bruel
4cc46d10d1 Bug 70357 - Add Wrapper base class; r=bholley 2012-06-28 04:10:37 +02:00
Bobby Holley
d3655aa616 Bug 767948 - Make assertion nonfatal. r=me 2012-06-25 15:24:21 +02:00
Bobby Holley
3a4cddc21b Bug 767306 - Temporarily make assertion from bug 766641 non-fatal. r=me 2012-06-22 12:01:18 +02:00
Bobby Holley
92b4b22798 Bug 763433 - Clarify compartment situation in Xray wrapper. r=mrbkap
Adding to the mess of the NodePrincipal (et al) check isn't great, but I'm refactoring that in bug 761704.
2012-06-18 15:47:09 +02:00
Bobby Holley
7bcf107d34 Bug 763433 - Clarify compartment semantics for ExposedPropertiesOnly. r=mrbkap 2012-06-18 15:47:09 +02:00
Bobby Holley
1361f9e280 Bug 763381 - Fix up compartment situation for expando objects. r=mrbkap 2012-06-18 15:28:11 +02:00
Bobby Holley
61f2c7b855 Bug 763381 - Pass cx around in more places. r=mrbkap 2012-06-18 15:28:11 +02:00
Bobby Holley
1e7b838781 Bug 758415 - Remove double-wrapping infrastructure for Location objects. r=mrbkap
This is more or less just a backout of bug 739796, that caused so much pain. Huzzah!
2012-06-05 19:07:37 +02:00
Bobby Holley
dbc58bd195 Bug 758415 - Rip out old expando architecture. r=mrbkap 2012-06-05 19:07:37 +02:00
Bobby Holley
ae7fc124b9 Bug 758415 - Switch WN Xrays to use the new expando infrastructure. r=mrbkap 2012-06-05 19:07:37 +02:00
Bobby Holley
59c1c5f462 Bug 758415 - Copy expando objects during object transplanting. r=mrbkap 2012-06-05 19:07:37 +02:00
Bobby Holley
f3bf0cee49 Bug 758415 - Implement expando object infrastructure for WN Xrays. r=mrbkap
Note: This overloads the naming of some of the existing infrastructure,
but the signatures etc are sufficient to disambiguate. The other infrastructure
goes away in a subsequent patch.

Note: We tag sandbox expandos with their global to make sure that the expandos
are never shared between sandboxes. A consequence of this scheme is that an
expando from a sandbox to an object will _always_ result in a GC edge back to
the sandbox, meaning that the sandbox is always kept alive for the lifetime of
the expando target. This could happen before, but only if a non-primitive expando
was placed (since the value of the expando would live in the consumer's
compartment). We could avoid this edge by using a reference-counted Identity()
object instead, but I suspect it's not worth worrying about.
2012-06-05 19:07:37 +02:00
Blake Kaplan
80d8c99cbf Bug 751858 - Actually throw when we deny access. r=bholley 2012-05-04 14:22:55 +02:00
Bobby Holley
8a078b54cb Bug 760070 - Make the __exposedProps__ warning appear as an error. r=bz 2012-05-31 16:28:09 +02:00
Bobby Holley
60fe98645b Bug 752038 - Avoid getting confused by PreCreate giving a different answer when we wrap objects cross-compartment during reparenting. r=mrbkap 2012-05-29 23:24:03 +02:00
dev
92dd78a294 Bug 755631 - Remove extraneous exceptions in Cross Origin Wrappers. r=mrbkap 2012-05-26 09:33:52 -04:00
Bobby Holley
0639533b11 Bug 758563 - Warn when __exposedProps__ is missing. r=bz 2012-05-25 18:42:40 +02:00
Ms2ger
74b4797fd1 Bug 758143 - Add xpc::GetCompartmentPrivate; r=bholley 2012-05-25 09:18:31 +02:00
Gervase Markham
87620f5676 Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Brian Hackett
f8aa8c3c5a Use handles in API object hooks where possible, bug 750733. r=billm 2012-05-19 15:03:45 -07:00
Brian Hackett
aeda1d5c01 Backed out changeset 5fc7462dd394 for android orange. 2012-05-19 11:52:55 -07:00
Brian Hackett
54e8d378fb Use handles in API object hooks where possible, bug 750733. r=billm 2012-05-19 09:48:09 -07:00
Eddy Bruel
0f91edbc9a Bug 703537 - Add IndirectProxyhandler; r=bholley,jorendorff 2012-05-17 13:19:37 +02:00
Bobby Holley
80f05e377a Bug 754044 - Apply same-compartment security wrappers in same-compartment wrapping callback. r=mrbkap 2012-05-14 23:30:07 +02:00
Tom Schuster
889e3a0487 Bug 752226 - Remove any use of JSVAL_IS_OBJECT. r=luke,Ms2ger 2012-05-11 17:46:26 +02:00
Ed Morley
4c4c3cfd18 Backout 9b0fcaacb788 & bf3fef257e68 (bug 752226) for mochitest-other orange 2012-05-11 18:25:52 +01:00
Tom Schuster
6e0861373a Bug 752226 - Remove any use of JSVAL_IS_OBJECT. r=luke,Ms2ger
--HG--
extra : rebase_source : edf2077f8b8bad1970eab6ebe9996e761d4e596c
2012-05-11 17:46:26 +02:00
Boris Zbarsky
224115946f Bug 742217. Reduce the use of nested namespaces in our binding code. r=peterv,bent
In the new setup, all per-interface DOM binding files are exported into
mozilla/dom.  General files not specific to an interface are also exported into
mozilla/dom.

In terms of namespaces, most things now live in mozilla::dom.  Each interface
Foo that has generated code has a mozilla::dom::FooBinding namespace for said
generated code (and possibly a mozilla::bindings::FooBinding_workers if there's
separate codegen for workers).

IDL enums are a bit weird: since the name of the enum and the names of its
entries all end up in the same namespace, we still generate a C++ namespace
with the name of the IDL enum type with "Values" appended to it, with a
::valuelist inside for the actual C++ enum.  We then typedef
EnumFooValues::valuelist to EnumFoo.  That makes it a bit more difficult to
refer to the values, but means that values from different enums don't collide
with each other.

The enums with the proto and constructor IDs in them now live under the
mozilla::dom::prototypes and mozilla::dom::constructors namespaces respectively.
Again, this lets us deal sanely with the whole "enum value names are flattened
into the namespace the enum is in" deal.

The main benefit of this setup (and the reason "Binding" got appended to the
per-interface namespaces) is that this way "using mozilla::dom" should Just
Work for consumers and still allow C++ code to sanely use the IDL interface
names for concrete classes, which is fairly desirable.

--HG--
rename : dom/bindings/Utils.cpp => dom/bindings/BindingUtils.cpp
rename : dom/bindings/Utils.h => dom/bindings/BindingUtils.h
2012-05-03 00:35:38 -04:00
Mark Capella
47e4a1599d Bug 723530 - double error reporting in ctype JS api implementation, r=bholley 2012-04-27 12:47:00 +02:00
Gabor Krizsanits
f65e785137 Bug 735280 - Part 3: Components object specific wrapper. r=bholley 2012-04-28 09:12:28 -04:00
Eddy Bruel
5736dd244e Bug 703537: Removing the fix trap r=jorendorff@mozilla.com 2012-04-27 17:09:32 -04:00
Ryan VanderMeulen
3f70ab0134 Backout a0b3af4ac9f5 (bug 735280) due to Android jsreftest orange. 2012-04-25 21:59:36 -04:00
Gabor Krizsanits
8f2218a116 Bug 735280 - Part 3: Components object specific wrapper. r=bholley 2012-04-25 20:12:33 -04:00
Ryan VanderMeulen
7d4f50a90d Backout 0b170d1f5d10 (bug 735280) due to red. 2012-04-24 22:09:23 -04:00
Gabor Krizsanits
0a0e1a6bd0 Bug 735280 - Part 3: Components object specific wrapper. r=bholley 2012-04-24 21:48:02 -04:00
Boris Zbarsky
4571359b0e Bug 726949. Instead of using the given proto for the sandbox directly, use a proxy that forwards to the given proto but rebinds all getters/setters/methods to use the given proto, not the sandbox global, as this. r=bholley, a=tracking-firefox
The code in XPCQuickStubs.h just moved from XPCQuickStubs.cpp.
2012-04-19 14:19:41 -04:00
David Anderson
3a7a15cbe2 Remove more uses of JS_FrameIterator (bug 744617, r=mrbkap). 2012-04-16 12:30:04 -07:00
David Anderson
f0a562ebba Remove simple JS_FrameIterator uses in xpconnect (bug 744617, r=bholley).
--HG--
extra : rebase_source : c206450cf46011543f58cded4c5aff2d49932afd
2012-04-16 12:25:28 -07:00
Gabor Krizsanits
74922f0040 Bug 733035 - postMessage support for sandboxes. r=khuey 2012-04-05 18:33:20 -04:00
Bobby Holley
b36c773a23 Bug 739796 - Make same-origin cross-compartment Location object access go through the LW in the host compartment. r=gal
--HG--
extra : rebase_source : d5e07d4628bfd5990d127b4316219a43c4e0de88
2012-04-05 12:21:12 -07:00
Peter Van der Beken
09128a75d3 Fix for bug 740069 (Generate JS bindings in C++ with a python script for DOM objects on the main thread and in workers. Infrastructure and new bindings for XMLHttpRequest). Patch by bent/bz/bholley/jst/khuey/peterv, r=bent/bz/bholley/jlebar/khuey/peterv/sicking/smaug.
--HG--
rename : js/xpconnect/tests/mochitest/test_bug462428.html => dom/bindings/test/test_lookupGetter.html
2012-03-30 21:42:20 -07:00
Peter Van der Beken
8944dee246 Fix for bug 740064 (Refactor XrayWrapper). r=bholley.
--HG--
extra : rebase_source : 60559d74b10761a794d83a0a63dc60a92b2d48eb
2012-03-27 16:31:37 -07:00
Luke Wagner
ad32da72b6 Bug 733793 - Check for null return from JS_ObjectToOuterObject (r=bholley)
--HG--
extra : rebase_source : 2b7fbb3a72f641785de7f7707e9b6e8013b4eb6d
2012-03-28 16:15:38 -07:00
Bobby Holley
e3ef16972d Bug 738874 - Don't allow non-classinfo XPCWNs to be wrapped cross-compartment. r=mrbkap 2012-03-25 22:35:50 -07:00
Bobby Holley
2672787670 Bug 733984 - Explicitly disallow shadowing on location wrappers. r=mrbkap
This was taken care of in other ways before, but we need to be more explicit about it now that we're doing more Xray stuff with Location wrappers.
2012-03-23 15:58:18 -07:00
Bobby Holley
9146523a9f Bug 667388 - Introduce the PUNCTURE wrapper action. r=mrbkap 2012-03-23 14:59:27 -07:00
Bobby Holley
57296aa50b Bug 667388 - Make the chrome-to-content Xray wrapper derive CrossCompartmentWrapper. r=mrbkap
The current situation seems incorrect, especially given the behavior of CrossOriginWrapper and XrayProxy. Currently it doesn't matter, but it probably will in the future.
2012-03-23 14:59:27 -07:00
Bobby Holley
041837d99f Bug 733984 - Apply Location wrappers for same-origin cross-compartment wrapping. r=mrbkap
This isn't an issue right now, since it can't ever happen outside of sandboxes, which content can't use. But if it could, it could get a pure CrossCompartmentWrapper to a Location object, which is bad.
2012-03-23 14:59:23 -07:00
Bobby Holley
011c97a205 Bug 733984 - Use the Location security policy even for content accessing chrome. r=mrbkap
I'm adding asserts about when we do and don't have a Location object behind the wrapper, and this case was hitting them. What we do here doesn't so much matter given how this stuff all works. On the one hand, statically using a restrictive policy is slightly more defense-in-depth. On the other hand, if this stuff is broken we're screwed in much more serious ways than content reading chrome locations, and using a consistent wrapper scheme allows us to make stronger asserts and assumptions.

I opted for stronger assumptions and more understandable security code. If Blake feels strongly though, I could go the other way and sprinkle '|| isChrome(obj)' throughout the asserts though.
2012-03-23 14:59:19 -07:00
Bobby Holley
a44b6d76ac Bug 733984 - Clarify the security characteristics of Location objects. r=mrbkap
I was getting confused by some of the naming and lack of comments here.
2012-03-23 14:59:07 -07:00
Bobby Holley
4d5b2ef225 Bug 733984 - Stop specializing createHolder, and simplify holder creation in WrapperFactory::Rewrap. r=mrbkap 2012-03-23 14:59:04 -07:00
Igor Bukanov
ed3f5972bd bug 736978 - remove JS_FinalizeStub. r=:billm
Currently the GC finalizes on the background thread only objects with null
JSClass::finalize. However, this implies that any object that uses
JS_FinalizeStub for the finalizer would be prevented from the background
finalization.

To fix this the patch removes JS_FinalizeStub replacing it with NULL in all
cases when the class has no custom finalizer. For style consistency the patch
also removed the usage of JSCLASS_NO_OPTIONAL_MEMBERS in the static
declarations as the compiler fills the missing fields with null in any cases.
2012-03-19 15:27:58 +01:00
Bobby Holley
a150898fc0 Bug 734475 - Take the full union of native sets when bringing non-PreCreate XPWNs across compartments. r=mrbkap 2012-03-16 12:47:20 -07:00
Igor Bukanov
f0bddf0e88 bug 728250 - remove JSPrincipals::codebase. r=:luke,:bz
In just 2 cases where JSPrincipals::codebase is used it can be reconstructed from the values stored in the associated nsJSPrincipal. In addition the patch makes nsJSprincipals to inherit both from nsIPrincipal and JSPrincipals allowing to use static_cast to convert between nsIPrincipal and JSPrincipals pointers and to drop many cases of manual JSPrincipal reference counting.
2012-03-09 10:48:50 +01:00
Igor Bukanov
9174f0c095 bug 730281 - remove cx argument from GC and compartment related functions. r=:billm 2012-02-29 13:18:16 +01:00
David Mandelin
60e80d55b6 Bug 730511: remove obsolete typedefs intN, uintN, r=luke 2012-02-28 15:11:11 -08:00
Daniel Holbert
0cc7de4816 Bug 730074: Use JSCLASS_NO_OPTIONAL_MEMBERS in JSClass definition within XrayWrapper.cpp, to fix build warning about missing braces. r=mrbkap 2012-02-24 14:31:49 +01:00
Bill McCloskey
1029efe694 Bug 716067 - UnmarkGray more often (r=bent) 2012-02-10 18:32:13 -08:00
Phil Ringnalda
a9e7539f67 Back out 5f623a11c6cb (bug 713226), 1ed8ccf96402 (bug 721579), 32af27f89c49 (bug 722028), 1300d282fd22 (bug 716067), dc0f6ad7eff3 (bug 723313), 0d2ab3f2e9b9 (bug 723773) for talos crashes 2012-02-10 19:47:48 -08:00
Bill McCloskey
0de2c12768 Bug 716067 - UnmarkGray more often (r=bent) 2012-02-10 18:32:13 -08:00
Igor Bukanov
748c9f34a7 bug 724310 - drop cx argument from JSObject field and fixed slots infallible API. r=:Waldo
--HG--
extra : rebase_source : b78519db2ff008eb5143676d2db47935f0e89f45
2012-02-05 21:07:23 +01:00
Igor Bukanov
38fe4ed717 backout merge for bug 724310. r=irc 2012-02-09 21:28:22 +01:00
Igor Bukanov
e4e3433d0c bug 723517 - drop cx argument from JSObject field and fixed slots infallible API. r=:Waldo
--HG--
extra : rebase_source : c461dfc0e0e0462ab262cc01c2a771d3bb0971cc
2012-02-05 21:07:23 +01:00
Igor Bukanov
3163d5e91e bug 723517 - Drop cx argumrent from JS_GetClass(cx, obj). r=luke 2012-02-04 01:54:57 +01:00
Blake Kaplan
1343f4e23c Bug 723111 - Add an option to js::UnwrapObject so that it doesn't stop at outer windows when unwrapping. This is useful for cases where we are trying to find the wrapped native for a security wrapper. r=bzbarsky 2012-01-26 14:55:27 +01:00
Phil Ringnalda
ba92819c8c Back out 9aac714775b9 (bug 723111) for make check orange 2012-02-01 10:25:04 -08:00
Blake Kaplan
214339dab1 Bug 723111 - Add an option to js::UnwrapObject so that it doesn't stop at outer windows when unwrapping. This is useful for cases where we are trying to find the wrapped native for a security wrapper. r=bzbarsky
--HG--
extra : rebase_source : 51216cf21b63554e50633c89f393c5888241dee2
2012-01-26 14:55:27 +01:00
Ms2ger
d2bbda8564 Bug 677079 - Part y: Move AutoIdVector to jsapi.h; r=evilpie 2012-01-15 09:13:11 +01:00
Ms2ger
d18f6233a3 Bug 677079 - Part m: Expose context's compartment in jsfriendapi.h; r=jorendorff 2012-01-15 09:13:09 +01:00
Ms2ger
10cf80e5a4 Bug 677079 - Part b: Use existing JSAPI functions where those are available; r=bholley 2012-01-15 09:13:07 +01:00
Ms2ger
ca9baae85f Bug 716357 - Fix license header in FilteringWrapper.cpp; r=gerv DONTBUILD 2012-01-11 17:12:21 +01:00
Ms2ger
5788bfeabb Bug 714458 - Part c: Don't include jscntxt.h in xpcprivate.h; r=bholley
This removes the inclusion from xpcprivate.h, and adds the include to XPConnect
files that still need it, along with notes to clarify what these files need
from the include. These notes will be removed while fixing bug 677079.
2012-01-11 09:23:08 +01:00