Commit Graph

252 Commits

Author SHA1 Message Date
Bill McCloskey
5a9c3656df Revert "Bug 1340719 - Throw an exception if accessing Xray from wrong docgroup (r=bholley)"
This reverts commit ff10f4faedd42f13ed2899cf4ea05c47411aba95.
2017-04-07 14:23:06 -07:00
Bill McCloskey
89fbb60be1 Bug 1340719 - Throw an exception if accessing Xray from wrong docgroup (r=bholley)
MozReview-Commit-ID: BBrRsk3KvGb
2017-04-05 13:26:20 -07:00
Jon Coppeard
84d08ee0ab Bug 1338623 - Add a slower but more exact gray marking check for checking correctness r=sfink r=mccr8 2017-03-02 10:22:47 +00:00
Olli Pettay
6be387282d Bug 1342244, try to avoid extra CompartmentPrivate::Get calls during Rewrap, r=bholley 2017-02-24 15:03:38 +02:00
Kris Maglione
cf6b776ef4 Bug 1322273: Return DeadObjectProxy when wrapping for nuked compartment. r=bholley
MozReview-Commit-ID: V07P0eZvKO
2017-02-22 19:11:52 -08:00
Jan de Mooij
080f2bf190 Bug 1338880 - Optimize WrapperFactory::Rewrap a bit by avoiding GetXrayType/IsContentXBLScope calls in the non-xray case. r=bholley 2017-02-12 22:45:25 +01:00
Tooru Fujisawa
dc8030d923 Bug 1320408 - Part 22: Remove JSContext* parameter from ProxyObject::renew and Wrapper::Renew. r=jandem 2017-02-08 23:04:57 +09:00
Tim Huang
6fd55bd41e Bug 1319773 - Part 3: Making the WrapperFactory ignores the First Party Domain of the originAttributes when rewrapping the wrapper. r=mrbkap 2017-01-18 20:34:31 +08:00
Kris Maglione
27e4e37bae Bug 1273251: Part 1 - Mark nuked sandboxes as nuked and non-scriptable. r=bholley
MozReview-Commit-ID: tq9nExa1P7
2017-01-12 14:47:38 -08:00
Nicholas Nethercote
41f100680b Bug 1329846 (part 2) - Remove NATIVE_HAS_FLAG. r=mccr8.
It's only used in three places, and it no longer makes the code more readable.
2017-01-11 07:40:19 +11:00
Nicholas Nethercote
18f63503a5 Bug 1329846 (part 1) - Remove XPCNativeScriptableInfo. r=mccr8.
XPCNativeScriptableInfo is now a very thin wrapper around nsIXPCScriptable, and
it uses manual memory management. Removing it simplifies things quite a bit.

In particular, when setting XPCWrappedNative::mScriptable in
XPCWrappedNative::WrapNewGlobal() and XPCWrappedNative::Init() we no longer
have to worry about sharing the XPCNativeScriptableInfo object with the proto.
And XPCWrappedNative::{Init,Destroy}() have similar simplifications.
2017-01-10 12:47:57 +11:00
Jon Coppeard
863d796e4b Bug 1297558 - Remove explicit calls to Expose*ToActiveJS r=mccr8 2016-10-18 17:58:19 +01:00
Tooru Fujisawa
a5294e0308 Bug 1289050 - Part 1: Use ASCII variant of JS_ReportError in simple case. r=jwalden 2016-08-14 20:39:28 +09:00
Andrew McCreight
5a1ccdddfd Bug 1288909, part 1 - Implement refcounting of XPCNativeSet. r=billm
This patch is similar to bug 1288870.

Strong references:

- XPCCallContext::mSet: Like XPCNativeInterface, this only roots it
when |mState >= HAVE_NAME|, and again this only requires changing
SystemIsBeingShutDown().

- XPCWrappedNativeProto::mSet and XPCWrappedNative::mSet. These become
RefPtrs.

- stack: AutoMarkingNativeSetPtr become RefPtr<XPCNativeSet>. This
lets me eliminate some uses of AutoJSContext. This is the bulk of the
patch.

Weak references:

- mNativeSetMap. This reference gets cleared in the dtor. This
requires bug 1290239 to actually find the entry for removal.

- mClassInfo2NativeSetMap. The reference is in the value for this hash
table, and we don't have the key in the set dtor. Fortunately, the
only code that adds to this table is
XPCNativeSet::GetNewOrUsed(nsIClassInfo* classInfo), which in turn is
only called by GetNewOrUsed(nsIClassInfo* classInfo). This code
creates a new XPCWrappedNativeProto, which (with my patch) holds a
strong reference to the set that has been added to the table. This set
is never changed or released until the dtor for the proto, which calls
ClearCacheEntryForClassInfo(), removing the entry from the
hashtable. Thus, the lifetime of the set is always going to be longer
than the lifetime of the entry.

