We have this experimented in EARLY_BETA_OR_EARLIER for a while, and
it's been looking good. So let's enable it everywhere!
Differential Revision: https://phabricator.services.mozilla.com/D140793
Updates all build-related jobs (`artifact-build`, `build` and
`instrumented-build`) tasks to explicitly set
`MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system`. This allows them
to consume `psutil` (if installed on the system) without needing
to hit PyPI.org.
Modifies `build-l10n.sh` and `build-linux.sh` to no longer
explicitly fetch `psutil` from PyPI
(`./mach python --virtualenv psutil`), since that is replaced
by Mach's "native package source" behaviour.
Differential Revision: https://phabricator.services.mozilla.com/D140257
This modifies the Nimbus update observer in UrlbarPrefs so that it does not
update the Firefox Suggest scenario unnecessarily. The scenario and the prefs
related to the scenario only need to be updated when either of these happens:
* A relevant Nimbus variable changes
* The current default-branch value of a relevant pref is incorrect for the
intended scenario
Currently, any time a pref changes that is declared as a fallback pref for a
Nimbus urlbar variable, we end up updating the scenario all over again even if
it was some totally unrelated variable like `bestMatchEnabled`.
We have very good test coverage for scenario updates, so I'm confident that this
revision works properly and that we can catch regressions when we modify related
code in the future.
While working on this, I found that the `quickSuggestNonSponsoredEnabled` was
accidentally removed by D130159 (https://hg.mozilla.org/mozilla-central/rev/ccda4432cdc4d7180a9304e05b52f046616bbf2b)
so I added it back. We haven't used this variable in any experiments or rollouts
so it was never a problem.
Differential Revision: https://phabricator.services.mozilla.com/D140425
This adds two new scalars for engagements and abandonments in the urlbar:
```
urlbar.engagement
urlbar.abandonment
```
We already have engagement event telemetry but it's preffed off by default, and
for the upcoming best match experiment, data science would prefer scalars so we
can easily measure total engagement volume. (See bug 1752953 comment 22.)
Recording simple scalars for engagements and abandonments in addition to the
optional event telemetry seems totally reasonable.
The existing `urlbar.picked.*` scalars are sort of proxies for engagement, but a
single scalar would make analysis easier, and there is no similar existing
scalar for abandonments.
This revision hooks into the `TelemetryEvent` class, but it records the scalars
regardless of `browser.urlbar.eventTelemetry.enabled` because there's no reason
to not always enable it.
Differential Revision: https://phabricator.services.mozilla.com/D140287
This adds new keyed scalars for best match that are analogous to the current
non-best-match scalars, but they are broken out by sponsored vs. non-sponsored:
```
contextual.services.quicksuggest.impression_sponsored_bestmatch
contextual.services.quicksuggest.impression_nonsponsored_bestmatch
contextual.services.quicksuggest.click_sponsored_bestmatch
contextual.services.quicksuggest.click_nonsponsored_bestmatch
contextual.services.quicksuggest.help_sponsored_bestmatch
contextual.services.quicksuggest.help_nonsponsored_bestmatch
```
For best matches, these new scalars are incremented *in addition to* the current
non-best-match scalars.
Differential Revision: https://phabricator.services.mozilla.com/D140286
The value that I'm using in the new copy is still large, but small enough that
it doesn't overflow our internal int64_t representation (when converted into
milliseconds by multiplying by 1000x).
This value makes the crashtest hang in Firefox (hence the included .ini
"expected: TIMEOUT" annotation). The original crashtest doesn't hang in
Firefox, but that's only because it uses a time that's substantially larger to
the extent that it overflows and produces a negative internal time
representation, and that happens to avoid the issue that causes the hang.
(Though, spoiler alert: the next patch in this series will prevent that
integer-overflow, which will make that original test start hanging Firefox as
well.)
Depends on D140770
Differential Revision: https://phabricator.services.mozilla.com/D140771
This should be cheap and gives us a lot of memory savings for the page
on the bug, by deduplicating the inherited properties between parent and
children.
WebKit implements a similar optimization.
Differential Revision: https://phabricator.services.mozilla.com/D140826
If a name is not in self.seen, it means we've inherited it from our
parent. That in turn means that it can't have any variable reference
(because we inherit the computed variables) and we can skip the work of
traversing it, as we'd hit the early-return in traverse() anyways.
This doesn't fix the memory usage issue of the page on the bug, which
has a giant list of properties on the root and then a custom property
specified on all elements, but should significantly reduce the time we
spend iterating over custom properties for all those elements.
Differential Revision: https://phabricator.services.mozilla.com/D140825
- Accessing DebuggerObject.class is showing up in profile as it's a getter, so we
cache it before calling the previewers, and pass it as an extra argument.
- Remove object destructuring in some function signatures as it's
doing extra work we might end up not needing if the previewer isn't the one
that should be used for the object.
- For some previewers, add Sets for className to match so the lookup is faster
- Avoid checking `isWorker` upfront as it has some overhead
Test for Restricted grip is updated to check that we do get the url in preview.
Differential Revision: https://phabricator.services.mozilla.com/D140603
Store the window `innerWindowId` instead of retrieving it for each message.
Refactor `getWorkerType` to not use Array method.
Differential Revision: https://phabricator.services.mozilla.com/D140627
This should help save some cycle in JSActor communication when logging objects.
The client handles those propery only when they are not falsy, so we don't need
to do anything there with this change.
Differential Revision: https://phabricator.services.mozilla.com/D140604
This does the following:
* Add the urlbar root directory to the list of sphinx-js directories
* Add three new rst files for the automatically generated API docs for
UrlbarController, UrlbarInput, and UrlbarView
* Add a new top-level section to the urlbar's index.rst for these three docs
* Tweak two JSDocs in UrlbarSearchOneOffs so that sphinx-js doesn't complain
This should be a good starting place for integrating automatically generated API
docs into the urlbar docs, and we can iterate on it from here.
Differential Revision: https://phabricator.services.mozilla.com/D139780
This prevents a java NullPointerException when the
RemoteSurfaceAllocator returns a null Surface to the local
SurfaceAllocator instance.
Differential Revision: https://phabricator.services.mozilla.com/D140801
This re-orders some Instance fields for clarity, and adds comments
and assertions that the first fields of Instance are reserved for
critical data that should be accessable using compact encodings.
Differential Revision: https://phabricator.services.mozilla.com/D140232
Clean up the hack from the previous commit by removing the stub
TlsData type and changing all references to point to wasm::Instance.
No functional changes.
Differential Revision: https://phabricator.services.mozilla.com/D139538
1. Move fields and accessors from TlsData to Instance
2. Allocate Instance using extra alignment and extra space at end
3. Leave TlsData as a subtype of Instance with no fields
- This leaves all references to TlsData as valid
- The TlsData stub type is never constructed, only used to
resolve static members through its super type. This is a
quick hack and is removed in a following commit.
4. Leave instance->tlsData() and tls->instance() as identity
operations to be removed in a following commit.
The net result is that TlsData and wasm::Instance are the same
object in memory, just with different names.
Differential Revision: https://phabricator.services.mozilla.com/D139537
wasm::Instance is a class with protected members. Change TlsData and it's uses
be similar in preparation for them to be merged.
Differential Revision: https://phabricator.services.mozilla.com/D139536
The clang-format hook appears to be called directly without Mach, so it
has to manually handle its dependencies.
Since it transitively depends on `six` (through
`mozversioncontrol` > `mozfile`), it should add the vendored `six` to
the `sys.path`.
Differential Revision: https://phabricator.services.mozilla.com/D140769