Commit Graph

6911 Commits

Author SHA1 Message Date
shindli
3841c4f8cd Backed out 3 changesets (bug 1512655) for bustages in s/xpconnect/src/XPCComponents.cpp:2001 CLOSED TREE
Backed out changeset 2593c7d67f51 (bug 1512655)
Backed out changeset da21d7e91e19 (bug 1512655)
Backed out changeset ccb15a086148 (bug 1512655)
2018-12-18 14:55:53 +02:00
Jan de Mooij
76238bc575 Bug 1512655 part 3 - Fix assertion in Cu.permitCPOWsInScope and ensure test globals that use it are in a separate compartment. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D14780

--HG--
extra : moz-landing-system : lando
2018-12-18 00:31:08 +00:00
Jan de Mooij
a2a91d4831 Bug 1512655 part 2 - Assert Cu.setWantXrays is never called on system-principal scopes. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D14695

--HG--
extra : moz-landing-system : lando
2018-12-17 20:38:59 +00:00
Jan de Mooij
111454f4a4 Bug 1512655 part 1 - Move forcePermissiveCOWs from CompartmentPrivate to RealmPrivate. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D14694

--HG--
extra : moz-landing-system : lando
2018-12-17 20:38:11 +00:00
Kris Maglione
3e8d266e8a Bug 1513366: Part 1 - Add do_ImportModule helper for importing JS modules. r=mccr8
This helper makes it considerably easier for C++ code to import a JS module
and wrap it in an appropriately-defined XPIDL interface for its exports.
Typical usage is something like:

Foo.jsm:

  var EXPORTED_SYMBOLS = ["foo"];

  function foo(bar) {
    return bar.toString();
  }

mozIFoo.idl:

  interface mozIFoo : nsISupports {
    AString foo(double meh);
  }

Thing.cpp:

  nsCOMPtr<mozIFoo> foo = do_ImportModule(
    "resource://meh/Foo.jsm");

  MOZ_TRY(foo->Foo(42));

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

--HG--
extra : rebase_source : 4d518205b173fc210908235b42ddace590e6b7e5
2018-12-11 13:28:20 -08:00
Jan de Mooij
a87026ec12 Bug 1512029 part 2 - Some CompartmentPrivate changes for same-compartment realms. r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D14253

--HG--
extra : moz-landing-system : lando
2018-12-16 14:59:50 +00:00
Jan de Mooij
cccc414b7a Bug 1512029 part 1 - Stop calling JS_GetCompartmentPrincipals for system compartments. r=bzbarsky
Because it release-asserts the compartment has a single realm.

I also renamed JS_GetCompartmentPrincipals to JS_DeprecatedGetCompartmentPrincipals
to discourage people from using it.

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

--HG--
extra : moz-landing-system : lando
2018-12-16 14:59:46 +00:00
Boris Zbarsky
771d1e342c Bug 1514261. Skip messing around with compartments in FunctionForwarder if the forwarder is already same-compartment with the underlying callee. r=bholley 2018-12-16 00:13:53 -05:00
Steve Fink
10953d54c2 Bug 1513108 - Remove the separate class extension hook for getting a weakmap key delegate, r=jonco
Replace with just unwrapping the key, since there are no users that return anything else for a delegate.

--HG--
extra : rebase_source : e72b825121ca3493364c9347f65e5dddd1ef53e0
2018-12-07 14:38:01 -08:00
Yoshi Cheng-Hao Huang
ad67f7c11b Bug 1475896 - Add telemetry for GC marking rate. r=jonco, data-review=chutten 2018-12-14 17:10:10 +01:00
Jon Coppeard
6f81506124 Bug 1463462 - Make gray marking assertions call a JSAPI function r=sfink 2018-12-06 16:28:10 -05:00
Cameron Kaiser
93af8a88e6 Bug 1512162: Followup: narrow non-stack-protected window for XPConnect on ppc64le. r=bhollley 2018-12-13 09:14:53 -08:00
André Bargull
03b1b37a9f Bug 1435829 - Part 5: Update xray tests for RegExp.prototype. r=peterv 2018-12-13 08:18:45 -08:00
Cameron Kaiser
fd32b3a6fa Bug 1512162: Disable stack protection for a portion of XPConnect on ppc64le due to a compiler bug. r=bholley 2018-12-12 18:52:08 -08:00
Jan de Mooij
eee34e39b3 Bug 1513277 part 2 - Use the scripted caller's global in mozJSComponentLoader::FindTargetObject. r=kmag
We have a few places where C++ calls ChromeUtils::Import directly.
I fixed these to pass the target object directly instead of an empty Optional<>.

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

