Граф коммитов

123 Коммитов

Автор SHA1 Сообщение Дата
Kris Maglione f37317cad0 Bug 1369533: Return dead wrappers rather than null for dead CallbackObject values. r=bz
We don't have access to an appropriate context to create the dead wrapper in
when the callback is nuked, so instead, this patch creates a new dead wrapper
in the caller compartment each time the property is accessed. This is the same
behavior we'd get when trying to re-wrap a cross-compartment dead wrapper, so
it's consistent with the way we handle these situations elsewhere.

MozReview-Commit-ID: 3cMeR4z8EOe

--HG--
extra : rebase_source : 7e8cf4a195ef64deb7677ce4ac9818d342815667
2017-09-04 17:21:06 -07:00
Boris Zbarsky b986760665 Bug 1396904. Remove bogus and no longer needed AutoSuppressGCAnalysis. r=mccr8 2017-09-09 04:11:25 -04:00
Thomas Wisniewski 3646a5cbe9 Bug 1036659 - Don't call mozilla::DropJSObjects() in CallbackObject::DropJSObjects(). r=mccr8
MozReview-Commit-ID: AbD1NUqCvFD
2017-06-16 17:15:32 -04:00
Michael Layzell e66a0f7027 Bug 1331434 - Part 5: Mark some Throw calls in /dom/bindings as having custom cleanup, r=baku
MozReview-Commit-ID: CooKyfkMlWq
2017-03-07 19:06:48 -05:00
Kris Maglione d0f62ee58a Bug 1336988: Correctly handle dead callback objects when iterating over event listeners. r=peterv
MozReview-Commit-ID: 5vGlPL1p3uh

--HG--
extra : rebase_source : 7e33d93472faa1c047361addf8b15f8a78639255
2017-02-06 11:34:56 -08:00
Kris Maglione 67fcf5b318 Bug 1273251: Part 4 - Drop CallbackObject's JS objects for nuked compartments during CC. r=peterv,mccr8
MozReview-Commit-ID: 6lPdmUtKREt

--HG--
extra : rebase_source : c6a53f914b5bbe829de6f5a080cfb9ee93146bd3
2016-11-14 19:49:28 -08:00
Kris Maglione 729b7a2019 Bug 1273251: Part 3 - Allow CallbackObject to contain a null callable. r=peterv
MozReview-Commit-ID: FCXVHouhG3I

