Commit Graph

595770 Commits

Author SHA1 Message Date
Olli Pettay
20c34cefa0 Bug 1461278 - Print a note to the web console when a web site is using shadow DOM (v1), preffed off by default, r=emilio 2018-05-15 02:04:32 +03:00
Boris Zbarsky
1b656c34aa Bug 1455802. Get rid of web-visible XMLStyleSheetProcessingInstruction. r=peterv
MozReview-Commit-ID: GBumpNuvzZf
2018-05-14 18:54:16 -04:00
Brindusan Cristian
6e227ff5dc Backed out changeset 64c4562813fa (bug 1460101) for debug crashtest failures on crashtests/626014.xhtml 2018-05-15 01:45:09 +03:00
Steve Fink
d41b1026dc Bug 1460957 - Make shadow::Symbol to remove mayBeOwnedByOtherRuntimeSlow, r=jonco
--HG--
extra : topic : isperm
extra : rebase_source : 5b8dc0d2aa2ea29860d9a126a9624bca68f00041
2018-05-10 22:02:59 -07:00
Steve Fink
bb18c240a9 Bug 1460957 - Make inlineable isPermanentAtom, r=jonco
--HG--
extra : topic : isperm
extra : rebase_source : 246bc26a0f3d55c752e4f368680a490c9dcb0e16
2018-05-07 16:42:54 -07:00
Brindusan Cristian
9fc8262d75 Backed out 2 changesets (bug 1461299) for debug crashtest failures on crashtests/626014.xhtml CLOSED TREE
Backed out changeset 699e9816b7ff (bug 1461299)
Backed out changeset 48f01ac94137 (bug 1461299)
2018-05-15 01:31:13 +03:00
Nika Layzell
f3af8d0b90 Bug 1458043 - Part 2: Use native refcounting for Promises, r=bz 2018-05-14 17:55:58 -04:00
Nika Layzell
84d0194704 Bug 1458043 - Part 1: Stop converting promises to nsISupports in xpconnect, r=bz 2018-05-14 17:55:58 -04:00
Nika Layzell
3043db4105 Bug 1457972 - Part 10: Make sure to allocate ExtendedVal inline, r=froydnj 2018-05-14 17:55:57 -04:00
Nika Layzell
70dbf079a4 Bug 1457972 - Part 9: Allow passing invalid values to xpidl arrays for compat reasons, r=mccr8
This one sucks. I found out when running tests that we exploit some edge
case behaviour in our tests where passing an invalid value to an xpidl
array parameter will be passed as an empty array...

I figured that just respecting this behaviour for now is the easiest
approach, but we will probably want to fix it in the future.
2018-05-14 17:55:57 -04:00
Nika Layzell
656ad38909 Bug 1457972 - Part 8: Remove external consumers of XPCConvert::NativeArray2JS/JSArray2Native, r=mccr8
Current XPIDL native arrays currently also require a custom entry point. With
the new arraylen parameter we can handle them in JSData2Native/NativeData2JS. As
these methods are more complex and don't share logic with an existing codepath,
I keep them in external helper methods.
2018-05-14 17:55:57 -04:00
Nika Layzell
3efaead212 Bug 1457972 - Part 7: Eliminate XPCConvert::NativeStringWithSize2JS/JSStringWithSize2Native, r=mccr8
XPIDL supports explicitly sized string types. These types currently have to be
handled by a separate entry point into XPCConvert, and don't share any logic
with the implicitly sized string types.

If we just add an array length parameter to the basic JSData2Native and
NativeData2JS methods we can handle them in the same place as every other type.

This also allows us to share a lot of code with non-sized string types, which is
nice :-).
2018-05-14 17:55:56 -04:00
Nika Layzell
ca0a0c7f42 Bug 1457972 - Part 6: Ensure the extended types list has some basic types with known indexes, r=mccr8
Currently XPCVariant has some code for working with arrays of a series of basic
types. I want to unify and simplify code which works with nsXPTTypes to always
take the topmost level type (rather than passing in an array element type when
working with an array).

