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

1677 Коммитов

Автор SHA1 Сообщение Дата
Nika Layzell 84828b5af3 Bug 1501124 - Switch BackstagePass to use WebIDLGlobalNameHash, r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D9736
2018-10-25 10:24:36 -04:00
Nika Layzell 1ec79f98ec Bug 1500926 - Part 3: Remove unused WebIDL Codegen items, r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D9465
2018-10-24 20:11:01 -04:00
Nika Layzell 65b231b95c Bug 1500926 - Part 2: Support a test-only edgecase in Codegen.py, r=bzbarsky
When running tests, we can build a WebIDL environment with no interfaces
exposed on the primary global. Unfortunately, due to the perfecthash.py logic
not handling empty tables, this causes an assertion to be raised. 

We can work around this by generating some dummy code for that situation, as we
will never try to build it.

Differential Revision: https://phabricator.services.mozilla.com/D9407
2018-10-24 20:11:01 -04:00
Nika Layzell 23c990d165 Bug 1500926 - Part 1: Use a statically generated perfect hash in WebIDLGlobalNameHash, r=bzbarsky
This strategy allows us to dodge dynamic allocations in WebIDLGlobalNameHash.
This removes the Init() and Shutdown() methods, as well as Register. The
RegisterBindings.cpp file now only contains static data and one method
declaration for the WebIDLGlobalNameHash class.

This should also be faster by making the hashtable lookup infallible.

Differential Revision: https://phabricator.services.mozilla.com/D9406
2018-10-24 20:11:01 -04:00
Boris Zbarsky e8f0c35cc3 Bug 1501479. Add instrumentation to figure out why Document.prototype creation is failing. r=mccr8 2018-10-24 02:00:49 +02:00
Nika Layzell 4bf2b2ecb0 Bug 1489301 - Part 6: Remove references to 'System' from WebIDL.py, r=bzbarsky
'Exposed=System' is no longer used in any webidl files, so we can kill it.

Differential Revision: https://phabricator.services.mozilla.com/D9401
2018-10-23 16:03:52 -04:00
Daniel Varga 5255e1718f Backed out 6 changesets (bug 1489301) for Linting opt failure at /builds/worker/checkouts/gecko/dom/bindings/parser/WebIDL.py
Backed out changeset 1c0823540b44 (bug 1489301)
Backed out changeset 529524df76a6 (bug 1489301)
Backed out changeset f34bc8a40bec (bug 1489301)
Backed out changeset 168cf9cea716 (bug 1489301)
Backed out changeset 19ca10fa3772 (bug 1489301)
Backed out changeset ff8fb091198e (bug 1489301)
2018-10-23 03:49:00 +03:00
Nika Layzell b4cc020355 Bug 1489301 - Part 6: Remove references to 'System' from WebIDL.py, r=bzbarsky
'Exposed=System' is no longer used in any webidl files, so we can kill it.

Differential Revision: https://phabricator.services.mozilla.com/D9401
2018-10-22 20:17:14 -04:00
Boris Zbarsky 5ef7ee022c Bug 1132934. Make Web IDL bindings enforce that void methods they call (including setters) actually have void as a return type. r=smaug
MozReview-Commit-ID: 7kJ3CqB9fCN
2018-09-27 13:46:26 -04:00
Boris Zbarsky 17e28d0bbc Bug 1368949. Stop automatically giving dictionary-typed members of dictionaries a default value of null. r=qdot 2018-09-25 18:09:30 -04:00
Boris Zbarsky 4cdbc6f15a Backed out changeset 1b9fcdd5dd97 (bug 1368949) because more code got added that doesn't build with it. 2018-09-25 18:14:39 -04:00
Boris Zbarsky eac9eeafe2 Bug 1368949. Stop automatically giving dictionary-typed members of dictionaries a default value of null. r=qdot 2018-09-25 18:09:30 -04:00
Boris Zbarsky a6e3c61c96 Bug 1493849 part 2. Add instrumentation to nsIDocument::WrapObject to figure out why it fails sometimes. r=mccr8 2018-09-25 13:35:07 -04:00
Boris Zbarsky f1812532b6 Bug 1493849 part 1. Back out the instrumentation added in bug 1491313. r=mccr8 2018-09-25 13:34:59 -04:00
Andrew McCreight fee317ab0d Bug 1351501, part 2 - Preserve wrappers for non-nsISupports cycle collected weak map keys r=bzbarsky
A C++ object that is exposed to JS can have its reflector used as a
key in a weak map. Because a weak map does not keep its keys alive,
this means that the reflector can be discarded if it has no other
references aside from the C++ object, which will in turn remove its
weak map entry. If the C++ object can be accessed again later from JS,
it will get a new reflector which will have no weak map entry. This is
bad because it means some internal implementation detail has resulted
in data loss that is visible to JS. (Side note: this is also an issue
for cross compartment wrappers, which is handled by another
mechanism.)

