Commit Graph

19 Commits

Author SHA1 Message Date
Florian Quèze
e0b292cc77 Bug 1447788 - add missing override keyword, rs=bustage-fix, a=Aryx on CLOSED TREE 2018-03-21 23:50:56 +01:00
Florian Quèze
59a98245d5 Bug 1447788 - implement SetNonClientMargins as a noop returning NS_OK in HeadlessWidget.h, r=bdahl. 2018-03-21 23:35:00 +01:00
Boris Zbarsky
29226b0510 Bug 1446851. Get rid of nsIDOMWheelEvent. r=qdot
We can't include WheelEventBinding.h in MouseEvents.h because that produces
this include loop:

WheelEventBinding.h -> MouseEventBinding.h -> UIEventBinding.h ->
nsGlobalWindow.h -> nsGlobalWindowInner.h -> nsRefreshDriver.h ->
AnimationEventDispatcher.h -> AnimationComparator.h -> Animation.h ->
EffectCompositor.h -> PseudoElementHashEntry.h -> Element.h ->
PointerEventHandler.h -> MouseEvents.h -> WheelEventBinding.h

MozReview-Commit-ID: 5KNwH69aJYW
2018-03-20 00:16:05 -04:00
Boris Zbarsky
be90e72263 Bug 1436902 part 3. Replace usage of NS_IMPL_ISUPPORTS_INHERITED0 with NS_INLINE_DECL_REFCOUNTING_INHERITED when possible. r=mccr8
The change to RootAccessible.cpp fixes an obvious bug introduced in bug 741707.

The visibility changes in gfx/thebes are because NS_DECL_ISUPPORTS has a
trailing "public:" that those classes were relying on to have public
constructors.

MozReview-Commit-ID: IeB8KIJCGhU
2018-02-12 15:44:40 -05:00
Brendan Dahl
59d10df814 Bug 1409580 - Use different scroll delta modes on different platforms in headless. r=jrmuizel
Fixes test_group_wheelevents.html

MozReview-Commit-ID: Ctq0WngKG15
2017-10-19 15:57:39 -07:00
Brendan Dahl
120ed7ccce Bug 1409580 - Support edit command mapping in headless MacOS. r=masayuki
Extracts out the creation of an NSEvent from a WidgetKeyEvent in
TextInputHandler.mm into generic helper method. The helper is used by headless
to create a fake NSEvent to then build edit commands from key events.

Fixes:
- test_selectevents.html
- test_bug756984.html
- test_movement_by_characters.html
- test_movement_by_words.html
- test_backspace_vs.html
- test_bug1094000.html
- ... many key event tests

MozReview-Commit-ID: 1Jur5MHOrkp
2017-10-13 17:40:27 -07:00
Brendan Dahl
8709d82f69 Bug 1408220 - Fix the headless windows scroll multiplier. r=jrmuizel
Fixes test_group_wheelevents.html
2017-10-11 13:28:50 -07:00
Brendan Dahl
db12265eec Bug 1399956 - Support synthesized touch events. r=jrmuizel
Fixes test_group_pointerevents.html

MozReview-Commit-ID: 7RPkiHtx0rj
2017-10-16 16:15:45 -07:00
Brendan Dahl
261940ce9e Bug 1399956 - Support synthesized scroll events. r=jrmuizel
Fixes test_bug1151667.html

MozReview-Commit-ID: 8lCHNTA8zIL
2017-10-16 16:15:45 -07:00
Brendan Dahl
b34282382f Bug 1399956 - Support synthesized mouse events. r=jrmuizel
Fixes:
 - test_pointerlock-api.html
 - test_group_mouseevents.html

MozReview-Commit-ID: 82RKzjJv9X1
2017-10-16 16:15:45 -07:00
Brendan Dahl
0e7cfc7c50 Bug 1399956 - Track top level windows in headless mode for window ordering. r=jrmuizel
This better emulates a window manager and triggers the
required activated/deactivated events on the proper windows as
they are closed or hidden.

MozReview-Commit-ID: 1A2JTp8i4VE
2017-10-16 16:15:45 -07:00
Michael Smith
5287dc238a Bug 1373739 - Make headless compositing Windows-compatible, in addition to Linux. r=dvander
To make the HeadlessCompositorWidget work under Windows as well as Linux, I had
to change the way that I hooked it into the existing CompositorWidget system.
Under GTK, the CompositorWidgetInitData and CompositorWidgetDelegate types
provided the information needed by the headless compositor widget already (the
widget client size). On Windows, however, the definitions of these types
differ, and the client size information is simply retrieved from the platform
APIs when needed.

