This patch attempts to make nsCocoaWindow transitions (fullscreen,
windowed, minimize, zoom) atomic operations that can't be disrupted by
user action or by programmatic triggers. To accomplish this, it defines a
transition queue which ensures that when a transition is submitted, it is
always run to completion before another transition is started. Native
transitions execute asynchronously, and emulated ones execute
synchronously.
Additionally, this patch adds intermediary transitions to handle
programmatic transitions which aren't allowed by macOS, which include:
1) Attempting to minimize a fullscreen window will first transition to
windowed state.
2) Any transition on a minimized window will first transition to windowed
state.
A later part of this patch stack tests this behavior.
Differential Revision: https://phabricator.services.mozilla.com/D166450
There was a case that RDD process was shut down during WebRender rendering. It happens by RDDProcess shutdown during XPCOMShutdown event. In this case, there could be a widget that nsBaseWidget::Shutdown() has not yet been called.
RDD process must be shutdown after all nsBaseWidget::Shutdown()s are called. gfxPlatform::ShutdownLayersIPC() is called immediately after XPCOMShutdown event in ShutdownXPCOM(). Then the ShutdownLayersIPC() is a good place to handle RDDProcess shutdown.
Differential Revision: https://phabricator.services.mozilla.com/D171313
Now that NotifySurfaceReady will clean up a 1-pixel strip invalid region,
this change makes HandlePartialUpdate allow a 1-pixel strip invalid
region. This should hopefully make HandlePartialUpdate only crash on the
cases that will also crash NotifySurfaceReady.
Differential Revision: https://phabricator.services.mozilla.com/D171500
This test compares transformed input elements against untransformed ones. This
can end up producing slight subpixel positioning differences at paint time,
which results in a fuzzy reftest failure. The test already has a fairly
liberal fuzzy allowance, and this patch just relaxes that a bit more to account
for the fuzzy differences that we're currently seeing on the wpt.fyi harness.
Differential Revision: https://phabricator.services.mozilla.com/D171275
We don't need to generate the randomization key if fingerprinting
protection is disabled. This could happen if fingerprinting protection
is disabled or exempted from normal windows. In these cases, we don't
need to generate the key, which can save us the cost of generating the
key.
Differential Revision: https://phabricator.services.mozilla.com/D171397
This patch adds a fingerprintingRandomizationKey to the
nsICookieJarSettings. The random key will be generated when loading a
top-level http channel and set to the cookieJarSettings. The key will
propagate to the top-level documant and all sub-documents with the
cookieJarSettings. Accessing the fingerprintingRandomizationKey will
return an error if the fingerprinting randomization is disabled.
Differential Revision: https://phabricator.services.mozilla.com/D170604
This patch implements the session key that will be used to generate the
random noise for fingerprinting randomization. The session keys will
live in the nsRFPService in the parent process only. nsRFPServices holds
two session keys for normal and private windows respectively. The
lifetime of normal sessino key is tie to the Firefox; it resets with
Firefox restarts. For private session key, it resets when the private
session ends. i.e. all private windows are closed.
Differential Revision: https://phabricator.services.mozilla.com/D170603
This also fixes a bug in ASRouter devtools that prevented evaluation of
expressions containing nested promises. Objects containing promises are now
correctly serialized to the ASRouter devtools and expressions evaluate
correctly.
Differential Revision: https://phabricator.services.mozilla.com/D169408
TestWinDND.cpp was disabled when libxul became a separate library which
could no longer be used by cppunittests.
Add a few shims to turn it into a gtest instead, and hook it back up.
Differential Revision: https://phabricator.services.mozilla.com/D171280
This also fixes a bug in ASRouter devtools that prevented evaluation of
expressions containing nested promises. Objects containing promises are now
correctly serialized to the ASRouter devtools and expressions evaluate
correctly.
Differential Revision: https://phabricator.services.mozilla.com/D169408
After PFetch is enabled, fetch() in workers will go through the PFetch IPC to the parent process directly.
It means fetch() in the workers would not create any channels in content process and would not be blocked by the content process main thread anymore.
But since there is no channel in content process anymore, the netmonitor would also not get any notifications which expected from the channel.
Therefore, we remove checking for fetch() in the test, and enable the test.
https://searchfox.org/mozilla-central/rev/f7edb0b474a1a922f3285107620e802c6e19914d/devtools/client/netmonitor/test/browser_net_worker_stacks.js#74-81
We are planing to make worker's execution to be off-main thread, which means script loading, xhr and other network access will suppose to create channels in the parent process directly.
Therefore, we might need a new way to propagate these information for devtools.
There are two possible solutions
1. Faking a channel in the content process, such that netmonitor can still listen the notification.
2. Netmonitor listens on the parent process, and propagate the needed information to the content process devtool.
However, no matter which solution is applied, they both have some problem need to be figure out and fix.
Differential Revision: https://phabricator.services.mozilla.com/D171449
After the 7z stub saves the provenance data to the same directory as the installer, the installer should copy it to the installation directory. If the user runs the full installer, it should copy the provenance data of the full installer download. But if the user runs the stub installer, only the stub should copy its provenance data and the full installer should avoid overwriting the useful data from the stub.
Differential Revision: https://phabricator.services.mozilla.com/D171110
This patch was heavily inspired by the existing 7z customizations that read the download token into the "postSigningData" file. In both cases, the installation self-extractor copies some data into the same temporary directory where the installer is written. It will then be up to the NSIS installer to copy that file into the installation directory (that work will be done later in this stack).
This patch also includes changes to some files that were regenerated based on the code changes made.
- `mozilla_customizations.diff` was updated so that it still reflects all Mozilla-made code changes to 7z.
- The `7zSD.ARM64.sfx` and `7zSD.Win32.sfx` executables were re-built from the new code.
- `SFXSetup.vcxproj` was updated to use newer toolchains.
Differential Revision: https://phabricator.services.mozilla.com/D171109
I wanted to figure out how to re-generate `mozilla_customizations.diff` in a way that matched the way that it was originally created. This is so that (a) I could ensure that I was starting with a clean slate and that the current `mozilla_customizations.diff` matched the existing changes to `other-licenses/7zstub/src` and (b) when I regenerated `mozilla_customizations.diff` after making further changes to it, the patch of the diff changes would be at least somewhat readable rather than being a huge mess.
Some aspects of regenerating it created changes that I think are appropriate (ex: the full path to the user directory being present in the diff'ed file names). There were also some changes that I just couldn't figure out how to avoid (ex: the length of the function name context line). I'm not sure what diff utility was originally used, but I'm hoping that documenting how I generated it this time will allow it to be generated consistently in the future. And this commit should bring it in line with that consistency.
Differential Revision: https://phabricator.services.mozilla.com/D171108
This patch adds two new attributes to the window's `html` element, `windowclass` and `windowname`, to allow directly controlling the window's class hints on Xorg/Wayland (`res_class` and `res_name`) from the chrome/JS code. When they are set, values are used as class hints for their window. When they are not set, the current behavior of determining `res_class` and `res_name` (using `gdk_get_program_class` for `res_class` and parsing `windowtype` for `res_name`) is preserved.
Changes in `widget/nsIWidget.h` and `widget/nsBaseWidget.h` are only interface changes so that `setWindowClass` can accept three attributes. Although this patch does not affect Windows, `widget/windows/nsWindow.h` and `widget/windows/nsWindow.cpp` have been updated to comply with the new interface. `xpfe/appshell/AppWindow.cpp` has been updated to get the additional attributes and call `setWindowClass` with them. The main changes are in `widget/gtk/nsWindow.h` and `widget/gtk/nsWindow.cpp`.
Differential Revision: https://phabricator.services.mozilla.com/D169720