Now both of GTK and MacOSX backends use the same machinery, LookAndFeelInt, for
prefers-reduced-motion. And we are going to use it on Android as well so it'd
make sense to move the code into there.
On Windows we can also use the same LookAndFeelInt machinery and probably
all we have to do is to call SendNotifyMessage with SPI_SETCLIENTAREAANIMATION
in SetPrefersReducedMotionOverrideForTest.
Differential Revision: https://phabricator.services.mozilla.com/D59022
--HG--
extra : moz-landing-system : lando
Now both of GTK and MacOSX backends use the same machinery, LookAndFeelInt, for
prefers-reduced-motion. And we are going to use it on Android as well so it'd
make sense to move the code into there.
On Windows we can also use the same LookAndFeelInt machinery and probably
all we have to do is to call SendNotifyMessage with SPI_SETCLIENTAREAANIMATION
in SetPrefersReducedMotionOverrideForTest.
Differential Revision: https://phabricator.services.mozilla.com/D59022
--HG--
extra : moz-landing-system : lando
nsTouchBar.h/.mm were getting a bit unwieldy, particularly after the TouchBarInputBaseType enum from the next part of this patch was added. This part splits out TouchBarInput into its own files. This makes the Touch Bar's file structure similar to that of the menu bar's: nsMenuBarX, nsMenuBarItemX, and nsMenuBarItemIconX contrasted with nsTouchBar, nsTouchBarInput, and nsTouchBarInputIcon.
Differential Revision: https://phabricator.services.mozilla.com/D56589
--HG--
extra : moz-landing-system : lando
On macOS 10.12.1+, we use `MediaPlayer` library, which has better media key integration, to replace the implementation of `CG EventLoop`.
Differential Revision: https://phabricator.services.mozilla.com/D46890
--HG--
extra : moz-landing-system : lando
This makes it more similar to how SwapBuffers was used.
This patch also makes us call glFlush directly when using native layers, rather than going through the misleadingly-named GLContext::SwapBuffers method.
Differential Revision: https://phabricator.services.mozilla.com/D57062
--HG--
extra : moz-landing-system : lando
The oldest Mac that we support is 10.9, so we no longer need these defines.
Differential Revision: https://phabricator.services.mozilla.com/D58005
--HG--
extra : moz-landing-system : lando
Inheriting from `nsISupports` is too complicated if we just want to support refcounting. Instead, we can use `NS_INLINE_DECL_PURE_VIRTUAL_REFCOUNTING` to declare `Add/RemoveRef()` as pure virtual functions in order to create ref-counted abstract classes.
Differential Revision: https://phabricator.services.mozilla.com/D57714
--HG--
extra : moz-landing-system : lando
This changeset is a simple find and replace of `MOZ_FALLTHROUGH` and `[[fallthrough]]`.
Unfortunately, the MOZ_FALLTHROUGH_ASSERT macro (to assert on case fallthrough in debug builds) is still necessary after switching from [[clang::fallthrough]] to [[fallthrough]] because:
* MOZ_ASSERT(false) followed by [[fallthrough]] triggers a -Wunreachable-code warning in DEBUG builds
* but MOZ_ASSERT(false) without [[fallthrough]] triggers a -Wimplicit-fallthrough warning in NDEBUG builds.
Differential Revision: https://phabricator.services.mozilla.com/D56440
--HG--
extra : moz-landing-system : lando
There are multiple SurfacePools: Main thread painting and the non-WebRender compositors create a new pool per window, and WebRender creates one shared pool across all windows. The non-WebRender users set the pool size limit to zero, i.e. no recycling across paints. This preserves the pre-existing behavior.
WebRender's pool size is configurable with the gfx.webrender.compositor.surface-pool-size pref.
Every window holds on to a SurfacePoolHandle. A SurfacePoolHandle has an owning reference to the pool, via a surface pool wrapper. Once all handles are gone, the surface pool goes away, too.
The SurfacePool holds on to IOSurfaces and MozFramebuffers. Both are created on demand, independently, but are associated with each other.
A given NativeLayer uses only one surface pool handle during its lifetime. The native layer no longer influences which GLContext its framebuffers are created for; the GL context is now managed by the surface pool handle.
As a result, a NativeLayer can no longer change which GLContext its framebuffers are created by.
So in the future, if we ever need to migrate a window frome one GLContext to another, we will need to recreate the NativeLayers inside it. I think that's ok.
Differential Revision: https://phabricator.services.mozilla.com/D54859
--HG--
extra : moz-landing-system : lando
It calls `Document::FlushPendingNotification()` so that we should mark it
as `MOZ_CAN_RUN_SCRIPT`.
And the method calls it of `mDocument` and `mDocument` is never modified
after it's initialized. Therefore, we can move the initializer to the
constructor and make `RefPtr<Document>` to `RefPtr<Document> const`. Thus,
we can avoid unnecessary auto `RefPtr`.
Differential Revision: https://phabricator.services.mozilla.com/D55803
--HG--
extra : moz-landing-system : lando
`MediaControlKeysEvent` should represent possible control key events, so adding a non-existing `eNone` in this class is not good.
Differential Revision: https://phabricator.services.mozilla.com/D57022
--HG--
extra : moz-landing-system : lando
`TextInputHandler::HandleFlagsChanged()` dispatches `keydown` and `keyup`
events even if the native key code is not set properly because web apps
and our internal component like EventStateManager may cache modifier
state with listening to `keydown` and `keyup` events.
If native event does not have proper key code value, it computes key code
from recorded key code value for each flag, but one modifier key may
set 2 or more flags. Therefore, it should check whether the computed
key code's event has already been dispatched or not.
Differential Revision: https://phabricator.services.mozilla.com/D56138
--HG--
extra : moz-landing-system : lando
Add `Open()` to support inherited sources to implement their own initialization and also don't hold the reference of the source if it fails to initialize.
Differential Revision: https://phabricator.services.mozilla.com/D56449
--HG--
extra : moz-landing-system : lando
Add an ability for inherited sources to implement their own deconstruction operations.
Differential Revision: https://phabricator.services.mozilla.com/D56447
--HG--
extra : moz-landing-system : lando
We want the print job title set when actually submitting the job to a printer
so that the job appears with a useful title in any print job management
software the user may be using. However, we do that in
nsDeviceContextSpecX::BeginDocument, which is the place that it needs to
happen.
This removed code is called much earlier, while setting up to open the print
dialog and using a temporary nsPrintSettingsX in order to configure the
dialog. The dialog does not make use of the print job name (and we discard
the nsPrintSettingsX before going on to do the print using BeginDocument).
This removes the last piece of code that requires us to pass a
nsIWebBrowserPrint to the print dialog opening code. Removing that clears the
way to simplify the code and get printing working with Fission enabled.
Differential Revision: https://phabricator.services.mozilla.com/D56087
--HG--
extra : moz-landing-system : lando
For a PMSession to be given a job name, the job name must be set on the
PMPrintSettings before it is passed to PMSessionBeginCGDocumentNoDialog.
However, since nsDeviceContext::BeginDocument calls PrintTarget::BeginPrinting
before calling nsDeviceContextSpec::BeginDocument, the setting of the job name
in nsDeviceContextSpecX::BeginDocument was happening after the
PMSessionBeginCGDocumentNoDialog call in PrintTargetCG::BeginPrinting, and was
doing us no good. This moves the job name setting into
PrintTargetCG::BeginPrinting so that the job name is set first.
Note: The job name is shown if your printer/OS has software to manage the list
of queued jobs waiting to print.
Differential Revision: https://phabricator.services.mozilla.com/D56241
--HG--
extra : moz-landing-system : lando
Create a general interface for getting platform-specific media keys event source in order to remove platform specific code from non-platform related folder `dom/media`.
Differential Revision: https://phabricator.services.mozilla.com/D55892
--HG--
rename : dom/media/mediacontrol/MediaHardwareKeysEventSourceMac.h => widget/cocoa/MediaHardwareKeysEventSourceMac.h
rename : dom/media/mediacontrol/MediaHardwareKeysEventSourceMac.mm => widget/cocoa/MediaHardwareKeysEventSourceMac.mm
extra : moz-landing-system : lando
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.
find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
if [ -n "$interfaces" ]; then
if [[ "$interfaces" == *$'\n'* ]]; then
regexp="\("
for i in $interfaces; do regexp="$regexp$i\|"; done
regexp="${regexp%%\\\|}\)"
else
regexp="$interfaces"
fi
interface=$(basename "$path")
rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
if [ $hits -eq 0 ]; then
echo "Removing ${interface} from ${path2}"
grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
mv -f "$path2".tmp "$path2"
fi
done
fi
done
Differential Revision: https://phabricator.services.mozilla.com/D55444
--HG--
extra : moz-landing-system : lando