--HG--
extra : moz-landing-system : lando
2018-12-12 21:30:04 +00:00
Jan de Mooij
0326f72625 Bug 1513277 part 1 - Use the scripted caller's global in Cu.importGlobalProperties. r=kmag
With same-compartment-realms enabled we can call a cross-realm Cu.importGlobalProperties
and we ended up defining properties on the wrong global.

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

--HG--
extra : moz-landing-system : lando
2018-12-12 21:03:18 +00:00
Jan de Mooij
ad8a2a6f1e Bug 1512396 - Stop using exclusive expandos for xrays in system-principal sandboxes. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D14250

--HG--
extra : moz-landing-system : lando
2018-12-12 20:16:56 +00:00
Jan de Mooij
b8a316aca4 Bug 1512260 - Make wrapper nuking work with a target realm instead of target compartment. r=kmag
For *incoming* wrappers this preserves behavior. We nuke *outgoing* wrappers
when all realms in the compartment have been nuked. To implement this I moved
the wasNuked flag from XPConnect to JS::Compartment as nukedOutgoingWrappers and
to JS::Realm as nukedIncomingWrappers.

The code to create a dead wrapper in the nuked compartment/realm case was also
moved into the JS engine. I added a shell test for it.

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

--HG--
extra : moz-landing-system : lando
2018-12-12 08:02:30 +00:00
Ciure Andrei
12adcc1edd Backed out changeset a8dd01db9f92 (bug 1512260) requsted by owner (missing test) CLOSED TREE 2018-12-12 09:14:53 +02:00
Jan de Mooij
89da963b10 Bug 1512260 - Make wrapper nuking work with a target realm instead of target compartment. r=kmag
For *incoming* wrappers this preserves behavior. We nuke *outgoing* wrappers
when all realms in the compartment have been nuked. To implement this I moved
the wasNuked flag from XPConnect to JS::Compartment as nukedOutgoingWrappers and
to JS::Realm as nukedIncomingWrappers.

The code to create a dead wrapper in the nuked compartment/realm case was also
moved into the JS engine. I added a shell test for it.

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

--HG--
extra : moz-landing-system : lando
2018-12-12 06:39:38 +00:00
Jeff Walden
da31bae9c2 Bug 1492937 - Make mozIJSSubScriptLoader.loadSubScriptWithOptions interpret script data only as UTF-8, without any way to use another charset. r=kmag
--HG--
extra : rebase_source : ffcc1599cf68c007f875c99f20660961a447e966
2018-12-08 18:14:27 -05:00
Jeff Walden
e5132ffa4b Bug 1492932 - Load JS components and modules as UTF-8, not as Latin-1. r=kmag
--HG--
extra : rebase_source : d09627655e9c72e674356e996f936ec65a80b6f0
2018-12-04 17:01:06 -05:00
Jan de Mooij
b9ac626c2a Bug 1512718 - Do a realm check instead of compartment check in mozJSSubScriptLoader::DoLoadSubScriptWithOptions. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D13996

--HG--
extra : moz-landing-system : lando
2018-12-08 16:35:06 +00:00
Rob Wu
7d113fddff Bug 1504660 - Implement Xrays for instanceof r=bholley
Ensure that "a instanceof b" has Xray semantics, i.e. that when b is a
XrayWrapper, that the wrapped object's getters, `Symbol.hasInstance`
hook and proxy traps are not triggered.

The toolkit/components/mozintl/test/test_mozintlhelper.js test was
updated to explicitly waive Xrays, instead of relying on the previous
behavior where Xrays were automatically waived.

Depends on D11591

Depends on D11591

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

--HG--
extra : moz-landing-system : lando
2018-12-02 22:21:51 +00:00
Tooru Fujisawa
7983faeb5d Bug 1511393 - Use c-basic-offset: 2 in Emacs mode line for C/C++ code. r=nbp 2018-12-01 04:52:05 +09:00
Benjamin Bouvier
a7f1d173a0 Bug 1511383: Update vim modelines after clang-format; r=sylvestre
- modify line wrap up to 80 chars; (tw=80)
- modify size of tab to 2 chars everywhere; (sts=2, sw=2)