To fix this, we can preserve the wrapper of any DOM reflector used as
a weak map key. This ensures that the reflector and its C++ object
have the same lifetime. If a WebIDL object is not wrapper cached, that
means that it cannot be accessed via C++, so we don't need to preserve
the wrapper. This is currently implemented for nsISupports classes,
but not other classes. For non-nsISupports classes, it would throw an
error rather than silently fail.

My patch adds support for non-nsISupports cycle collected objects. It
turns out that the existing addProperty hook just does wrapper
preservation, so we just call it for cycle collected classes. This
does mean that if addProperty changes in the future to do something
else, this code will need to be changed.

I verified that this test fails if TryPreserveWrapper is changed to do
nothing besides return true in the non-nsISuports case.

Depends on D6197

Differential Revision: https://phabricator.services.mozilla.com/D6198

--HG--
extra : moz-landing-system : lando
2018-09-21 18:20:35 +00:00
Boris Zbarsky 8e04fc97a0 Bug 1491313. Add some MOZ_CRASH instrumentation to help figure out why ClearDocumentDependentSlots hits its MOZ_CRASH case. r=mccr8
We need the isDOMClass() checks in the Compartment code to pass tests, because
some of the jsapi tests explicitly test those failure codepaths.  But not with
DOM objects, which is what we're interested in here.

Differential Revision: https://phabricator.services.mozilla.com/D6047

--HG--
extra : moz-landing-system : lando
2018-09-18 02:31:03 +00:00
Dorel Luca 0939a6b3fa Backed out changeset 9205d38f866c (bug 1491313) for causing crashtests to fail. CLOSED TREE 2018-09-17 23:19:52 +03:00
Boris Zbarsky 86444e4616 Bug 1491313. Add some MOZ_CRASH instrumentation to help figure out why ClearDocumentDependentSlots hits its MOZ_CRASH case. r=jandem,mccr8
We need the isDOMClass() checks in the Compartment code to pass tests, because
some of the jsapi tests explicitly test those failure codepaths.  But not with
DOM objects, which is what we're interested in here.

Differential Revision: https://phabricator.services.mozilla.com/D6047

--HG--
extra : moz-landing-system : lando
2018-09-17 18:57:08 +00:00
Jon Coppeard 2b37d7089c Bug 1481844 - Clear expando for objects with an ExpandoAndGeneration before wrapping r=bz a=abillings 2018-09-03 10:46:39 +01:00
Boris Zbarsky 4c0adfa061 Bug 1481927. Always pass an object from the "relevant global" to Web IDL APIs that have a non-wrapper-cached "this". r=bholley
Differential Revision: https://phabricator.services.mozilla.com/D4491

--HG--
extra : moz-landing-system : lando
2018-08-29 03:03:46 +00:00
Jon Coppeard 9005410bc5 Bug 1483487 - Add asertions around creating and retrieving DOM proxy expando objects r=peterv 2018-08-20 10:12:35 +01:00
Boris Zbarsky 4af64d8709 Bug 1479793. Throw when someone tries to define an accessor property with an integer name on a DOM proxy with an indexed setter. r=qdot,jorendorff
Differential Revision: https://phabricator.services.mozilla.com/D2571

--HG--
extra : moz-landing-system : lando
2018-08-10 17:04:58 +00:00
Jan de Mooij 4af62d6c9e Bug 1480678 part 7 - Use CallbackObject's callback global for realm entering in more places. r=bz 2018-08-07 14:06:44 +02:00
Jan de Mooij ff502e7cc6 Bug 1480678 part 4 - Use current global as conversion scope in the Xray case when wrapping the return value in generated bindings. r=bz 2018-08-04 15:30:40 +02:00
Boris Zbarsky f771d7e529 Bug 1477923. Make WebIDL callbacks store a global in addition to the object that's used as a callback. r=mccr8
We want to be able to enter the Realm we were in when the callback was created
before calling it, but if the callback stores a cross-compartment wrapper we
don't really have a good way to find that Realm.  So we store it explicitly by
storing a global when the callback is created.

