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

512 Коммитов

Автор SHA1 Сообщение Дата
Ricky Stewart 933b3522b8 Bug 1633156 - Don't emit cached table files from ply r=glandium
`ply`, [by design](https://github.com/dabeaz/ply/issues/79), does not produce reproducible table files; hence bug 1633156. (Note that this was *always* true, but only became a problem once we switched to Python 3, which has more unpredictable dict iteration order than Python 2.7, at least prior to [3.7](https://docs.python.org/3/whatsnew/3.7.html#summary-release-highlights).)

In any other circumstance I would consider submitting a patch to `ply` to fix this, but as of the [in-progress version 4.0 of the library](https://github.com/dabeaz/ply/blob/master/CHANGES), it doesn't even emit this cached data any more, and indeed the [latest version of the code](1fac9fed64/ply) doesn't even call `open()` at all except to do logging or to read the text data to be parsed from `stdin`. So if we were going to pin our future on `ply` and upgrade to later versions of the library in the future, we would have to live in a world where `ply` doesn't generate cached table files for us anyway.

Emitting the cached table files so later build steps can consume them is an "optimization", but it's not clear exactly how much actual value that optimization provides overall. Quoth the `CHANGES` file from that repository:

```
PLY no longer writes cached table files.  Honestly, the use of
the cached files made more sense when I was developing PLY on
my 200Mhz PC in 2001. It's not as much as an issue now. For small
to medium sized grammars, PLY should be almost instantaneous.
```

In practice, I have found this to be true; namely, `./mach build pre-export export` takes just about as long on my machine after this patch as it did before, and in a try push I performed, there's no noticeable performance regression from applying this patch. In local testing I also found that generating the LALR tables in calls to `yacc()` takes about 0.01s on my machine generally, and we generate these tables a couple dozen times total over the course of the `export` tier now. This isn't *nothing*, but in my opinion it's also not nearly long enough where it would be a concern given how long `export` already takes.

That `CHANGES` file also stresses that if caching this data is important, we have the option of doing so via `pickle`. If and when we decide that re-enabling this optimization is valuable for us, we should take control of this process and perform the generation in such a way that we can guarantee reproducibility.

Differential Revision: https://phabricator.services.mozilla.com/D73484
2020-05-07 00:39:28 +00:00
Tom Schuster f77a3af47a Bug 1277799 - Define @@toStringTag on all DOM interface prototype objects. r=peterv
Instead of manually defining toStringTag we now add the toStringTag symbol to the list of properties.
This is also how we usually define toStringTag in the JS engine.
Even though this changes more code I like this approach better. Everything is centralized in the generated bindings file.

Differential Revision: https://phabricator.services.mozilla.com/D72179
2020-05-05 17:54:51 +00:00
Ricky Stewart 38f4d8fa39 Bug 1621361 - Convert webidl to py3_action r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D71803
2020-04-24 16:17:26 +00:00
Nika Layzell 1840f4505c Bug 1630361 - Remove [NeedsWindowsUndef] attribute from webidl, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D69450
2020-04-16 23:40:57 +00:00
Bogdan Tara 40fdcf8307 Backed out 2 changesets (bug 1621726) for web platform test failures CLOSED TREE
Backed out changeset ebe18133a194 (bug 1621726)
Backed out changeset c43c38de33b2 (bug 1621726)
2020-04-06 22:03:02 +03:00
Nika Layzell 0113f6578d Bug 1621726 - Part 2: Remove [NeedsWindowsUndef] attribute from webidl, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D69450

--HG--
extra : moz-landing-system : lando
2020-04-06 15:06:32 +00:00
Anthony Ramine bb80ccaa01 Bug 1623061 - Fix a couple of syntax mistakes in WebIDL.py; r=sylvestre
Differential Revision: https://phabricator.services.mozilla.com/D67145

--HG--
extra : moz-landing-system : lando
2020-03-17 13:36:10 +00:00
Boris Zbarsky 793a22384c Bug 1618011 part 9. Make error reporting for unions nicer. r=peterv
Instead of something like
"ByteStringSequenceSequenceOrByteStringByteStringRecord" we should have
"(sequence<sequence<ByteString>> or record<ByteString, Bytestring>)" in error
messages.

Please take a careful look at the resulting error messages (see attachment
in the bug) to see whether this makes sense.

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

--HG--
extra : moz-landing-system : lando
2020-03-06 23:07:17 +00:00
Arthur Iakab 14247fb057 Backed out 11 changesets (bug 1618011)for Linting failure.
CLOSED TREE

Backed out changeset 8b11ddd8999f (bug 1618011)
Backed out changeset 11df2f359473 (bug 1618011)
Backed out changeset c50121035d50 (bug 1618011)
Backed out changeset 8b8c4c60c34b (bug 1618011)
Backed out changeset b01f8c66110b (bug 1618011)
Backed out changeset 433fdf04058c (bug 1618011)
Backed out changeset 29a9227d08ac (bug 1618011)
Backed out changeset b2dfa2e66d24 (bug 1618011)
Backed out changeset 85650ee945c4 (bug 1618011)
Backed out changeset 278a213e5304 (bug 1618011)
Backed out changeset 9119aeb72ea4 (bug 1618011)
2020-03-07 00:15:57 +02:00
Boris Zbarsky 7eef692e9d Bug 1618011 part 9. Make error reporting for unions nicer. r=peterv
Instead of something like
"ByteStringSequenceSequenceOrByteStringByteStringRecord" we should have
"(sequence<sequence<ByteString>> or record<ByteString, Bytestring>)" in error
messages.

Please take a careful look at the resulting error messages (see attachment
in the bug) to see whether this makes sense.

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

--HG--
extra : moz-landing-system : lando
2020-03-06 20:39:43 +00:00
Boris Zbarsky c9e8a8042b Bug 1611509 part 3. Remove the Date type from Web IDL. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D61054

--HG--
extra : moz-landing-system : lando
2020-01-27 08:50:35 +00:00
Edgar Chen 57d1c9d779 Bug 1575425 - Part 3: Add support for [AllowShared]; r=bzbarsky,jwalden
Differential Revision: https://phabricator.services.mozilla.com/D59999

--HG--
extra : moz-landing-system : lando
2020-01-23 14:18:53 +00:00
Edgar Chen 1ff24dddf7 Bug 1575425 - Part 1: Remove SharedArrayBuffer type in WebIDL parser; r=bzbarsky
There is no SharedArrayBuffer type defined in WebIDL spec.

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

--HG--
extra : moz-landing-system : lando
2020-01-22 13:03:41 +00:00
Emilio Cobos Álvarez b58f2e72e8 Bug 1449861 - Add UTF8String to the WebIDL parser. r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D58628

--HG--
extra : moz-landing-system : lando
2020-01-04 10:35:21 +00:00
nordzilla 869949428a Bug 1604340 - Allow [Pref] for WebIDL constructor r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D57723

--HG--
extra : moz-landing-system : lando
2019-12-21 00:46:20 +00:00
Edgar Chen b1c69ce2d9 Bug 1603461 - Add support for extended attributes on nullable types; r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D56954

--HG--
extra : moz-landing-system : lando
2019-12-17 09:29:35 +00:00
Oana Pop Rus 5f3c83c29f Backed out changeset f911e3de6e53 (bug 1603461) for eslint in test_attributes_on_types.html on a CLOSED TREE 2019-12-17 00:39:02 +02:00
Edgar Chen 88a6fd3ca7 Bug 1603461 - Add support for extended attributes on nullable types; r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D56954

--HG--
extra : moz-landing-system : lando
2019-12-16 16:07:52 +00:00
Edgar Chen 12f24b3f73 Bug 1603615 - [Clamp] and [EnforceRange] should only appear on integer types; r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D57018

--HG--
extra : moz-landing-system : lando
2019-12-14 04:40:14 +00:00
Edgar Chen 9a7e35c0ce Bug 1594614 - Remove isExposedOnMainThread from IDLExposureMixins; r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D52118

--HG--
extra : moz-landing-system : lando
2019-11-07 02:01:18 +00:00
Boris Zbarsky d867da8312 Bug 1588194 part 2. Add missing property use counters to Window. r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D49045

--HG--
extra : moz-landing-system : lando
2019-10-29 16:20:49 +00:00
Boris Zbarsky d36e5a4ea5 Bug 1214364 part 4. Only output full-featured Init methods for dictionaries that need them. r=peterv
Dictionaries that we never initialize with JS values don't need a full-featured
Init() method.  Instead, we output a cut-down Init() method that doesn't even
take a JSContext and Value as argument, and skips as much work as it can.  It
uses constant-false for "is the value present?", but also, to avoid compilation
errors due to use of `cx` and `val` in now-dead conversion code, it tells the
native-to-JS conversion machinery that the value is always missing, which lets
it skip most of the the work it would normally try to do and just output
initialization to the default value.  We only need to do this for members that
have default values; the others either remain no-passed or are required members
with no default-initialization behavior.

This saves about 330KB of codesize on Linux64 without PGO and 285KB with PGO.

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

--HG--
extra : moz-landing-system : lando
2019-10-28 20:24:31 +00:00
Boris Zbarsky 0d2e9ff1f1 Bug 1214364 part 3. Only output ToObjectInternal methods for dictionaries that need it. r=peterv
This saves about 270KB of codesize on Linux64 without LTO, or 20KB with LTO.

The basic idea is that we can flag dictionaries that need to-JS conversion
(hence ToObjectInternal) based on various IDL uses (return value in normal
interface, argument in callback, etc) and then annotate the ones that are
converted to JS manually in C++ code.

The mozwebidlcodegen changes are needed because non-local changes (e.g. whether
a dictionary is used as a return value somewhere) can now affect the code
generation for a dictionary and hence whether the relevant binding file should
be regenerated.  Since these changes can happen in any .webidl file, we need to
check for them.  We can't track this via the dependency set on the dictionary
itself, because that would not notice new uses being added.

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

--HG--
extra : moz-landing-system : lando
2019-10-28 23:20:11 +00:00
Boris Zbarsky 3a2aa6f9b1 Bug 1214364 part 1. Only output conversions to/from JSON for dictionaries that need it. r=peterv
This saves about 200KB of codesize on Linux64 without LTO.  No effect with LTO,
but is needed for the following patches to work.

Very few dictionaries need these conversions, so explicit opt-in is fine.

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

--HG--
extra : moz-landing-system : lando
2019-10-23 15:58:29 +00:00
Kagami Sascha Rosylight 8ae1d6eba9 Bug 1591849 - Support [Pure] for stringifier attributes r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D50795

--HG--
extra : moz-landing-system : lando
2019-10-28 20:39:09 +00:00
Kagami Sascha Rosylight e30a6dbb4a Bug 824857: Support IDL stringifier attributes r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D48355

--HG--
extra : moz-landing-system : lando
2019-10-23 04:55:54 +00:00
Boris Zbarsky e68130b666 Bug 1587819. Convert [HTMLConstructor] to being an extended attribute on constructor operations. r=edgar
The changes to the IDL files were done by running this in dom/webidl:

  perl -pi -e 'BEGIN { $/ = undef; } s/\[HTMLConstructor,\n Exposed=Window\]\ninterface ([A-Za-z]+) : HTMLElement \{/[Exposed=Window]\ninterface \1 : HTMLElement {\n  [HTMLConstructor] constructor();\n/g' *.webidl

and then fixing any remaining parser failures.  That involved hand-editing the
following files:

  TestCodeGen.webidl
  XULFrameElement.webidl
  XULMenuElement.webidl
  XULTextElement.webidl
  XULTreeElement.webidl
  HTMLAudioElement.webidl
  HTMLDialogElement.webidl
  HTMLElement.webidl
  HTMLEmbedElement.webidl
  HTMLFormElement.webidl
  HTMLImageElement.webidl
  HTMLObjectElement.webidl
  HTMLOptionElement.webidl
  HTMLSlotElement.webidl
  HTMLVideoElement.webidl
  XULElement.webidl
  XULPopupElement.webidl

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

--HG--
extra : moz-landing-system : lando
2019-10-17 15:38:39 +00:00
Boris Zbarsky 6a8f96bfba Bug 1588845. Update Other and ArgumentNameKeyword productions in Web IDL parser to spec changes. r=edgar
See https://github.com/heycam/webidl/issues/813

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

--HG--
extra : moz-landing-system : lando
2019-10-16 09:52:39 +00:00
Boris Zbarsky 5f2a4a2274 Bug 1584630. Implement missing property use counters for HTMLDocument. r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D47504

--HG--
extra : moz-landing-system : lando
2019-10-11 16:56:36 +00:00
Boris Zbarsky e5497b955e Bug 1423562 part 3. Remove [PrimaryGlobal] and require explicit [Exposed] annotations on everything. r=edgar
For review purposes, the important changes are in dom/bindings/Configuration.py
and dom/bindings/parser.

The changes to the IDL files were done by running these in dom/webidl
and dom/bindings/test:

  perl -pi -e 's/^interface ([A-Za-z0-9_]+)($| [:{])/[Exposed=Window]\ninterface \1\2/' *.webidl

  perl -pi -e 'BEGIN { $/ = undef; } s/\[HTMLConstructor\]\n\[Exposed=Window\]/[HTMLConstructor,\n Exposed=Window]/g' *.webidl

  perl -pi -e 'BEGIN { $/ = undef; } s/\[NoInterfaceObject\]\n\[Exposed=Window\]/[NoInterfaceObject,\n Exposed=Window]/g' *.webidl

  perl -pi -e 'BEGIN { $/ = undef; } s/\[ChromeOnly\]\n\[Exposed=Window\]/[ChromeOnly,\n Exposed=Window]/g' *.webidl

And running this in dom/chrome-webidl:

  perl -pi -e 'BEGIN { $/ = undef; } s/\[ChromeOnly\]\ninterface/[ChromeOnly, Exposed=Window]\ninterface/g' *.webidl

and then fixing all the resulting parser failures.  I then verified that the
generated code is the same as before this change.

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

--HG--
extra : moz-landing-system : lando
2019-09-27 15:26:14 +00:00
Boris Zbarsky 29f544b623 Bug 1423562 part 2. Change external interfaces to not have exposure sets. r=edgar
This avoids us needing to stick [Exposed=Window] on all of them.

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

--HG--
extra : moz-landing-system : lando
2019-09-26 14:35:58 +00:00
Boris Zbarsky 3b969978f5 Bug 1423562 part 1. Change Configuration.getDescriptors to never return external interface descriptors. r=edgar
There are no callers who want this.  They all filter out external interfaces in various ways; we might as well do it up front.

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

--HG--
extra : moz-landing-system : lando
2019-09-26 14:30:52 +00:00
Coroiu Cristina c3c2a5e0b6 Bug 1584052 - Fix linting whitespace failure a=me on a CLOSED TREE
--HG--
extra : rebase_source : b06ee2ef9ce0874bd2640b1758b26959aae97293
2019-09-27 03:19:31 +03:00
Coroiu Cristina 817ccb933c Bug 1584052 - Fix linting failure a=me on a CLOSED TREE 2019-09-27 03:04:19 +03:00
Boris Zbarsky 88ecc83259 Bug 1584052. Remove "module" as a reserved word in our Web IDL parser. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D47299

--HG--
extra : moz-landing-system : lando
2019-09-26 21:16:41 +00:00
Boris Zbarsky 6f69ca7498 Bug 1583636. Ensure that all the partials of an interface mixin are in the same .webidl file. r=edgar,saschanaz
The build system can't handle things being scattered about more than that.

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

--HG--
extra : moz-landing-system : lando
2019-09-26 13:09:49 +00:00
Edgar Chen 2cae03d6e1 Bug 1583819 - Webidl parser should report error if there are multiple definitions with same identifier from the mixin interfaces; r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D47136

--HG--
extra : moz-landing-system : lando
2019-09-25 20:00:53 +00:00
Boris Zbarsky 7ccdf0a53c Bug 1574201. Remove support for IDL "implements" statements. r=edgar
A bunch of loop-detection, etc, complexity goes away because mixins are not
interfaces and the mixin syntax does not allow various things we had to guard
against in terms of maplikes and whatnot.

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

--HG--
extra : moz-landing-system : lando
2019-09-25 19:59:00 +00:00
Boris Zbarsky e52521c921 Bug 1574195 part 4. Switch remaining users of IDL "implements" over to mixin syntax. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D46523

--HG--
extra : moz-landing-system : lando
2019-09-24 15:22:26 +00:00
Boris Zbarsky 6be46fda93 Bug 1582538. Fix mixin exposure set computation when interfaces that include it have no explicit exposure sets. r=saschanaz
We can remove this once [PrimaryGlobal] goes away, but for now we need to not
have this issue, which actually bit me when converting NavigatorLanguage to a
mixin.

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

--HG--
extra : moz-landing-system : lando
2019-09-24 02:32:14 +00:00
Boris Zbarsky 89dd3cf285 Bug 1582857. Fix security checks around this-unwrapping. r=peterv,bholley
Differential Revision: https://phabricator.services.mozilla.com/D46692

--HG--
extra : moz-landing-system : lando
2019-09-24 01:02:25 +00:00
Boris Zbarsky 624bd9fd22 Bug 1578173 part 8. Remove support for [Constructor] from the Web IDL parser. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D45398

--HG--
extra : moz-landing-system : lando
2019-09-12 18:45:33 +00:00
Boris Zbarsky 122af58092 Bug 1578173 part 3. Remove ChromeConstructor. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D45390

--HG--
extra : moz-landing-system : lando
2019-09-11 21:04:12 +00:00
Boris Zbarsky c0dd336d70 Bug 1578173 part 1. Add support for constructor operations in the parser. r=edgar
The grammar changes parallel those in https://github.com/heycam/webidl/pull/700

We don't prevent having both a constructor operation and [Constructor] or
[ChromeConstructor], because those extended attributes are about to get
removed, once they are no longer used in our IDL.

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

--HG--
extra : moz-landing-system : lando
2019-09-11 20:44:01 +00:00
Henri Sivonen b9752dabba Bug 1561564 - Introduce a JSString WebIDL type. r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D42297

--HG--
extra : moz-landing-system : lando
2019-09-12 10:27:20 +00:00
Dzmitry Malyshau 3edde5ecd0 Bug 1575384 - WebIDL: Better error message for trying to inherit from a mixin r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D42736

--HG--
extra : moz-landing-system : lando
2019-09-11 16:05:19 +00:00
Boris Zbarsky 2742e32812 Bug 1577016. Improve our error reporting for nullable dictionary operation arguments. r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D43678

--HG--
extra : moz-landing-system : lando
2019-09-06 15:34:50 +00:00
Boris Zbarsky 7a49cd3dd7 Bug 1578455. Allow Web IDL operation arguments named "constructor". r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D44505

--HG--
extra : moz-landing-system : lando
2019-09-04 19:44:29 +00:00
Boris Zbarsky 7d2bac0334 Bug 921496 part 2. Remove NavigatorProperty. r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D40111

--HG--
extra : moz-landing-system : lando
2019-08-26 19:00:04 +00:00
Kagami Sascha Rosylight b14e2b2516 Bug 1414372: Introduce interface mixins r=bzbarsky
Add IDLInterfaceMixin with a new superclass shared with existing IDLInterfaceOrNamespace.

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

--HG--
extra : moz-landing-system : lando
2019-08-15 16:53:49 +00:00