This is pretty easy for most of XPConnect, but XPCVariant occasionally needs to
perform calls on made-up array types, which isn't compatible with the current
implementation. Fortunately, it only needs a very small set of array types. This
patch adds a set of simple types (mostly the arithmetic types and
TD_INTERFACE_IS_TYPE for interfaces) to the extra types array unconditionally
with a known index, for XPCVariant.

An other option I was considering was to consider the value `0xff` in the data
byte on nsXPTType to be a flag which indicates that the array element type is
actually the type immediately following the current nsXPTType object in memory,
but that was incompatible with many of the existing nsXPTType consumers which
copy the nsXPTType objects around (e.g. onto the stack), rather than always
using them by reference, so I decided it was not a good approach to take.
2018-05-14 17:55:56 -04:00
Nika Layzell
e97495d7b3 Bug 1457972 - Part 5: Use modern JS APIs to root jsval temporaries in XPConnect, r=mccr8
When a jsval passed from JS code it needs to be stored in a nsXPTCVariant
object. This object is not rooted by default, as it is stored in some
C++-allocated memory. Currently, we root the values by adding a custom root
using the `js::AddRawValueRoot` API, which is deprecated, and only used by this
code and ErrorResult.

This also has the unfortunate effect that we cannot support XPCOM arrays of
jsvals, as we cannot root all of the values in the array using this API.

Fortunately, the JS engine has a better rooting API which we can use here
instead. I make the call context a custom rooter, like the SequenceRooter type
from WebIDL, and make sure to note every jsval when tracing, both in arrays and
as direct values.

This should allow us to avoid some hashtable operations with roots when
performing XPConnect calls, and remove a consumer of this gross legacy API.

In addition it allows us to support arrays. This will be even more useful in the
future when I add support for sequence<T> (which is a nsTArray<T>) to xpidl and
xpconnect.
2018-05-14 17:55:55 -04:00
Nika Layzell
e2240ec5a2 Bug 1457972 - Part 4: Remove dipper types, r=mccr8
In XPConnect, native values are passed around within nsXPTCMiniVariant objects.
an [nsXPTCMiniVariant] contains 64-bits of data in a union type.

nsXPTCMiniVariant values are created by the platform-specific glue code and
passed into XPConnect proper when calling from C++ into JS.

When calling from JS into C++, we instead create nsXPTCVariant objects and pass
them into the glue code. These objects have extra information in addition to the
nsXPTCMiniVariant: namely they also have a `type` field with the type stored in
the variant, space for flags, and a `ptr` field which is passed over IPC instead
of the inner nsXPTCMiniVariant when a flag (`PTR_IS_DATA`) is set.

The JSValue type in XPConnect is always passed as a pointer to a JSValue object,
both for in parameters and out parameters. This is handled by making the JSValue
type be unconditionally flagged as [`IsIndirect()`] This flag is also used for
all types of outparameters.

When the `IsIndirect()` flag is set, it means that the actual data is stored in
the nsXPTCVariant's val field, and it sets the flag to tell the glue code to
instead pass the `ptr` field (which is always pointing to the `val` field for
[legacy reasons]) into the C++ code.

In contrast "dipper" is a different and super weird flag. Currently only the
string class types (nsACString & nsAString) are marked as "dipper". A "dipper"
type is always passed as an "in" type (and thus always passed "directly"), even
when it's actually an out parameter.

XPConnect treats these types as though they are pointer types (nsAString*). This
means that there is no space in the nsXPTCVariant to store the actual nsAString
types when passing from JS into C++, so these values have to be allocated by a
different mechanism (in the current code, there is a size 2 buffer for each
string type in the context and once that buffer is exceeded, we heap allocate
the nsString values).

In effect, the current state looks something like this:
+------------+---------------------+---------------------+
| type       | out (xpt/native)    | in (xpt/native)     |
+------------+---------------------+---------------------+
| TD_INT32   | indirect (int32_t*) | direct (int32_t)    |
+------------+---------------------+---------------------+
| TD_JSVAL   | indirect (JSValue*) | indirect (JSValue*) |
+------------+---------------------+---------------------+
| TD_ASTRING | direct (nsAString*) | direct (nsAString*) |
+------------+---------------------+---------------------+

This patch ensures there is enough space in the nsXPTCVariant to fit the
nsString value, and switches string class types to being unconditionally
indirect instead of using the dipper system. This allows us to delete a ton of
dipper-specific code, and unify the indirect and string class codepaths.