The changes to the constructor signatures to use JSObject* instead of
JS::Handle<JSObject*> are so we can avoid having to root the global for these
calls.  These changes make two of the constructors ambiguous when nullptr is
being passed for the first arg; this patch adds casts to disambiguate.
2018-08-03 17:11:39 -04:00
Jan de Mooij 6e34ef61c4 Bug 1478955 part 4 - Use JSAutoRealm in Codegen.py in a few places. r=bz 2018-07-28 12:16:12 +02:00
Jan de Mooij 80adc67aba Bug 1478955 part 1 - Rename JSAutoRealm to JSAutoRealmAllowCCW. r=luke 2018-07-28 12:12:26 +02:00
Kris Maglione 72ae1375d1 Bug 1472342: Part 1 - Properly support iterator getters which need JSContexts. r=bz
The IterableIterator helper currently only supports iterator methods which
return types which are supported by ToJSValue, but do not need a JSContext* to
construct them. That means that getters which need to return native JS objects
or values can't do so safely, or without resorting to hacks.

This patch adds templated helpers which will call a JSContext-accepting,
JS::Value-returning version of the getter methods if they exist, and fall back
to the simpler versions if they don't.

MozReview-Commit-ID: hedZOc3lqR

--HG--
extra : rebase_source : b92cdc3900b3c9bee41836af4d4b9f4e65f3d5f6
2018-07-18 13:09:04 -07:00
Boris Zbarsky c4723dda1b Bug 1473492 part 3. Make the getThisObj argument of CGAbstractBindingMethod required. r=mccr8 2018-07-06 11:43:12 -07:00
Boris Zbarsky ba8705c5c6 Bug 1473492 part 1. Remove support for clearing cached attributes on JS-implemented webidl object. r=mccr8
This more or less backs out bug 963382.
2018-07-06 11:43:12 -07:00
Jan de Mooij 423f3c1384 Bug 1472973 part 1 - Use JS::GetNonCCWObjectGlobal in Codegen.py. r=bz 2018-07-06 18:16:23 +02:00
Dorel Luca f51c4fa5d9 Merge mozilla-inbound to mozilla-central. a=merge 2018-06-27 13:26:49 +03:00
Jean-Yves Avenard f6a7d4ea1a Bug 1471214 - Ensure that DictionaryBase copy constructor is called. r=bzbarsky
Such that a call to dictionary.IsAnyMemberPresent() will return the correct value.

Differential Revision: https://phabricator.services.mozilla.com/D1829
2018-06-26 21:56:45 +00:00
Jeff Gilbert 15f1932c0f Bug 1470325 - Update Codegen.py to emit Foo_Binding instead of FooBinding. - r=bz,qdot
MozReview-Commit-ID: CFIQpIRsXIU
2018-06-26 17:05:01 -07:00
Boris Zbarsky 8dfa5a596c Bug 1466221. Implement ToJSValue variants for non-refcounted (so owned) DOM objects. r=peterv 2018-06-09 01:03:15 -04:00
Jan de Mooij f7fb3be6ec Bug 1466121 part 1 - Rename JSCompartment to JS::Compartment. r=luke
--HG--
extra : rebase_source : cd7140ecda54f0caa02a96f562167b3c9a107450
2018-06-07 16:44:40 +02:00
Andreea Pavel 4ced6e8b2d Merge mozilla-central to autoland. a=merge 2018-06-03 07:27:01 +03:00
Boris Zbarsky a0ebf6e398 Bug 1465602 part 2. Fix the interaction of default toJSON with Func-controlled exposure that examines the object's global. r=qdot 2018-06-01 12:17:10 -04:00
Jan de Mooij b1ff59e919 Bug 1464374 part 3 - Use GetRealmPrincipals in generated bindings to get subject principal. r=bz 2018-05-31 11:28:49 +02:00
Jan de Mooij ce3eb7d5c0 Bug 1464374 part 2 - Pass JS::Realm* instead of JSCompartment* to CallSetup. r=bz,luke
The principals are on the realm so we need a realm instead of a compartment. Also adds js::GetNonCCWObjectRealm to get the realm of a non-CCW object.
2018-05-31 11:28:48 +02:00
Peter Van der Beken 0a2e4b8cb7 Bug 1146316 - Remove nsWrapperCache::SetIsNotDOMBinding and IsDOMBinding(). r=bz.
--HG--
extra : rebase_source : cd36e7afb4f6ebcd042ea40d9403546a683375ad
2018-04-05 17:22:41 +02:00
Markus Stange f49c17a909 Bug 1462784 - Add a DOM category and use it for the WebIDL binding stack labels. r=njn
MozReview-Commit-ID: AevGMqeBvXO

