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

305 Коммитов

Автор SHA1 Сообщение Дата
Andrew McCreight b80e656e9e Bug 1247679, part 3 - Replace NS_IMPL_CYCLE_COLLECTION_TRACE_JSVAL_MEMBER_CALLBACK with JS_MEMBER. r=smaug 2016-02-22 10:11:02 -08:00
Boris Zbarsky 24566ec012 Bug 1243001 part 7. Stop wrappercaching dom::Promise when SPIDERMONKEY_PROMISE is defined. r=peterv
nsWrapperCache expects the object it stores to have an ObjectMoved op that will
notify the wrapper cache when the object is moved.  SpiderMonkey promises don't
have a way to do this.

The XPCConvert changes are needed to allow code that passes around Promise
objects as nsISupports to continue working instead of ending up with
double-wrapped nsISupports (XPCWrappedNative for an nsISupports XPCWrappedJS)
around the SpiderMonkey Promise.
2016-02-09 17:40:31 -05:00
Boris Zbarsky fbe6dcf99f Bug 1243001 part 6. Implement Promise::AppendNativeHandler in the SPIDERMONKEY_PROMISE world. r=peterv
This patch introduces a fake IDL interface just to get the benefits of
cycle collection for the JS-to-C++ link we now need for PromiseNativeHandler
(because the SpiderMonkey Promise somehow needs to point to the
PromiseNativeHandler).  Now in practice a bunch of our PromiseNativeHandlers
are not cycle collected.  That kinda freaks me out, but spot-checking a few
suggests they do not in fact leak (either because they don't form cycles or
because the Promise they're observing always settles and then releases them).
Either way, that's a problem that exists with or without this patch...
2016-02-09 17:40:31 -05:00
Boris Zbarsky 3366af6c39 Bug 1243001 part 5. Get rid of most of the dom::Promise methods when SPIDERMONKEY_PROMISE is defined, and reimplement the rest in terms of SpiderMonkey Promise. r=peterv
This is the bulk of the new dom::Promise implementation.  It's using the APIs
that bug 911216 part 1 adds.
2016-02-09 17:40:31 -05:00
Boris Zbarsky a78653548f Bug 1243001 part 4. Switch to using MaybeResolve/MaybeReject instead of ResolveInternal/RejectInternal for PromiseWorkerProxy. r=peterv
This is the one part of this set of patches that is actually a substantive change
even without SPIDERMONKEY_PROMISE defined.  This is being done because I don't
want to create ResolveInternal/RejectInternal methods on dom::Promise in the
new world.

In practice, the difference between MaybeResolve/Reject and
ResolveInternal/RejectInternal is that the former will do nothing if the
Promise is "resolved" in terms of spec terminology: either settled or locked in
to track another Promise.  A resolved but still pending Promise can still get
fulfilled (what we call ResolveInternal) or rejected when the promise it's
tracking settles.

So the difference only matters if PromiseWorkerProxy can be working with a
"resolved" Promise (in which case what it's doing now would settle it, while
what I'm switching to would not).  But I don't believe PromiseWorkerProxy ever
points to a "resolved" Promise.
2016-02-09 17:40:31 -05:00
Boris Zbarsky a1f6df215a Bug 1243001 part 3. Turn off the IDL bits of PromiseDebugging when SPIDERMONKEY_PROMISE is defined. r=peterv
These are basically the minimal changes needed to make PromiseDebugging compile
in the new world.  It will NOT function correctly (see the XXX comments); Till
will be fixing it up more in bug 911216 as he transitions the relevant bits in
our devtools to work on top of SpiderMonkey promises.
2016-02-09 17:40:31 -05:00
Boris Zbarsky 7fd3989391 Bug 1243001 part 2. Make Promise an empty [NoInterfaceObject] interface when SPIDERMONKEY_PROMISE is defined. r=peterv
The idea is to not define a "Promise" property on the global and not generate
any of the methods, since SpiderMonkey will implement all of those, but to keep
some of the conversion to/from JS logic and the IDL parser validation bits that
we have right now.  Once we can assume SPIDERMONKEY_PROMISE we can probably
change how the "Promise" identifier is handled by the IDL parser and how the
resulting type is handled by codegen, but for now we're aiming for minimal
changes.
2016-02-09 17:40:30 -05:00
Boris Zbarsky 33b6989098 Bug 1243001 part 1. Remove the dead WrappedWorkerRunnable class from Promise code. r=peterv 2016-02-09 17:40:30 -05:00
Till Schneidereit 393e292822 Bug 911216 - Part 1: Add tests directly testing content Promise constructor resolved with chrome Promise. r=bz 2016-02-07 20:05:37 +01:00
Boris Zbarsky a7640491d9 Bug 1245674. Null-check mGlobal before dereferencing it in one more place in Promise code. r=smaug 2016-02-05 13:12:52 -05:00
Paolo Amadini 8b8676204b Bug 989960 - Unhandled rejections in DOM Promises should cause xpcshell tests to fail. r=Yoric
--HG--
extra : commitid : yWjnDGhk9j
extra : rebase_source : 24228660defd6971a621d52eee0b79be823c6926
extra : amend_source : ef8de24265fa9026b0f764a63453b816442f7232
extra : source : 3958782fe187026cbc3755ad6eae6920e67fa7d2
2016-02-03 12:58:03 +00:00
Wes Kocher 1b65a8ee2f Backed out changeset e8148cda7d85 (bug 989960) for xpcshell bustage
--HG--
extra : commitid : Bxwy5tzArNN
extra : rebase_source : a15513777534e54d05fda5037f24e15ac089b313
2016-02-01 08:25:19 -08:00
Paolo Amadini ecd744bdef Bug 989960 - Unhandled rejections in DOM Promises should cause xpcshell tests to fail. r=Yoric
--HG--
extra : commitid : 6aGIHyyYqSo
extra : rebase_source : 38fbf5e49d06970555a088c5ea3f8379e2064767
extra : source : 3958782fe187026cbc3755ad6eae6920e67fa7d2
2016-01-30 18:53:56 +00:00
Kyle Huey 91efc5a86c Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Jeff Walden 50cb5c44d6 Bug 1243114 - Convert PromiseCapability::mPromise to a rooted JSObject* instead of a rooted JS::Value. r=bz
--HG--
extra : rebase_source : bf3b1439951699ddb117070dff71198b1569ccf8
2016-01-26 23:26:39 -08:00
Kaku Kuo e3bc6c71ea Bug 1239300 - reject promise with null while creating imagebitmap from empty blob; r=smaug 2016-01-19 14:35:01 +08:00
simplyblue 4a7674779d Bug 1212533 - Change the out-param of js/JS::Construct from MutableHandleValue to MutableHandleObject. r=arai, r=jorendorff
--HG--
extra : rebase_source : 04e0ec01701a1c55b5589b36576b7bab433feafd
2015-10-28 16:38:27 +05:30
Phil Ringnalda 6aeccf0426 Merge f-t to m-c, a=merge 2016-01-23 18:11:37 -08:00
Boris Zbarsky d4db9bedd0 Bug 1242054. Get rid of AbortablePromise, so we can move Promise into SpiderMonkey more easily. r=khuey 2016-01-23 00:37:44 -05:00
Tom Tromey 5412728905 Bug 757969 - use __thread in ThreadLocal; r=froydnj 2016-01-22 10:33:44 -07:00
Shu-yu Guo 1768759efb Bug 1220564 - Update chrome code uses of genexprs and legacy comprehensions. (r=billm) 2016-01-06 16:02:16 -08:00
Boris Zbarsky a999ef253a Bug 1230704. Change AbortablePromise::DoAbort to not worry about the result of calling its callback. r=smaug 2015-12-07 18:41:41 -05:00
Boris Zbarsky 4cb14db1a1 Bug 1170760 part 13. Add subclassing support to Promise::Then/Catch. r=baku,efaust 2015-11-25 15:48:10 -05:00
Boris Zbarsky bc6a0c8f1c Bug 1170760 part 12. Rip out the promise-resolved-with-promise fast path. r=baku 2015-11-25 15:48:09 -05:00
Boris Zbarsky 5d774c82cc Bug 1170760 part 11. Add subclassing support to Promise::Reject. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky 0baeed7ed3 Bug 1170760 part 10. Add subclassing support to Promise::Resolve. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky 52d7142a8e Bug 1170760 part 9. Stop using Promise::Resolve in the bindings for PromiseDebugging. r=baku 2015-11-25 15:48:09 -05:00
Boris Zbarsky 53b93863f6 Bug 1170760 part 8. Add subclassing support to Promise::All. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky 7c7786c7ac Bug 1170760 part 7. Add subclassing support to Promise::Race. r=baku,efaust
Note that the web platform tests don't actually have quite the behavior they're
expected to per the spec yet.  They will get adjusted later on as we add
subclassing support to Promise.resolve and Promise.prototype.then.
2015-11-25 15:48:09 -05:00
Boris Zbarsky 2296e841e7 Bug 1170760 part 6. Fix GetDependentPromise to deal with a situation when someone called then() and passed it the resolve/reject functions that come from a promise's constructor. r=baku 2015-11-25 15:48:09 -05:00
Boris Zbarsky 7e919bdf2d Bug 1170760 part 5. Implement NewPromiseCapability which can either return a PromiseCapability as in the spec, or one that has a native promise and maybe resolve/reject functions if the consumer asked for them. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky c9985b9298 Bug 1170760 part 4. Change Promise::Constructor to run in the Xray compartment when new Promise happens over Xrays. r=peterv 2015-11-25 15:48:08 -05:00
Boris Zbarsky 7229385d25 Bug 1170760 part 3. Add an @@species getter on Promise. r=peterv 2015-11-25 15:48:08 -05:00
Boris Zbarsky 64186b5b76 Bug 1170760 part 2. Pass in the 'this' value to Promise static methods. r=peterv 2015-11-25 15:48:08 -05:00
Boris Zbarsky ee1e77dfe3 Bug 1170760 part 1. Introduce a PromiseCapability struct. r=baku,efaust 2015-11-25 15:48:08 -05:00
Phil Ringnalda 53745073f0 Back out 13 changesets (bug 1170760) for Gu bustage in homescreen/test/unit/apps_test.js
CLOSED TREE

Backed out changeset 5d84599a8846 (bug 1170760)
Backed out changeset 6104fe33d5f5 (bug 1170760)
Backed out changeset 1dfb229da01d (bug 1170760)
Backed out changeset f380faddfdd8 (bug 1170760)
Backed out changeset 541831dc6b57 (bug 1170760)
Backed out changeset 6a5b7dfab882 (bug 1170760)
Backed out changeset ee514a256922 (bug 1170760)
Backed out changeset 3c2c1acc34ee (bug 1170760)
Backed out changeset dc2a7f5dc5d6 (bug 1170760)
Backed out changeset b312a08fbab5 (bug 1170760)
Backed out changeset cb6aba9b8497 (bug 1170760)
Backed out changeset 39e4f5b1ba40 (bug 1170760)
Backed out changeset 7d79cce3630a (bug 1170760)
2015-11-25 21:02:55 -08:00
Boris Zbarsky d71fb767c8 Bug 1170760 part 13. Add subclassing support to Promise::Then/Catch. r=baku,efaust 2015-11-25 15:48:10 -05:00
Boris Zbarsky f1d0f460ff Bug 1170760 part 12. Rip out the promise-resolved-with-promise fast path. r=baku 2015-11-25 15:48:09 -05:00
Boris Zbarsky 0bbce93c83 Bug 1170760 part 11. Add subclassing support to Promise::Reject. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky 93faa5b1b0 Bug 1170760 part 10. Add subclassing support to Promise::Resolve. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky a623100bc3 Bug 1170760 part 9. Stop using Promise::Resolve in the bindings for PromiseDebugging. r=baku 2015-11-25 15:48:09 -05:00
Boris Zbarsky 66b2d1a604 Bug 1170760 part 8. Add subclassing support to Promise::All. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky df222dfc09 Bug 1170760 part 7. Add subclassing support to Promise::Race. r=baku,efaust
Note that the web platform tests don't actually have quite the behavior they're
expected to per the spec yet.  They will get adjusted later on as we add
subclassing support to Promise.resolve and Promise.prototype.then.
2015-11-25 15:48:09 -05:00
Boris Zbarsky 608e75a0b6 Bug 1170760 part 6. Fix GetDependentPromise to deal with a situation when someone called then() and passed it the resolve/reject functions that come from a promise's constructor. r=baku 2015-11-25 15:48:09 -05:00
Boris Zbarsky aaff15aaaa Bug 1170760 part 5. Implement NewPromiseCapability which can either return a PromiseCapability as in the spec, or one that has a native promise and maybe resolve/reject functions if the consumer asked for them. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky 56a0511eb4 Bug 1170760 part 4. Change Promise::Constructor to run in the Xray compartment when new Promise happens over Xrays. r=peterv 2015-11-25 15:48:08 -05:00
Boris Zbarsky c1ba24a868 Bug 1170760 part 3. Add an @@species getter on Promise. r=peterv 2015-11-25 15:48:08 -05:00
Boris Zbarsky b4cbee7794 Bug 1170760 part 2. Pass in the 'this' value to Promise static methods. r=peterv 2015-11-25 15:48:08 -05:00
Boris Zbarsky 1e0e4345bd Bug 1170760 part 1. Introduce a PromiseCapability struct. r=baku,efaust 2015-11-25 15:48:08 -05:00
Boris Zbarsky c3bc1cdc40 Bug 1224007 part 5. Get rid of ErrorResult::StealJSException. r=peterv 2015-11-20 16:29:41 -05:00