Before this change we were only waiting for the `fullscreenchange`
event in the frame that requested fullscreen. This event is fired
before the the promise returned by `requestFullscreen` is resolved.
We now wait on the returned promise to resolve in addition to the
event, which should delay when we check the logged events from
all the frames.
Differential Revision: https://phabricator.services.mozilla.com/D94017
Our existing displayport calculation heuristics generally favour a more vertical
displayport because that's the direction most scrolling occurs in. However, when
zooming, we actually want to try and preserve the aspect ratio of the composition
size, because zooming is an operation that scales the content equally on both
axes and favouring the y-axis in the displayport can result in more checkerboarding
on the x-axis.
Differential Revision: https://phabricator.services.mozilla.com/D93799
Also upgrade the ccov builds to clang 11, as they were stuck on clang 9
because of the older version of rust, and the new version of rust
requires to bump clang as well (due to code-coverage-related symbols
name change).
Differential Revision: https://phabricator.services.mozilla.com/D93731
Rustc >= 1.44 changed the file names of the static libraries it
produces with -windows-gnu targets, to match that of mingw clang/gcc.
Considering we still build on 1.43, the best fix would be to derive the
prefix/suffix based on the version of rust, but that actually turns into
a hard-to-solve problem because of configure tests for bindgen also
depending on the prefix/suffix value to be known.
On the other hand, we're soon due to an update to 1.47, so the simpler
solution is to just push mingw builds to require 1.44 (settling for the
smallest upgrade possible for now) and to remove the split between C and
rust library prefix/suffixes.
Differential Revision: https://phabricator.services.mozilla.com/D93726
That is what rust uses, and versions of rust >= 1.44 make the
discrepancy visible as a linker error on missing the _Unwind_Resume
symbol, so we need to align things.
Differential Revision: https://phabricator.services.mozilla.com/D93725
The APZCCallbackHelper code would only enter the codepath to set the presShell
resolution if the repaint request had a scroll position update. This seems silly
because really we care about whether or not the async zoom changed. The included
test exposes this silliness by demonstrating how the presShell resolution can
get stuck at an incorrect value because the necessary repaint requests get
ignored.
The patch now allows the SetResolutionAndScaleTo codepath to be entered if
there is an async zoom on the repaint request, so that we make sure to update
the presShell resolution even if the scroll position hasn't changed.
Differential Revision: https://phabricator.services.mozilla.com/D93687
Instead of a having a yield-style pinchZoomOutTouchSequenceAtCenter function
and a async pinchZoomOutWithTouchAtCenter wrapper around it, we now have an
general async wrapper synthesizeNativeTouchAndWaitForTransformEnd around the
main touch synthesization function, with pinchZoomOutWithTouchAtCenter being
a helper that uses it with a specific touch sequence.
In particular this allows reusing this code with other custom touch sequences,
which will happen in the next patch.
Differential Revision: https://phabricator.services.mozilla.com/D93686
I want to refactor a couple of the pinch utilities so I need to migrate this
code to stop using pinchZoomOutTouchSequenceAtCenter, and use
pinchZoomOutWithTouchAtCenter instead. As a bonus this migrates the test from
being a continuation-style to async/await-style.
Differential Revision: https://phabricator.services.mozilla.com/D93685
`mach configure` currently runs the equivalent to `make -f client.mk`.
This is history, and essentially does the following:
- Create `configure` and `js/src/configure` from `configure.in` and
`js/src/configure.in` respectively.
- Create the objdir.
- Run `configure` from the objdir.
The `configure` script is, nowadays, only really used as a means to set
OLD_CONFIGURE (and also for people who want to run `configure`,
literally, as in the `configure; make` workflow). `mach configure`
actually doesn't need it. Neither does recursing into `js/src` require
`js/src/configure`, since bug 1520340 (and now as of bug 1669633, we
don't even recurse).
Because configure.py can actually derive OLD_CONFIGURE on its own
(except for `js/src/configure`, but `mach configure` doesn't run that),
we don't really need `configure` for `mach configure`.
So all in all, we're at a point in history where it's straightforward to
just initiate configure.py from mach configure, so we just do that.
And in the hypothetical case where the `mach configure` code is somehow
running in python2, we get the mach virtualenv python3 and use it to
execute `configure.py`.
Differential Revision: https://phabricator.services.mozilla.com/D93741
For future archaeologist: `eReflowReason` used in `nsAdaptorPrintReason`
was originally defined in nsHTMLReflowState.h (today's ReflowInput.h),
and was removed in Bug 300030
31f1898810
Differential Revision: https://phabricator.services.mozilla.com/D94042
In a (large-ish) nutshell:
- Consolidate all counters under a single type.
- Counters are all arranged in an array and referred to via index.
- All counters can be displayed as average+max (float/int), graph, and change indicator.
- Specify what to show and in what form via a pref.
- All counters and visualizations support not having values every frame.
- GPU time queries visualization is easier to read relative to the frame budget:
- If the maximum value is under 16ms, the right side of the graph is fixed at 16ms.
- If the maximum value is above 16ms, draw a vertical bar at 16ms.
- Added a few new profile counters:
- Total frame CPU time (from API send to the end of GPU command submission).
- Visibility, Prepare, Batching and Glyph resolve times.
The main change is how profile counters are represented. Instead of having different types for different visualizations, every counter is represented the same way, tracking average/max values over half a ms and optionally recording a graph over a number of frames. Counters are stored in a vector and referred to via index (See constants at the top of profiler.rs).
The main motivation for this storage is to facilitate adding counters without having to think too much about where to store them and how to pass them to the renderer.
The profiler's UI is defined by a string with with a single syntax:
- Comma separated list of tokens (leading and trailing spaces ignored), which can be:
- A counter name:
- If prefixed with a '#' character, the counter is shown as a graph.
- If prefixed with a '*' character, the counter is shown as a change indicator
- By default (counter name without prefix), the counter is shown as average and max over half a second.
- A preset name:
- A preset is a builtin UI string in the same syntax that can be nested in the main UI string.
- Presets are defined towards the top of profiler.rs and can also refer to other presets.
- An empty token adds a bit of vertical space.
- A '|' token begins a new column.
- A '_' token begins a new row.
Differential Revision: https://phabricator.services.mozilla.com/D93603
This changes two bits of Firefox that, together with the mime service, end up
very confused over webp + jpeg.
1) it changes contentAreaUtils.js' getDefaultExtension that if it gets an image
mimetype as the content type, it should ignore the URL. It doesn't have full channel
info so it can't really do better anyway. This fixes the context menu's "save image as..."
case.
2) it changes the external helper app service to do a few things slightly differently:
a. If we're told not to get an extension out of a URL, really don't. Don't just get the
filename and then get it from there anyway...
b. If we've got a suggested filename, and a primary extension for the mimetype,
and the extension on the file is not one of the known extensions for the mimetype,
replace it with the primary extension.
This fixes the link case.
It also adds tests for both of these mechanisms as well as "save image as."
Differential Revision: https://phabricator.services.mozilla.com/D92306
This also makes it so we don't set a cover automatically anymore, this avoids a
flash when an app sets a session immediately after removing the old session (AC
does this).
Additionally, this also helps with a startup flash, when it's too early for
GeckoView to know whether the app's theme is light or dark.
Differential Revision: https://phabricator.services.mozilla.com/D93815