--HG--
extra : rebase_source : 001056270d8b2df8a7e88e523d1a9612913e27a8
2018-05-18 17:49:55 -04:00
Csoregi Natalia fc2ed6e92a Backed out 18 changesets (bug 1462784) for ESlint failure on FlameGraph.js:1297. CLOSED TREE
Backed out changeset 79556798ff9f (bug 1462784)
Backed out changeset 88321efb673b (bug 1462784)
Backed out changeset 7880f9dc7023 (bug 1462784)
Backed out changeset 71fe35fd1f7e (bug 1462784)
Backed out changeset a543b94b049a (bug 1462784)
Backed out changeset d1ca8b0f2221 (bug 1462784)
Backed out changeset 68eabfbf3c16 (bug 1462784)
Backed out changeset 34e71c789903 (bug 1462784)
Backed out changeset 6fe79d1ca1bd (bug 1462784)
Backed out changeset e5ad2e525ea9 (bug 1462784)
Backed out changeset 329645ff1e23 (bug 1462784)
Backed out changeset e09c38853172 (bug 1462784)
Backed out changeset 0663d1a6d2da (bug 1462784)
Backed out changeset 106967fc29d2 (bug 1462784)
Backed out changeset 99b4a433a8e5 (bug 1462784)
Backed out changeset 1d38a4cf5a4a (bug 1462784)
Backed out changeset 692017229de6 (bug 1462784)
Backed out changeset c2911a626671 (bug 1462784)
2018-06-01 23:42:00 +03:00
Markus Stange 1da5dfa148 Bug 1462784 - Add a DOM category and use it for the WebIDL binding stack labels. r=njn
MozReview-Commit-ID: AevGMqeBvXO

--HG--
extra : rebase_source : 463fd96712fb5b389fd67ce97a3de19f86d37558
2018-05-18 17:49:55 -04:00
Noemi Erli 1fd69fa2bc Backed out 18 changesets (bug 1462784) for failures in devtools/client/performance/test/unit/test_tree-model-08.js on a CLOSED TREE
Backed out changeset a74d36598442 (bug 1462784)
Backed out changeset c8192175f360 (bug 1462784)
Backed out changeset cde492240e99 (bug 1462784)
Backed out changeset 8c8d30fa406c (bug 1462784)
Backed out changeset ad3802ffb780 (bug 1462784)
Backed out changeset 2fe10732076c (bug 1462784)
Backed out changeset 268a72b7c3c4 (bug 1462784)
Backed out changeset 4055eb6c3bc6 (bug 1462784)
Backed out changeset 3901070e2e60 (bug 1462784)
Backed out changeset 2faf787fbbdf (bug 1462784)
Backed out changeset 8f06963c7c6f (bug 1462784)
Backed out changeset 036e6f64e224 (bug 1462784)
Backed out changeset e670f156a603 (bug 1462784)
Backed out changeset cd39588aece4 (bug 1462784)
Backed out changeset 2ac65d100fa2 (bug 1462784)
Backed out changeset ea05ff70a51d (bug 1462784)
Backed out changeset 8a06c0ba42f7 (bug 1462784)
Backed out changeset 52ed9a039ad2 (bug 1462784)
2018-06-01 01:06:29 +03:00
Noemi Erli 614b78ae36 Merge mozilla-central to autoland. a=merge CLOSED TREE 2018-06-01 00:58:09 +03:00
Markus Stange 916fd5a90a Bug 1462784 - Add a DOM category and use it for the WebIDL binding stack labels. r=njn
MozReview-Commit-ID: AevGMqeBvXO

--HG--
extra : rebase_source : 4a1bd948e65cbbd890ba53c363248c1ce69774a3
2018-05-18 17:49:55 -04:00
Boris Zbarsky fd520f957c Bug 1424160 part 2. Add infrastructure for defining @@toStringTag on Web IDL prototypes. r=qdot 2018-05-17 23:45:35 -04:00
Boris Zbarsky 1fb670215a Bug 1424160 part 1. Allow interfaces the have a different name for SpiderMonkey class name purposes. r=qdot
We want to have some class names with spaces in them, but everything assumes
that an interface identifier is in fact an identifier (e.g. uses it in C++
identifiers like namespace names).
2018-05-17 23:45:26 -04:00
Boris Zbarsky bbb35f3bbb Bug 1375829 part 5. Switch from using "jsonifier" syntax to the spec's "[Default] toJSON" syntax. r=qdot 2018-05-17 23:43:59 -04:00