This only affects the size of nsXPTCVariant objects, and does not affect
nsXPTCMiniVariant objects. nsXPTCVariant objects are never allocated by the
platform-specific binding code, rather, they are allocated in an AutoTArray on
the stack as part of the CallMethodHelper object.

The size increase is a total of 1 word, so 4 bytes in 32-bit builds, and 8 bytes
in 64-bit builds, which is ignorable for stack allocated objects.

[nsXPTCMiniVariant]: https://searchfox.org/mozilla-central/rev/eb6c5214a63e20a3fff455e92c876287a8d2e188/xpcom/reflect/xptcall/xptcall.h#20-47
[`IsIndirect()`]: https://searchfox.org/mozilla-central/rev/c0d81882c7941c4ff13a50603e37095cdab0d1ea/xpcom/reflect/xptinfo/xptinfo.h#371
[legacy reasons]: https://searchfox.org/mozilla-central/rev/eb6c5214a63e20a3fff455e92c876287a8d2e188/xpcom/reflect/xptcall/xptcall.h#66-79
2018-05-14 17:55:55 -04:00
Nika Layzell
8fd69eedbf Bug 1457972 - Part 3: Remove unnecessary #includes of xptinfo headers, r=mccr8
We are going to want to include some "gecko internal" types in more places in
the codebase, and we have unused includes of some of these headers in non-libxul
files.

This patch just cleans up these unnecssary includes.
2018-05-14 17:55:55 -04:00
Nika Layzell
f20e777cdb Bug 1457972 - Part 2: Remove unused code paths in xpconnect, r=mccr8
Thanks to the changes in the previous patch, we had some unused code which we
can get rid of. This patch just cleans stuff up a bit.
2018-05-14 17:55:54 -04:00
Nika Layzell
73efb8abf3 Bug 1457972 - Part 1: Unify xpconnect cleanup codepaths, r=mccr8
It used to be that in XPConnect there were many different pieces of code for
each place where we may need to clean up some untyped values based on their
nsXPTType information. This was a mess, and meant that every time you needed to
add a new data type you'd have to find every one of these places and add support
for your new type to them.

In fact, this was bad enough that it appears that I missed some places when
adding my webidl support! Which means that in some edge cases we may clean up
one of these values incorrectly D:!

This patch adds a new unified method which performs the cleanup by looking at a
nsXPTType object. The idea is that this function takes a void* which is actually
a T* where T is a value of the nsXPTType parmaeter. It clears the value behind
the pointer to a valid state such that free-ing the memory would not cause any
leaks. e.g. it free(...)s owned pointers and sets the pointer to `nullptr`, and
truncates nsA[C]String values such that they reference the static empty string.

I also modify every one of these custom cleanup codepaths to instead call into
this unified cleanup method.

This also involved some simplification of helper methods in order to make the
implementation cleaner.
2018-05-14 17:55:54 -04:00
Nika Layzell
2d188849ae Bug 1455217 - Part 3: Use the new xpidl Promise type instead of nsISupports, r=bz 2018-05-14 17:55:54 -04:00
Nika Layzell
9c090cb316 Bug 1455217 - Part 2: Add support for promises to XPCConvert, r=mccr8 2018-05-14 17:55:53 -04:00
Nika Layzell
c9d0fe3dd2 Bug 1455217 - Part 1: Add an explicit Promise type to xpidl, r=mccr8
This type is fairly simple on the idl parsing side of things. I handle it in the
same way that special types such as ns[C]String, nsid, and jsval are handled, by
using a special native type.