--HG--
extra : rebase_source : 7eedce0311b340c9a5a1265dc42d3121cc0f32a0
extra : amend_source : 9cb4ffdd5005f5c4c14172390dd00b04b2066cd7
2018-11-30 16:39:55 +01:00
Sylvestre Ledru
265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Coroiu Cristina
b8bc09a5b5 Merge mozilla-central to inbound a=merge on a CLOSED TREE
--HG--
rename : python/mozrelease/test/data/Firefox-62.0b11.update.json => python/mozrelease/test/data/Firefox-64.0b13.update.json
extra : rebase_source : 6eb078869182f40343e201993c0d0442ed96ad46
2018-11-29 00:34:07 +02:00
Ehsan Akhgari
ca162bee20 Bug 1508472 - Part 4: Fourth batch of comment fix-ups in preparation for the tree reformat r=sylvestre
This is a best effort attempt at ensuring that the adverse impact of
reformatting the entire tree over the comments would be minimal.  I've used a
combination of strategies including disabling of formatting, some manual
formatting and some changes to formatting to work around some clang-format
limitations.

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

--HG--
extra : moz-landing-system : lando
2018-11-28 09:16:55 +00:00
Ehsan Akhgari
0ad55ab74f Bug 1510513 - Retain the formatting of MOZ_DEFINE_ENUM_* macros r=sylvestre
These macros tend to be handled quite poorly since the clang-format
tokenizer cannot figure out how to handle them.

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

--HG--
extra : moz-landing-system : lando
2018-11-28 09:14:19 +00:00
Jeff Walden
3093d025b8 Bug 1510012 - Move Symbol-related APIs out of jsapi.h into js/public/Symbol.h. r=sfink, r=mccr8 for the bindings change
--HG--
extra : rebase_source : 3a8d2d694052435fbc47b9131a521e31e9b0ea6f
2018-11-24 12:21:40 -08:00
Jeff Walden
af9a670e28 Bug 1510007 - Move JSFreeOp's definition to js/public/MemoryFunctions.h, and make jsapi.h not #include that header. r=sfink
--HG--
extra : rebase_source : 4d6debefd66b89647df53c104b8560ba2de68abd
2018-11-21 18:11:15 -08:00
Jon Coppeard
80b612aeb7 Bug 1508102 - Take account of XPCWrappedJS::mJSObjGlobal in cycle collector methods r=mccr8 a=abillings 2018-11-28 17:29:19 +00:00
Gabriele Svelto
566f669d07 Bug 1509450 - Remove unnecessary inclusions of ContentParent.h and ContentChild.h r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D12728

--HG--
extra : moz-landing-system : lando
2018-11-26 14:49:44 +00:00
Tooru Fujisawa
3393c83db7 Bug 1505511 - Part 3: Support WeakMap and WeakSet in Xray. r=bholley 2018-11-20 20:21:32 +09:00
Boris Zbarsky
64ae41821b Bug 1507540 part 6. Make nsIVariant's "type" a notxpcom attribute. r=froydnj 2018-11-19 20:20:05 -05:00
Timothy Guan-tin Chien
a56c6e8e81 Bug 1508147 - Re-remove unused CompartmentPrivate::isAddonCompartment, r=bholley
It was removed in bug 1478275, but re-introduced because of a false rebase in bug 1431255.

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

--HG--
extra : moz-landing-system : lando
2018-11-19 18:46:57 +00:00
Nika Layzell
589d2a7b6f Bug 1477432 - Part 10: Stop using nsIJSID in nsIArray for optional IID parameters, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D9732
2018-11-16 17:27:46 -05:00
Nika Layzell
11b083d72c Bug 1477432 - Part 9: Switch to using plain JS objects for nsIJS[IC]ID, r=mccr8
This is a complete rewrite of the interface while maintaining the same APIs.
Each ID is fully-contained within a single object, does not require a finalizer,
and is cheap to create.

Beyond using reserved slots, this code avoids using custom ClassOps, instead
preferring Symbol.hasInstance and eager constants.

One major change which occurred in this patch was the move from storing a nsCID
to storing the ContractID for JSCID objects. This eliminates the need for the
'refreshCID' method, and hopefully shouldn't have performance implications.

If we discover that there are performance problems there, we can look into
stashing the CID, and re-introduce 'refreshCID', despite its surprising
behaviour.