--HG--
extra : rebase_source : f3e9325559d40bcb4017ec2505f435275d4fea7f
2016-11-14 21:25:37 -08:00
Olli Pettay 0364dbc792 Bug 1326507, remove NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS, r=mccr8
--HG--
extra : rebase_source : 3ae1207308de120b7299b13ecaa95dd1612b3459
2017-01-03 21:47:55 +02:00
Boris Zbarsky 3f8b6befb3 Bug 1326105 part 5. Move the getting of the incumbent global to the finish-slow-js codepath too, since it's not needed if no one will ever call our callback. r=smaug 2016-12-29 13:19:26 -08:00
Boris Zbarsky ba1f5c039f Bug 1326105 part 3. Move async stack capture out of the 'fast' CallbackObject constructor and into FinishSlowJSInitIfMoreThanOneOwner. r=smaug 2016-12-29 13:19:26 -08:00
Boris Zbarsky e5f32d3609 Bug 1326105 part 2. Rename CallbackObject::HoldJSObjectsIfMoreThanOneOwner to a more generic name and hand it a JSContext to use. r=smaug 2016-12-29 13:19:26 -08:00
Boris Zbarsky 4821850eb8 Bug 1295322 part 2. Stop propagating through xpconnect exceptions to consumers that won't be able to work with them. r=bholley 2016-08-26 15:38:16 -04:00
Boris Zbarsky eb139d85bf Bug 1279313 part 1. Simplify AutoEntryScript to not make callers pass in a JSContext. r=bholley 2016-07-07 20:08:25 -04:00
Ms2ger 595eb44ead Bug 1273499 - Move some code around in CallSetup::CallSetup() to avoid code repetition; r=bz
This has been possible since changeset d5f6867173c9 (bug 1262630).
2016-06-03 11:11:45 +02:00
Boris Zbarsky dc120449d2 Bug 1275698. Get rid of nsScriptSecurityManager::ScriptAllowed and replace it with xpc::Scriptability::Get(obj).Allowed() for better performance and less indirection. r=khuey 2016-05-27 20:26:56 -04:00
Boris Zbarsky bfc23d53a8 Bug 1273661 part 3. Add the codegen bits and Trace implementation to allow Web IDL callbacks to not have to HoldJSObjects until the bindings have determined that someone is actually holding on to the callback object. r=smaug,terrence 2016-05-18 12:23:35 -04:00
Boris Zbarsky 61b3aedfa3 Backed out changesets bdb5b50fd858, 74dbcb56456d, 8f319062be85, 9806d7a88802, c08f417d85fd (bug 1273661) for build bustage and CLOSED TREE. 2016-05-19 00:26:24 -04:00
Boris Zbarsky 893059f88a Bug 1273661 part 3. Add the codegen bits and Trace implementation to allow Web IDL callbacks to not have to HoldJSObjects until the bindings have determined that someone is actually holding on to the callback object. r=smaug,terrence 2016-05-18 12:23:35 -04:00
Boris Zbarsky 049c40b0ef Bug 1269400. Provide better error messages for the cases when a CallSetup fails and we hence fail to execute a Web IDL callback. r=bholley 2016-05-04 13:59:42 -04:00
Boris Zbarsky 272e533b18 Bug 1262630. Replace workers::GetGlobalObjectForGlobal with xpc::NativeGlobal. r=khuey 2016-04-07 21:58:21 -04:00
Ms2ger dd6ade76ab Bug 1260417 - Part c: Stop mentioning requests around CallSetup::mRootedCallable; r=bz
Rooted used to only work when the JSContext was in a request. This has long
been rectified, so the comments referring to that constraint are confusing at
best.
2016-04-07 09:11:52 +02:00
Ms2ger 7942e7f996 Bug 1260417 - Part b: Depend on AutoEntryScript to find an appropriate JSContext CallSetup; r=bz 2016-04-07 09:11:52 +02:00
Nathan Froyd cccdd9fbca Bug 1177488 - use |const char*| for representing async call reasons; r=bz,fitzgen
Using a simple |const char*| is more memory-efficient than allocating a
JS string. We still have to allocate the JS string for passing things
into JS, but ideally we will be able to move the point of allocation
much closer to where it's actually needed, rather than indiscriminantly
doing it all the time.
2016-03-23 10:40:53 -04:00
Wes Kocher ea76ed99d7 Backed out changeset 95494e68c722 (bug 1177488) for crashes in test_bug732665.xul CLOSED TREE
MozReview-Commit-ID: IFUHUBUCnCD
2016-03-25 12:11:48 -07:00
Boris Zbarsky d8d55b4579 Bug 1259545. Remove the JS_SaveFrameChain bits in CallbackObject error reporting, since they are no longer needed. r=bholley
The code this is working around no longer exists.
2016-03-25 11:11:20 -04:00
Nathan Froyd 418aa2af4f Bug 1177488 - use |const char*| for representing async call reasons; r=bz,fitzgen
Using a simple |const char*| is more memory-efficient than allocating a
JS string. We still have to allocate the JS string for passing things
into JS, but ideally we will be able to move the point of allocation
much closer to where it's actually needed, rather than indiscriminantly
doing it all the time.
2016-03-23 10:40:53 -04:00
Boris Zbarsky 8b4ef1c72e Bug 1255817 part 6. Fix up some comments in CallbackObject that refer to things that no longer exist. r=bholley 2016-03-23 11:44:55 -04:00
Boris Zbarsky e3b2de6aa9 Bug 1255817 part 2. Get rid of AutoJSAPI::OwnsErrorReporting and AutoJSAPI::TakeOwnershipOfErrorReporting. r=bholley 2016-03-23 11:44:54 -04:00
Boris Zbarsky 172598b4e2 Bug 1257335. Replace some AutoSafeJSContext uses with AutoJSAPI or AutoJSContext uses. r=bholley
In general, using an AutoJSAPI inited with an object is NOT the same as using
AutoSafeJSContext (or AutoJSAPI inited without an object) and then entering the
compartment of the object: the former will report exceptions to the global of
the object as it comes off the stack, while the latter will not.  This only
really matters if we have an object from a window or worker global and hence
might fire error events, or report internal stuff to the web console.

The changes to initing with an object made in this bug are OK for the following
reasons:

1) dom/base/Console.cpp: Always clears its exception before coming off the stack.
2) dom/base/nsDOMClassInfo.cpp: Inits with a non-web global.
3) dom/base/nsFrameMessageManager.cpp: Inits with a non-web global.
4) dom/media/MediaPermissionGonk.cpp: We probably want the caller to notice if
   anything here throws.
5) dom/xbl/nsXBLPrototypeBinding.cpp: Inits with a non-web global.
6) dom/xul/nsXULElement.cpp: Inits with a non-web global.
7) extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp: Inits with a non-web global.
8) ipc/testshell/XPCShellEnvironment.cpp: Inits with a non-web global.
2016-03-18 10:48:38 -04:00
Wes Kocher 168746512d Backed out changeset ee3c99e6f676 (bug 1177488) for LeakSanitizer failures
MozReview-Commit-ID: FFfF4u2vOrS