The logic for converting the value between C++ and JS follows the existing logic
from the nsISupports <=> JS Promise conversions.
2018-05-14 17:55:53 -04:00
Nika Layzell
e5e1512c1e Bug 1454568 - Support [infallible] on interfaces and domobjects in xpidl, r=froydnj 2018-05-14 17:55:53 -04:00
Narcis Beleuzu
d7f7ec03a3 Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-05-15 00:41:06 +03:00
Narcis Beleuzu
932adad93d Merge inbound to mozilla-central. a=merge 2018-05-15 00:36:35 +03:00
Emilio Cobos Álvarez
cf0ce82b71 Bug 1461299: Make ESM not point to unbound NAC in the hover / active chain. r=smaug
MozReview-Commit-ID: 8mL7Yv3TwQM
2018-05-14 21:55:09 +02:00
Emilio Cobos Álvarez
f4898626f9 Bug 1461299: Ensure the editor root node is marked as NAC even if BindToFrame fails. r=smaug
We do the following:

  CreateRootNode();
  nsresult rv = BindToFrame(this);
  NS_ENSURE_SUCCESS(rv, rv);
  aElements.AppendElement(mRootNode);

That means that if BindToFrame fails, mRootNode will never be appended to
aElements, and thus will never get the native anonymous bits in [1].