Differential Revision: https://phabricator.services.mozilla.com/D2286
2018-11-16 17:27:44 -05:00
Nika Layzell
d2f648498e Bug 1477432 - Part 8: Remove test-only Components.classesById and Components.interfacesById, r=mccr8
These two interfaces are effectively never used, so to avoid needing to support
ClassID2JSValue with the new implementation, I remove them entirely.

Differential Revision: https://phabricator.services.mozilla.com/D2285
2018-11-16 17:27:42 -05:00
Nika Layzell
738dd3f1a9 Bug 1477432 - Part 7: Stop using nsIJSID in xpconnect outside of XPCJSID.cpp, r=mccr8
This mostly consists of changes to the XPCComponents objects to avoid using the
implementation details, and instead use the API defined in part 1.

Differential Revision: https://phabricator.services.mozilla.com/D2284
2018-11-16 17:27:41 -05:00
Nika Layzell
7954235168 Bug 1477432 - Part 5: Add a refreshCID method to JSCID objects, r=mccr8
This lets us get rid of the method 'initalize', which currently needs the
internal representation of JSCID.

This particular method is removed entirely in Part 9, and only exists to keep
intermediate states building & running.

Differential Revision: https://phabricator.services.mozilla.com/D2282
2018-11-16 17:27:37 -05:00
Nika Layzell
a3dbdf2c54 Bug 1477432 - Part 4: Remove the nsJSID XPCOM constructor, r=mccr8
Nobody was using it, so it's pretty easy to remove.

Differential Revision: https://phabricator.services.mozilla.com/D2281
2018-11-16 17:27:35 -05:00
Nika Layzell
a3a4d67877 Bug 1477432 - Part 3: Avoid using nsIJSID in Components.Constructor, r=mccr8
This should be mostly compatible with the original implementation. I tried to
simplify things here to just directly wrap and use JS objects, calling methods
on them. This eliminates the nsXPCConstructor type completely, replacing it with
a JSNative constructor with predefined READONLY | PERMANENT properties.

Differential Revision: https://phabricator.services.mozilla.com/D2280
2018-11-16 17:27:33 -05:00
Nika Layzell
fe2f2478f7 Bug 1477432 - Part 2: Avoid using nsIJSID in GenerateQI, and produce better diagnostics, r=kmag
This is the first part of hiding the implementation of nsIJSID behind the
interface added in Part 1, such that we can substitute that implementation out.

I had to make a couple of changes to fix the errors caused by the new behaviour
in GenerateQI.

Differential Revision: https://phabricator.services.mozilla.com/D2279
2018-11-16 17:27:31 -05:00
Nika Layzell
e3d63382ee Bug 1477432 - Part 1: Move xpc_ nsJSID methods to a future-proof API, r=mccr8
The new API tries to be more generic, taking and producing JS::Values. It also
supports creating the more specialized IID and CID types.

Differential Revision: https://phabricator.services.mozilla.com/D2278
2018-11-16 17:27:29 -05:00
Andrea Marchesini
c0950f9d8a Bug 1480544 - Allow Console API to log messages on stdout, r=bgrins
This patch introduces 2 new prefs:
- devtools.console.stdout.chrome: if true, console API writes on stdout when
                                  used by chrome code
- devtools.console.stdout.content: console API write on stdout when used by
                                   content code.
2018-11-15 21:47:58 +01:00
Rob Wu
1e7066abb9 Bug 1506861 - Stop accessing Proxy.prototype in XrayWrapper r=bholley
Differential Revision: https://phabricator.services.mozilla.com/D11771

--HG--
extra : moz-landing-system : lando
2018-11-15 01:35:59 +00:00
Jeff Walden
7dd0d06d8c Bug 1485800 - Rename SourceBufferHolder to SourceText, and add a <typename Unit> template parameter to it so it can hold putative UTF-8 or UTF-16 source text. r=tcampbell, r=fitzgen
--HG--
rename : js/public/SourceBufferHolder.h => js/public/SourceText.h
extra : rebase_source : 34df669c2481eaccd6845f53c5ecf656b636f895
2018-11-08 18:42:48 -08:00
Jeff Walden
f2196f8c8f Bug 1503086 - Initialize all SourceBufferHolders with a fallible function that in all cases assumes ownership of given-ownership data. r=tcampbell, r=bz, r=mrbkap on some finicky worker code lightly touched here
--HG--
extra : rebase_source : 94b1a13dc03a7f1a5d07a2c665fdc0cde162d411
2018-10-23 12:27:16 -07:00