--HG--
extra : rebase_source : 0c7f5e290b388b2f35837a5f757f2d962b973da3
2016-03-14 13:15:21 -07:00
Nathan Froyd 6b6c2a1fcd Bug 1177488 - use |const char*| for representing async call reasons; r=bz,fitzgen
Using a simple |const char*| is more memory-efficient than allocating a
JS string.  We still have to allocate the JS string for passing things
into JS, but ideally we will be able to move the point of allocation
much closer to where it's actually needed, rather than indiscriminantly
doing it all the time.
2016-03-08 16:29:25 -05:00
Kyle Huey 9eea75a6f5 Bug 1252268: If the slow script dialog aborts an interval timer callback, don't schedule it again. r=bz 2016-03-10 01:50:56 -08:00
Boris Zbarsky 36d4079be7 Bug 1254847 part 3. Make AutoEntryScript always take ownership of error reporting. r=bholley 2016-03-09 19:02:03 -05:00
Kyle Huey 91efc5a86c Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Boris Zbarsky 89a6485e7f Bug 1172246. Make sure CallSetup's handling of exceptions it wants to deal with itself works even when the callable is a JSNative that uses the JS_Report*Error APIs instead of throwing exceptions in the usual way. r=bholley 2015-06-08 16:16:27 -04:00
Boris Zbarsky 888bc2d651 Back out bug 1172246 because of mochitest-JP bustage. Who needs tests that we care about running on try anyway? 2015-11-20 18:00:27 -05:00
Boris Zbarsky bc25c907d6 Bug 1172246. Make sure CallSetup's handling of exceptions it wants to deal with itself works even when the callable is a JSNative that uses the JS_Report*Error APIs instead of throwing exceptions in the usual way. r=bholley 2015-06-08 16:16:27 -04:00
Jan de Mooij fffc37012e Bug 1125423 part 2 - Rename stopAtOuter argument to *Unwrap functions to stopAtWindowProxy. r=bz 2015-11-06 19:03:52 +01:00
Nathan Froyd 01583602a9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi

--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 01:24:48 -04:00
Bobby Holley 110f12e7ca Bug 1072150 - Use the opt-out for various sloppy consumers. r=bz 2015-09-24 14:02:41 -07:00
Tom Tromey 9f3b16bf4c Bug 1148593 - Create async stack in callback objects. r=bz, r=fitzgen
--HG--
extra : rebase_source : f9b507d8f005dbca6f40f510ca41a0cbb03aebf9
2015-07-24 07:01:00 -04:00
Ryan VanderMeulen b171b787bd Backed out changesets fa9fe193778f and 3eaf867930dd (bug 1148593) for test_async_setTimeout_stack.html and test_async_setTimeout_stack_across_globals.html failures. 2015-07-17 12:37:24 -04:00
Tom Tromey 843465db8e Bug 1148593 - Create async stack in callback objects. r=bz, r=fitzgen 2015-07-17 07:48:00 -04:00
Boris Zbarsky 9c31c02f69 Bug 1180525. Run callbacks whose window is no longer current as long as its document is the active document in the browsing context. r=bholley
The distinction only matters when document.open() makes a different
window current without changing the active document.
2015-07-07 17:38:07 -04:00
Boris Zbarsky 90031d3619 Bug 1173593. Make it possible to throw TypeError (or, in fact, any other Error from the content compartment) from js-implemented webidl. r=bholley 2015-06-15 20:09:36 -04:00
Olli Pettay 6c339b4947 Bug 1149891, backout bug 1081038 because it made us run mutation observer callbacks against the spec, part 2, r=bholley
--HG--
extra : rebase_source : 3d34419ec07782b1a3260c36fc64a1b26b3679e8
2015-05-29 19:11:09 +03:00
Andrew McCreight 9e8f4b219e Bug 1152551, part 2 - Fix mode lines in dom/. r=jst 2015-05-03 15:32:37 -04:00
Jim Blandy ebd83c9a61 Bug 1152577: Add 'aReason' argument to AutoEntryScript constructor, and provide plausible names for its instantiations. r=bholley
--HG--
extra : rebase_source : 8ab7a3628a5b4d94b957f24e23e4c5c7871db97c
2015-04-08 21:23:48 -04:00
Eddy Bruël a95bcbb9fd Bug 1092102 - Implement a WorkerDebuggerGlobalScope;r=khuey 2015-03-04 00:51:53 +01:00
Boris Zbarsky 8615709f13 Bug 1107953 part 1. Change the invariants around aCompartment in CallSetup to allow passing it even when the exception handling mode is eRethrowExceptions. r=bholley 2015-01-15 17:39:01 -05:00