BindToFrame should assert, but it indeed can fail due to it being bound to a
different frame in print preview, because nsCSSFrameConstructor's
ReplicateFixedFrames is a massive hack. :(

Just ensure the NAC bit is properly set for now...

[1]: https://searchfox.org/mozilla-central/rev/a85db9e29eb3f022dbaf8b9a6390ecbacf51e7dd/layout/base/nsCSSFrameConstructor.cpp#4193

MozReview-Commit-ID: 6sE8iUk4PCG
2018-05-14 21:55:08 +02:00
Emilio Cobos Álvarez
eecbbcc8a7 Bug 1460101: Check whether the node is an element in the chain instead of ContentIsDescendantOf. r=smaug
We rely on :hover and :active being hierarchical, and on the fact that there are
only elements and documents in the flattened tree ancestor chain if the element
is in the composed doc.

MozReview-Commit-ID: LMQkidMe9wp
2018-05-14 21:55:07 +02:00
Aaron Klotz
bf395a240e Bug 1460996: Ensure the bootstrap process is always working with an argv[0] containing an absolute path (v2); r=mhowell 2018-05-14 11:40:08 -06:00
Noemi Erli
017a4c00fe Bug 1450864 - Disable on Linux for frequent failures in content-security-policy/navigate-to/child-navigates-parent-blocked.html. r=jmaher
--HG--
extra : rebase_source : 2f2c6c5b8ab1d105bd8b699678a6e96da5add6d9
2018-05-14 08:46:00 +03:00
Cosmin Sabou
d68095e2f5 Backed out changeset 513a4aafc42a (bug 1432921) for mochitest e-10s failures on test_address_form.html. CLOSED TREE
--HG--
extra : rebase_source : 918da9f12abd77bc4b4c0919ad79e40b8c667c5a
2018-05-14 21:23:07 +03:00
Michael Kaply
165c97e26c Bug 1461347 - Remove unused enginename from JS, but add to properties. r=nalexander
MozReview-Commit-ID: 4KRsXg68mw5

--HG--
extra : rebase_source : d797ab8b1fd98cb317ca592ab776fa84402c2b44
2018-05-14 10:38:20 -05:00
Adrian Wielgosik
c501e3beb0 Bug 1460940 - Clean up most remaining C++-side uses of nsIDOMDocument. r=bz
MozReview-Commit-ID: LKRnyDPNlle

--HG--
extra : rebase_source : a48b7c72a0f7ede38c91149a04d5de53987736f1
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
5c8a9e8239 Bug 1460940 - Remove nsIDOMDocument uses in uriloader/. r=bz
MozReview-Commit-ID: LnXwludmiAn

--HG--
extra : rebase_source : 7acfeda4eb85992d53f90a533ec2c638cefcdd0f
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
3309929466 Bug 1460940 - Remove nsIDOMDocument uses in toolkit/. r=bz
MozReview-Commit-ID: LJhw1bKsUkn

--HG--
extra : rebase_source : bb6f877f75ced11f33ae37d7d2e430e54d82517c
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
3a8ef6cf8a Bug 1460940 - Remove nsIDOMDocument uses in editor/. r=bz
MozReview-Commit-ID: 8doC9drkrG9

--HG--
extra : rebase_source : 24ac8ea960faff10b04ef0f419bc6dc7b6556452
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
af5b239997 Bug 1460940 - Remove nsIDOMDocument uses in netwerk/. r=bz
MozReview-Commit-ID: QkZ36LGoBx

--HG--
extra : rebase_source : 5aa83c576f269a6f33a1fb7ea7a61bd63a3c0c25
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
8a6d4efe5d Bug 1460940 - Remove nsIDOMDocument uses in widget/. r=bz
MozReview-Commit-ID: Rxvwm6zfrB

--HG--
extra : rebase_source : 0b76b09e0a9521af10b9900e33ff6b35abc289ff
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
f1457c6874 Bug 1460940 - Remove nsIDOMDocument uses in layout/. r=bz
MozReview-Commit-ID: KixJ5edlCjl

--HG--
extra : rebase_source : 677049bc7eb131dc86ed468eb8a6b06085f2c17d
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
7c753ae8e0 Bug 1460940 - Remove nsIDOMDocument uses in dom/xslt/. r=bz
MozReview-Commit-ID: Ap0TrNI9eqC

--HG--
extra : rebase_source : cce34c86acb40d5929314e7add1564e267e61440
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
aec99c32e5 Bug 1460940 - Remove nsIDOMDocument uses in accessible/. r=bz
MozReview-Commit-ID: LQ91rgrJIy

--HG--
extra : rebase_source : 143e2a3b8971aa1a4e604414c704d28deb1e5594
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
fff55359ea Bug 1460940 - Remove nsIDOMDocument uses in image/. r=bz
MozReview-Commit-ID: HUiegmeFLo4

--HG--
extra : rebase_source : cd6453dc5d708fc5cdc75114d163ea2389423d55
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
f5e05d1158 Bug 1460940 - Convert nsIDocumentEncoder to use nsIDocument. r=bz
MozReview-Commit-ID: 1Nla9DnwFiu

--HG--
extra : rebase_source : e019c8370f453c6794052e441dc76fc98d603510
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
074d88de5a Bug 1460940 - Convert nsIPrincipal to use nsIDocument. r=bz
MozReview-Commit-ID: z1TGWtS1KG

--HG--
extra : rebase_source : e5291c40eb017c1e3fd69333ac108dda852fb8cd
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
b3a78c6c93 Bug 1460940 - Convert nsSyncLoadService::LoadDocument to use nsIDocument. r=bz
MozReview-Commit-ID: LtFdEVXDvLw

--HG--
extra : rebase_source : 9fe20ccaa54525b8b10b6fbad74968a497929193
2018-05-11 19:46:15 +02:00
Adrian Wielgosik
4fca802957 Bug 1460940 - Convert NS_NewDOMDocument to use nsIDocument. r=bz
MozReview-Commit-ID: GoJ30YZGRhq

--HG--
extra : rebase_source : 0995705c2c31c1a779c22c8336482d4c7e89e319
2018-05-11 19:46:15 +02:00
Cosmin Sabou
836f777b8e Backed out changeset 513a4aafc42a (bug 1432921) for mochitest e-10s failures on test_address_form.html. CLOSED TREE 2018-05-14 21:23:07 +03:00
Michael Kaply
5ed851623e Bug 1461347 - Remove unused enginename from JS, but add to properties. r=nalexander
MozReview-Commit-ID: 4KRsXg68mw5

--HG--
extra : rebase_source : 66f30fe798bb589de1f458062447819642586344
2018-05-14 10:38:20 -05:00
Kristen Wright
5b0c2d18cb Bug 1460682 - nsSelectionStyle::mUnderlineStyle should be compared against NS_STYLE_TEXT_DECORATION_STYLE_NONE r=dbaron
Removed comparison to NS_STYLE_BORDER_STYLE_NONE and replaced with NS_STYLE_TEXT_DECORATION_STYLE_NONE

--HG--
extra : rebase_source : 559d47c0379229c169c5da75d38db6850ff3d60b
2018-05-10 10:55:47 -07:00
bobslept
705b29c214 Bug 1459111 - Rename ServoCSSParsingEnvironment to ParsingEnvironment. r=emilio
MozReview-Commit-ID: Jl5aoarH0aU
2018-05-14 20:20:20 +02:00
André Bargull
00643f1030 Bug 1461339 - Don't sparsify dense elements eagerly in NativeDefineProperty. r=jandem 2018-05-14 07:21:29 -07:00