Other notes:

- Like XPCNativeInterface, this class uses placement |new| that
requires a special destruction function, which with my patch is hidden
away in the refcounting code.

- This patch delete a bunch of marking/sweeping code from
XPCJSRuntime::FinalizeCallback(), because the lifetimes are managed by
the refcounting now. Some of the marking code is left behind to be
cleaned up in a later patch.

- I didn't see any methods that had XPCNativeSet** outparams.

- MOZ_COUNT_{CTOR,DTOR}(XPCNativeSet) is not needed because it is now
refcounted.

MozReview-Commit-ID: 7oTorCwda1n
2016-07-27 16:38:30 -07:00
Andrew McCreight
a5a1322db0 Bug 1288870, part 3 - Root the return value of the prewrap callback. r=mrbkap,terrence
Like part 2, this patch is to work around a false GC hazard in
~XPCNativeInterface in part 4. This hazard is around the return value
of WrapperFactory::PrepareForWrapping(), because ~XPCCallContext might
call ~XPCNativeInterface. The fix is to pass the return value into a
mutable handle. Unfortunately, this function is used in the JSAPI, so
JS minor engine changes are also needed.

MozReview-Commit-ID: GwFxmrXFXmb
2016-08-23 05:59:57 -07:00
Boris Zbarsky
303d6b617b Bug 1289428. Make sure JSCompartment::wrap never returns a gray object, except when it returns "existing". r=bholley,jonco
The basic idea is that we assume the invariant that the "obj" argument is never
gray if "existing" is null (and add asserts to that effect).  Starting from that
assumption, terrence and I audited all the return paths to ensure that gray
objects are never returned.  We found a few places, generally after crossing
compartments with UncheckedUnwrap, where we could have gray things and inserted
corresponding calls to ExposeObjectToActiveJS.

If "existing" is passed in, all bets are off: both "obj" and "existing" can be
gray and can get returned from here.  But the only caller that passes "existing"
doesn't allow the return value to escape, so it's actually safe to do this.
2016-08-02 11:10:58 -07:00
Boris Zbarsky
b701321a3b Bug 767938 part 7. Remove the now-debug-only uses of XPCJSContextStack::Peek and Count(). r=bholley 2016-06-24 14:19:50 -04:00
Boris Zbarsky
519cbb38a4 Bug 1281276 part 5. Get rid of the LangType argument of the XPCCallContext constructor and the now-dead language type enums. r=bholley 2016-06-23 00:22:29 -04:00
Jan de Mooij
628a001e3f Bug 1223372 - Handle ToWindowProxyIfWindow returning a dead wrapper in PrepareForWrapping. r=bholley 2015-11-17 19:24:28 +01:00
Jan de Mooij
24de1247fd Bug 1125423 part 3 - Use IsWindow/IsWindowProxy functions instead of checking for Class hooks. r=bz 2015-11-06 19:03:52 +01:00
Jan de Mooij
eae167fd59 Bug 1125423 part 2 - Rename stopAtOuter argument to *Unwrap functions to stopAtWindowProxy. r=bz 2015-11-06 19:03:52 +01:00
Jan de Mooij
af31342c5b Bug 1125423 part 1 - Attach WindowProxies to globals instead of using innerObject/outerObject hooks. r=bz,luke 2015-11-06 19:03:51 +01:00
Bobby Holley
c66ad2a5e6 Bug 1182409 - Add 'allowWaivers' sandbox option. r=gabor 2015-07-15 11:32:30 -07:00
Birunthan Mohanathas
a29151dc87 Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Juan Gomez
89035d527e Bug 1171931 - Refactor duplicated code using XRE_IsParent/ContentProcess. r=froydnj 2015-07-03 18:29:00 -07:00
Ryan VanderMeulen
7aba9d7002 Backed out changeset 8b4e4083639e (bug 1171931) for B2G debug emulator bustage. 2015-06-25 19:48:42 -04:00
Juan Gomez
7323e89a40 Bug 1171931 - Refactor duplicated code using XRE_IsParent/ContentProcess. r=froydnj 2015-06-24 14:11:00 -04:00
Nicholas Nethercote
927d4ac466 Bug 1171305 - Remove lots of now-unnecessary null-checks involving XPCMaps. r=mrbkap.
Possible because both |new| and PLDHashTable initialization are infallible now.

