This commit updates the outdated documentation for producing multi-locale
packages, and also arranges for Android multi-locale packages to produce a
GeckoViewExample binary that has `libs` and `assets/omni.ja`. Together, these
greatly ease multi-locale testing.
Differential Revision: https://phabricator.services.mozilla.com/D160705
This commit does two things. First, it fixes a packaging error caused
by various `relativesrcdir` directives impacting the `**/*.ftl` block
by lifting that block earlier; second, it patches the target JAR in
later blocks.
Differential Revision: https://phabricator.services.mozilla.com/D160704
This patch adds an `fx-toggle` widget along with associated stories and some basic tests.
Some random thoughts/notes:
* Some of the colors are a bit off from the figma specs since we're still using in-content variables for now
* The tests are pretty basic, and possibly a little redundant
* As a follow up I'm going to experiment with creating an `fx-label` element and will see if it's possible to use `ElementInternals` to keep the association between the input and the label
* As another follow up I'm going to try to expand on how we handle documentation of components in Storybook (i.e. can we pull in JSDoc annotations or add markdown support)
Depends on D157937
Differential Revision: https://phabricator.services.mozilla.com/D160264
This is the last place that in `gecko_taskgraph/generator.py` that calls into
`gecko_taskgraph` code. By removing it, the two generator.py files will be
identical and the `gecko_taskgraph` copy can be removed.
Differential Revision: https://phabricator.services.mozilla.com/D161080
This patch adds two parametrized tests (totalling 18 tests) for the perf selector. The first set of 15 tests are for testing the category expansions under different configurations. The last 3 tests are for testing the run methods in the three configurations that we offer: standard, dry runs, and uncategorized test selection (or --show-all).
Depends on D160418
Differential Revision: https://phabricator.services.mozilla.com/D160419
This patch adds the run methods for the perf selector as well as the entry point for the mach command. It also produces the Perfherder URL at the end.
Depends on D160417
Differential Revision: https://phabricator.services.mozilla.com/D160418
This patch adds a method that allows us to push to try. It performs two pushes similar to the compare selector, except in this case we're also capturing the logs in all cases so that we can provide a Perfherder URL afterwards. At the same time, this patch adds a LogProcessor that can capture these logs and parse them for the revisions.
Depends on D160416
Differential Revision: https://phabricator.services.mozilla.com/D160417
This patch adds two methods for getting/selecting tasks. The first one (get_tasks) is used to either query fzf directly, or to use interactively for user selections. The second (get_perf_tasks) makes use of the first to query for categories (through the user) and then query for the selected tasks. It also performs all the necesary intersections/unions for the queries.
These two are separated because we need a simple way to allow the user to look and select the raw tasks instead of categories if needed. This way the user can still get a comparison link at the end instead of going to `mcah try fuzzy`. See the next patches.
Depends on D160414
Differential Revision: https://phabricator.services.mozilla.com/D160415
This patch adds a method for expanding the categories. This method takes all the configuration details from the PerfParser (variants, apps, platforms, etc.) and combines them to create the categories that people will be seeing and selecting from. It creates the queries, and checks for any restrictions among them to provide selections that work. See the method for more details on all of this.
Depends on D160413
Differential Revision: https://phabricator.services.mozilla.com/D160414
This patch adds the basics for the perf selector: file, categorizations, selector configuration, and CLI arguments.
Depends on D155980
Differential Revision: https://phabricator.services.mozilla.com/D160413
This patch adds a `capture_log` flag that will allow a user to capture the logs produced when running the `push_to_try` methods. Currently, we use `subprocess.check_call` which causes hg to hang when we attempt to redirect and gather stdout. Using `subprocess.run` is better as it lets us capture the logs, but the log output is very slow and can easily lead people to believe that hg is hanging when it's not. This results in corrupted repos. Using Popen, the logs are output slower than `check_call`, but faster than `run` so you know something is happening. The speed at which these logs are printed is also why I have this log capturing behind a flag.
This functionality will be used in the `./mach try perf` selector to capture the child revisions produced for the try task config file changes and allow us to produce a PerfCompare link to provide the user.
Differential Revision: https://phabricator.services.mozilla.com/D155980
This patch implements br_on_cast_fail for wasm baseline, in a way which shares
some code with the existing br_on_cast. Main changes:
* BaseCompiler::emitBrOnCast: renamed to ::emitBrOnCastCommon, which handles
both the on-cast-success and on-cast-failure cases.
* OpIter<Policy>::checkCastedBranchValueAndPush has been removed and then
reinstated as ::readBrOnCast and ::readBrOnCastFail. Removal of this means
the validation logic and associated comments are located in only one place
rather than two.
* OpIter<Policy>::readBrOnCast and ::readBrOnCastFail: add comments to explain
the types involved, and the validation and run-time checks required. These
are then implemented.
* new test case tests/wasm/gc/br-on-cast-fail.js
Differential Revision: https://phabricator.services.mozilla.com/D158493
This revision changes the logic for creation and updating of accessibles
corresponding to img elements such that alt="" (without click listeners or any
other aria attribute that forces an accessible) will effectively remove that
img's accessible from the accessibility tree. Next, this revision removes the
concept of eNoNameOnPurpose from accessible name handling, since it's now
unnecessary now that alt="" means "don't create an accessible" in most cases.
This revision also adds tests to verify the functionality and updates existing tests.
Differential Revision: https://phabricator.services.mozilla.com/D160706
- Do not allow preallocated processed to turn into Privileged
About Content Processes
- Separate ShouldSanitizePreference into a more logical
'ShouldSanitizePreference' to use when sending a process to
a subprocess, and a separate IsPreferenceSanitized to be used
when accessing a preference
- Remove several now-redundant parts of conditionals like
- gContentProcessPrefsAreInited (now inside IsPreferenceSanitized)
- !XRE_IsParentProcess() (now inherent in the check)
- Remove the aIsDestinationWebContentProcess argument - it's not
needed in IsPreferenceSanitized, and can be checked outside
ShouldSanitizePreference
The original (partial) preference omitting code was done for
performance, and stuck around partially in the sanitization code -
preferences explicitly blocklisted were omitted from all
sub-processes. But those preferences changed from large preferences
to privacy-sensitive ones and with this change we no longer omit
any preferences from all sub-processes, we only sanitize some
preferences for web content processes.
We could bring back this performance behavior though, and tailor
it specifically for performance and not privacy.
Differential Revision: https://phabricator.services.mozilla.com/D159940
In practice, it's only instantiated on the stack; and that's kinda important,
to reduce the likelihood that it somehow outlives the 'gfxSkipChars' instance
that it maintains a raw pointer to and is iterating over.
Differential Revision: https://phabricator.services.mozilla.com/D159922
Before this patch, we implicitly invoke the default constructor for this
member-var, and then immediately stomp on the results with a reassignment.
This patch avoids that unnecessary usage of the default constructor, saving
ourslves a bit of work and getting this member-var more directly into a
fully-initialized/valid state.
Differential Revision: https://phabricator.services.mozilla.com/D159903
Make all expiration date comparison from the same time reference, making
the comparison pedantically valid, and also avoiding repeated implicit
calls to `datetime.datetime.utcnow()`
Use `dict.setdefault` and `dict.get` to decrease the number of control path
in the code, hopefully making it easier to read.
As a bonus, this yields a modest 4% runtime improvement on my setup when
comparing the runtime of
./mach taskgraph tasks --fast --no-optimize -q -o /dev/null
Differential Revision: https://phabricator.services.mozilla.com/D160404
Avoid long lines by using appropriate temporary variables.
Use dict.pop instead of dict.get + del.
Move loop invariant outside of loops.
Differential Revision: https://phabricator.services.mozilla.com/D160467
We want to encourage extension developers to use `browser_specific_settings` instead of `applications`, which will be unsupported in Manifest Version 3+. This patch makes sure test manifests in m-c won't cause any issues in the future.
Depends on D160541
Differential Revision: https://phabricator.services.mozilla.com/D160668
RttValue used to contain parents/children for rtt.sub and this was used
for runtime casting. We have all this information in TypeDef. This commit
basically turns RttValue into a thin wrapper around a *TypeDef. It may make
sense to remove RttValue and replace it with *TypeDef eventually.
Differential Revision: https://phabricator.services.mozilla.com/D159775
This commit implements the declared subtyping from the GC proposal.
With this, in the following example:
0: (type (struct))
1: (sub 0 (type (struct (field i32))))
2: (type (struct (field i32)))
Type 1 is a sub type of type 0, while type 2 is not a sub type of type 0. They
do not canonicalize to the same type either.
A super type field is added to TypeDef which stores the declared relationship.
The subtyping algorithm is split to two phases:
1. Can types be in a subtype relationship
2. Are the types in a declared subtyping relationship
The new algorithms don't require any allocation, and so the TypeCache is
removed. The subtyping methods now have no reason to live on TypeContext
as well, so they are moved to ValType, RefType, and TypeDef.
Differential Revision: https://phabricator.services.mozilla.com/D159058
This commit adds explicit recursion groups and implements type equality using
canonicalization as specified in the GC proposal.
For the following example:
0: (struct)
(rec
1: (struct (ref 0))
2: (struct (ref 1))
)
(rec
3: (struct (ref 0))
4: (struct (ref 3))
)
Type equality is done primarily on a recursion group basis.
The first and second explicit rec's are equal, causing the types within them
to be pairwise equal.
Equality is given by the following transformation of the recs to have 'back edges'
to their local recursion group made explicit. The rest of the equality can be
done in a bottom up (inductive) manner.
(rec
1: (struct (ref nonrecursive 0))
2: (struct (ref recursive 0))
)
(rec
3: (struct (ref nonrecursive 0))
4: (struct (ref recursive 0))
)
With this example, you can see that transforming the 'local' edges to a normalized
format allows equality to done by simple comparison.
The biggest change in this commit is to how we store and create type definitions:
1. TypeDef is now stored inline in a containing RecGroup class
2. TypeContext now has a 'startRecGroup' and 'endRecGroup' method for building
rec groups.
There are several other changes required too:
1. Serialization/deserialization now operates on recursion groups, not type defs
2. (oom handling fix) Serialization/deserialization initializes refptr's at the correct type
3. Canonicalization of function types (which existed already for MVP) is now generalized to
to support canonicalization of all types.
Differential Revision: https://phabricator.services.mozilla.com/D159057