After this patch, CompositorWidgetDelegate is renamed to
PlatformCompositorWidgetDelegate, and a new base class called
CompositorWidgetDelegate is added with "AsPlatformSpecificDelegate()" and
"AsHeadlessCompositorWidget()" methods. In non-headless mode, widgets use
AsPlatformSpecificDelegate() to access the Windows- and GTK-specific delegate
APIs. In headless mode, AsHeadlessCompositorWidget() is used to access the
singular CompositorWidget implementation for headless. Meanwhile, the
CompositorWidgetInitData IPDL type is made into a union which always contains a
headless-specific HeadlessCompositorWidgetInitData struct and under GTK and
Windows also contains an {X11,Win}CompositorWidgetInitData struct.

This also includes a small patch to ensure that the GPU process and
hardware-accelerated compositing are always disabled under headless mode. These
features weren't activated by default in the Linux environments I tested in, but
did end up activating (and then promptly crashing Firefox) when I tested on
Windows.

MozReview-Commit-ID: CocPoHBDV7H
2017-07-06 17:45:34 -07:00
Michael Smith
24ea2df3c2 Bug 1373739 - Make headless widgets hidden by default, matching other platforms. r=bdahl
It seems that my reworking of how the z-index events are sent in the patch
pertaining to active window tracking made it so that we can have headless
widgets default to being invisible again, which matches the behavior on all
other platforms. This then allows us to avoid applying size mode change side
effects while a window/widget is invisible, matching the behavior on Windows and
allowing the relevant web platform tests to pass despite the low screen
resolution with which we run Windows VMs in testing (eg.
open-features-non-integer-height.html).

MozReview-Commit-ID: 3xnaEn7RImP
2017-07-11 13:57:25 -07:00
Michael Smith
61d1f61a67 Bug 1373739 - Use ClientLayerManager in headless mode. r=dvander,jrmuizel
This fixes a series of issues uncovered by the Web Platform Tests.

The most immediately noticeable symptom was that, during shutdown, PuppetWidgets
on the client side attempted to delete shadow layers that were never created on
the compositor side. The usage of BasicLayerManager in all other widgets due to
headless mode meant that the PLayerTransactionParent was never initialized with
a layer manager, and thus discarded all transaction messages it received but not
delete layer messages.

The effects of only using BasicLayerManager in headless mode also showed up in
the web platform reftests, which ended up as blank white boxes in e10s mode as
the compositor thread never received paint instructions. Switching over to
using ClientLayerManager in headless mode causes these paint instructions to be
relayed.

In order to make ClientLayerManager work under headless mode, it was necessary
to implement a HeadlessCompositorWidget and hook that up to the CompositorWidget
creation function in widget/gtk. A follow-up patch will be necessary to hook up
the same for the other supported widget platforms.

MozReview-Commit-ID: 8vB3lrxP7iX
2017-06-21 08:50:02 -07:00
Michael Smith
873d91d1cb Bug 1373739 - Simulate window activation events in headless mode. r=jrmuizel
This is necessary for focus events to propagate correctly. Otherwise,
/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.html in the
Web Platform Tests fails, for example.

MozReview-Commit-ID: 69GItIaQWfr
2017-06-21 08:51:39 -07:00
Brendan Dahl
9d1b131459 Bug 1355150 - Enable headless mode on windows. r=automatedtester, r=jrmuizel 2017-06-20 15:27:02 -07:00
Brendan Dahl
33bafea67f Bug 1367227 - Part 1 - Match headless fullscreen behavior to other widget backends. r=jrmuizel
Restore size mode after leaving fullscreen. Also, trigger fullscreen
and size mode changed events during MakeFullScreen.
2017-05-31 16:29:10 -07:00
Brendan Dahl
04fa02f879 Bug 1356681 - Expand headless mode support for linux. r=automatedtester,jrmuizel,kanru
Full Firefox on Linux can now be run with a --headless flag.
This includes seven parts:
1) Running all marionette tests in headless mode.
2) Prevents crashes where Firefox calls into GTK.
3) Adds a headless screen helper which supports changing the headless
screen size with the environment variables MOZ_HEADLESS_WIDTH and
MOZ_HEADLESS_HEIGHT.
4) Supports simulating moving a headless window.
5) Adds a stubbed out nsSound implementation.
6) Supports simulating size mode changes of headless windows.
7) Adds the --headless flag for Firefox.
2017-05-18 17:47:10 -07:00
Brendan Dahl
85f151ac59 Bug 1338004 - Add headless browser mode. r=jrmuizel, r=ted
Supports creating a windowless browser on Linux without an X server. Most of the
changes are just adding branches to avoid calls in to GTK which calls
into X. Some of the bigger additions were adding a separate headless widget
which implements just enough to render a page. A headless look and
feel were also added since there are many calls into GTK in the platform
specific one.
2017-04-04 10:22:00 -04:00