I had to use NS_ABORT_OOM for a couple of the maps that use js::HashTable,
which still has fallible initialization. There were a couple of uses of those
maps that weren't protected by null-checks, so we would have got crashes anyway
if they had OOMed.
2015-05-05 18:20:33 -07:00
Jan de Mooij
c6596c5fa8 Bug 1144366 - Switch SpiderMonkey and XPConnect style from |T *t| to |T* t|. r=jorendorff 2015-03-28 23:22:11 +01:00
Phil Ringnalda
1a1c158706 Backed out changeset 0c030f97a04f (bug 1144366) for being on top of patches being backed out
CLOSED TREE
2015-03-28 10:39:56 -07:00
Jan de Mooij
369ef1b850 Bug 1144366 - Switch SpiderMonkey and XPConnect style from |T *t| to |T* t|. r=jorendorff 2015-03-28 12:08:37 +01:00
Boris Zbarsky
78e8ce1375 Bug 1131805 part 1. Remove remaining JS_GetParent and js::GetObjectParent uses in Gecko. r=bholley 2015-03-06 16:33:31 -05:00
Boris Zbarsky
ff09c61895 Bug 1136925 part 2. Stop passing a parent to Wrapper::New. r=waldo,bholley 2015-02-26 15:58:59 -05:00
Wes Kocher
64ff21e8a1 Backed out 4 changesets (bug 1136925) for potentially busting m-e10s-dt on a CLOSED TREE
Backed out changeset 331761aaae22 (bug 1136925)
Backed out changeset 2faa0e91fe23 (bug 1136925)
Backed out changeset a00f2530c911 (bug 1136925)
Backed out changeset d5e658bc0792 (bug 1136925)
2015-02-26 23:17:34 -08:00
Boris Zbarsky
0d229e715e Bug 1136925 part 2. Stop passing a parent to Wrapper::New. r=waldo,bholley 2015-02-26 15:58:59 -05:00
Bobby Holley
f249852d63 Bug 1126911 - Special-case all chrome objects in wrapper selection. r=gabor 2015-02-05 11:07:40 -08:00
Bill McCloskey
3fdc0539fb Bug 1123461 - Make a real interface for js/ipc (r=dvander) 2015-01-26 13:32:18 -08:00
Bill McCloskey
df76390ad7 Bug 1092446 - [e10s] Allow unprivileged scopes to call content-to-chrome CPOWs (r=bholley) 2014-11-04 17:38:19 -08:00
Carsten "Tomcat" Book
475b7960c9 Backed out changeset 2dbf8f6bd2aa (bug 1092446) for suspicion of adding a hazard 2014-11-05 10:04:08 +01:00
Bill McCloskey
447a384ca1 Bug 1092446 - [e10s] Allow unprivileged scopes to call content-to-chrome CPOWs (r=bholley) 2014-11-04 17:38:19 -08:00
Bobby Holley
dc53be8b85 Bug 1081985 - Remove prototype remapping and make COWs simple. r=gabor
\o/
2014-10-20 15:52:53 +02:00
Bobby Holley
2d41b4d59e Bug 1081990 - Turn off COWs for Functions. r=gabor 2014-10-18 11:02:10 +02:00
Bobby Holley
e97f6b5fbd Bug 1083060 - Only use the XOW policy for Window and Location. r=bz 2014-10-17 16:17:03 +02:00
Bobby Holley
ea34b5ae7e Bug 1065186 - Drop support for exposing privileged arrays to untrusted content. r=gabor 2014-10-16 14:12:37 +02:00
Bobby Holley
2e18ca7d61 Bug 1074863 - Handle named constructors which have DOMXrayTraits while being simultaneously JSProto_Function. r=peterv
Simple fix, but interesting test case and worth having on CI.
2014-10-02 11:06:03 +02:00
Bobby Holley
8ff0a8449b Bug 1070696 - Rename xpc::GetNativeForGlobal to xpc::NativeGlobal and make it accept non-global JSObjects. r=smaug
The method is infallible, and making the callers invoke
js::GetGlobalForObjectCrossCompartment manually is dumb.
2014-09-21 21:31:53 +02:00
Bobby Holley
7d0c27ef8e Bug 1060521 - Remove infrastructure for Xrayed NewResolve, GetProperty, and SetProperty on XPCWrappedNatives. r=peterv 2014-09-15 14:13:02 +02:00
Bobby Holley
b37ef629a5 Bug 1064437 - Remove Proxy special-case in ForceCOWBehavior. r=gabor 2014-09-09 08:21:45 -07:00
Nicholas Nethercote
663b82ea3b Bug 1050009 - Initialize pldhash tables with a length, not a capacity. r=roc.
* * *
imported patch rm-dummy-params
2014-08-06 06:31:21 -07:00
Bobby Holley
3b3e9fb216 Bug 965898 - Implement an Xray subclass that we can use to implement HTML5 cross-origin semantics. r=gabor 2014-07-30 12:23:01 -07:00