Commit graph

417 commits

Author SHA1 Message Date
Milan Sreckovic
bd27b86da3 Bug 1423559: Use BaseRect access methods instead of member variables in widget/ r=mstange
MozReview-Commit-ID: AqnztoUbsmk

--HG--
extra : rebase_source : 76a232a08b42ed73b4922c03bc0f2e9d1769203b
2018-01-10 11:14:16 -05:00
Kartikaya Gupta
2aaf6edd31 Bug 1425878 - Don't expose raw pointers to refcounted vsync dispatcher object. r=sotaro
MozReview-Commit-ID: 5ywkZqfY8uZ

--HG--
extra : rebase_source : 3a887a5765fb0f7c2b5acdc8be94f3ea84199081
2017-12-18 13:33:56 -05:00
Robin Grenet
34508b32f6 Bug 1360278 - Add preference to trigger context menu on mouse up for GTK+ and macOS, r=mstange,smaug
MozReview-Commit-ID: Bg60bD8jIg6

--HG--
extra : rebase_source : cc8bd5796096f49ad4fdab81885a426afd6117e4
2017-11-16 13:35:58 +01:00
Kevin Chen
49b2130100 Bug 1415469 - Remove mDeviceResetSequenceNumber from TDR process since we don't need it anymore; r=dvander
MozReview-Commit-ID: 3uQQwW8QOJA

--HG--
extra : rebase_source : ab6090ad51a2a4714f1739a30d854d624d187239
2017-11-08 15:26:43 +08:00
sotaro
bce40231ea Bug 1390741 - Use BasicCompositor if widget type does not support acceleration r=aosmond,kats 2017-11-03 16:38:34 +09:00
Botond Ballo
2c1a3530e6 Bug 1340415 - Ensure main-thread and async autoscrolling do not happen at the same time. r=kats
The two happening at the same time can lead to the APZ autoscroll being
cancelled due to APZ receiving a main-thread scroll offset update.

To achieve this:

  - The content process assumes APZ is handling the autoscroll until
    told otherwise.

  - If the parent process knows APZ won't handle an autoscroll, it
    tells the content process via its response to the Autoscroll:Start
    message. This covers all cases where APZ doesn't handle the
    autoscroll, except the case where APZCTreeManager itself rejects
    the autoscroll and it lives in the compositor process rather than
    the parent process.

  - If APZCTreeManager rejects an autoscroll and it lives in the
    compositor process, it sends an 'autoscroll-rejected-by-apz' message
    to the content process.

MozReview-Commit-ID: L62v4COai6W

--HG--
extra : rebase_source : bc4c6417e77461634263defb88e67ed5036c454e
2017-10-18 18:18:13 -04:00
Kris Maglione
c2da8a30a3 Bug 1404198: Part 2d - Switch to NS_NewTimer* in widget. r=njn
MozReview-Commit-ID: G4S8q9DYPS0

--HG--
extra : rebase_source : 9c6da05bf2ef3cfee551879879330a85688b1f5d
2017-10-15 23:12:54 -07:00
Nicholas Nethercote
bff3932f55 Bug 1402743 - Remove nsIDOMWindowUtils::getCursorType(). r=bkelly.
It has no users in mozilla-central or comm-central. This also lets us remove
nsBaseWidget::GetCursor().

--HG--
extra : rebase_source : 3875ce37c78f82285c4e5dbd8133e9ae3dafa0de
2017-09-25 11:46:07 +10:00
Jim Mathies
2a7901349f Bug 1387507 - Remove a11y e10s checks and preferences. r=felipe 2017-09-08 09:31:06 -05:00
Kirk Steuber
6e217001f8 Bug 1362382 - Move RegisterDragDrop to be called during idle time, if possible r=jimm
Additionally, do not call RegisterDragDrop for hidden windows.

MozReview-Commit-ID: Fv8j9FntGGT

--HG--
extra : rebase_source : fccbc576887d000805da8ac915d16fc4fddfeceb
2017-08-30 11:18:25 -07:00
sotaro
11c145a7c1 Bug 1394338 - Add WebRender error handling to RendererOGL r=nical 2017-08-30 09:10:22 +09:00
Tom Ritter
52deded719 Bug 1393536 Clean up unused variables in widget/ r=jimm
MozReview-Commit-ID: 9NBzIriF8NU

--HG--
extra : rebase_source : da185c4e55d066ec61b534d32a06d7d1819d35ca
2017-08-25 10:39:30 -05:00
Sebastian Hengst
765cc1b925 merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: JhesEg4Bxjy
2017-08-04 19:28:27 +02:00
sotaro
a773ee4276 Bug 1354411 - Rebuild CompositorSessions if WebRender is disabled r=kats
When WebRender creation is failed, WebRender is disabled in gecko. There is a case that WebRenderBridgeParents exist when WebRender is disabled. To handle this, gecko needs to rebuild all CompositorSessions.

There is also a problem related to gfxVars::UseWebRender on compositor thread. If e10s is enabled, but no-gpu process(default on linux and mac), gfxVars::UseWebRender change is soon notified by compositor thread tasks. If WebRender creation failure happens at 2nd WebRender creation, several WebRenderBridgeParents for 1st WebRender could exist. IPC messages from WebRenderLayerManager are normally async, then there is a chance that the WebRenderBridgeParents receive the messages after the gfxVars::UseWebRender change. Further the gfxVars::UseWebRender change in content process could be delayed than WebRenderBridgeParents, then content process does not have a way to stop sending PWebRenderBridge IPC until the change of gfxVars::UseWebRender is received. WebRenderBridgeParent related tasks handle the message, but some tasks are done based on gfxVars::UseWebRender. At this time, gfxVars::UseWebRender returned false on compositor thread, then it cause unexpected result for WebRenderBridgeParent and WebRender. To addres this inconsistent situation, WebRenderBridgeParent related tasks on compositor thread stop to use gfxVars::UseWebRender.
2017-08-04 14:36:41 +09:00
Michael Smith
6fcebfbe5b 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

--HG--
extra : rebase_source : 4581fa63aa3a9f32a8dc2672015a35b9be01b20f
2017-07-06 17:45:34 -07:00
Botond Ballo
e54b8b4984 Bug 1105109 - Have the parent process notify APZ of the start and stop of autoscrolling. r=kats
The messages are routed through nsITabParent, nsIWidget, and IAPZCTreeManager
(the latter possibly remoted via PAPZCTreeManager if out-of-process compositing
is used).

MozReview-Commit-ID: 1zXzLa1fqpG

--HG--
extra : rebase_source : c482816ecbaec0a889d817851ee15be186b2a49c
2017-07-26 19:33:02 -04:00
Wes Kocher
40c3480d89 Merge inbound to central, a=merge
MozReview-Commit-ID: JNxfwQh0cac

--HG--
rename : gfx/layers/wr/WebRenderCompositableHolder.h => gfx/layers/wr/AsyncImagePipelineManager.h
2017-07-28 17:40:43 -07:00
sotaro
b8bc54df5a Bug 1372880 - Add WebRender creation failure handling r=aosmond 2017-07-28 18:22:21 +09:00
Masayuki Nakano
333068f586 Bug 1384027 - part2: Move PuppetWidget::NotifyIMEInternal() implementation to PuppetWidget::NotifyIME() which is a method of TextEventDispatcherListener, not nsIWidget r=m_kato
nsIWidget::NotifyIME() should call only TextEventDispatcher::NotifyIME() if it's necessary.  Then, TextEventDispatcher::NotifyIME() calls TextEventDispatcherListener::NotifyIME() if it's necessary.  E.g., requests to IME are necessary only for TextInputProcessor or native IME handler because the composition is only owned by one of them.  However, notifications are necessary for both of them since focused editor contents and its focus state are shared.

So, it doesn't need to call nsBaseWidget::NotifyIMEInternal() if all NotifyIMEInternal() implementations are moved to proper TextEventDispatcherListener::NotifyIME().  Currently, nsBaseWidget::NotifyIMEInternal() is implemented only by PuppetWidget.  It sends notifications and requests to the parent process for native IME.  Therefore, we can move NotifyIMEInternal() implementation to TextEventDispatcherListener::NotifyIME() which is implemented by PuppetWidget.

This patch moves PuppetWidget::NotifyIMEInternal() implementation to PuppetWidget::NotifyIME() of TextEventDispatcherListener class, not of nsIWidget and removes NotifyIMEInternal() completely.

With this change, handling order is changed.  Old behavior is, TextEventDispatcher::NotifyIME() calls TextEventDispatcherListener::NotifyIME() before handling NOTIFY_IME_OF_FOCUS and then, nsBaseWidget::NotifyIME() sends the notification to the parent process.  However, new behavior is, the notification is sent before TextEventDispatcher::NotifyIME() handles NOTIFY_IME_OF_FOCUS.  Therefore, with new handling order, TextEventDispatcher can have IME notification requests after setting focus correctly.  Additionally, TextEventDispatcher for PuppetWidget updates the notification requests at every event dispatch via TextEventDispatcher::BeginInputTransactionInternal() by the previous patch.

So, with those patches, IMEContentObserver can refer actual IME notification requests correctly even after we'll make focus notification to async message.

MozReview-Commit-ID: JwdQ68BjTXL

--HG--
extra : rebase_source : fbc7e311d83aab3b38fdd5c1b5c24d85458eb77b
2017-07-26 00:09:41 +09:00
Andrew Osmond
69da7c2120 Bug 1381095 - Fallback correctly to non-WebRender if the GPU process/WebRender are disabled when creating a remote compositor session. r=dvander 2017-07-20 09:20:22 -04:00
Kris Maglione
86877fceef Bug 1381097: Part 1 - Add default-false pref to enable APZ in remote popups. r=kats
Ideally, we definitely want APZ in remote popup browsers for the sake of
responsiveness. However, there are currently some serious painting and
checkerboarding issues that make APZ popups unsuitable for release
populations.

Once these issues are addressed, we should enable the preference by default.
But given the relative lack of testing, and the issues we've seen so far, we
should keep the preference so that we can disable it with a hotfix if further
issues arise.

MozReview-Commit-ID: GOZRdsmLNZR

--HG--
extra : rebase_source : ce0f2ca029d951a9c65ec1482e065b6695793133
2017-07-15 12:01:36 -07:00
Masayuki Nakano
c726abb366 Bug 1377672 - part2: IMEStateManager::SetIMEState() should set input context with proper origin information r=m_kato
Currently, IMEStateManager always sets input context as set by current process even when it needs to adjust IME state when a tab parent for current focused IME process is removed.  Then, input context for the widget is marked as for main process but the widget still have IME focus of a remote process.

For fixing this mismatch, IMEStateManager should set ORIGIN_CONTENT even when the tab parent is being destroyed.

MozReview-Commit-ID: C10YOAtkET4

--HG--
extra : source : 9430d123b19e0ac551c6048bb044fcfa22d13e45
2017-07-03 12:28:10 +09:00
Kartikaya Gupta
b13fcdbce3 Bug 1378956 - Don't try starting WebRender on widgets that have transparency. r=jrmuizel
MozReview-Commit-ID: 6AvsxxXCeVv

--HG--
extra : rebase_source : 85276ff6d43c9dd7d96c51957f66c4a47afc99a0
2017-07-06 16:00:43 -04:00
Ryan Hunt
bb5749ccf1 Bug 1351783 part 17 - Do less work when apz.keyboard.enabled is false. r=kats
When keyboard apz is disabled, we don't need to calculate focus targets and
we don't need to update focus state. It should be harmless even if it's done,
but I think it's good to not add something on this critical path that doesn't
do anything.

This commit also disable keyboard map generation in this case too for similar
reasoning. This has the side effect that you can't turn on keyboard apz without
doing a restart.

MozReview-Commit-ID: LxmofT2g7qs

--HG--
extra : rebase_source : 719d29efd80498b824fee03a5be1c1fd05c83074
extra : histedit_source : 7ad71a19782fc6dd203207afbdc7a73a936b3e04
2017-06-06 11:08:45 -05:00
Ryan Hunt
cc923c3909 Bug 1351783 part 6 - Create and send KeyboardMap to APZCTreeManager. r=kats
This commit makes it so we initialize, send, and store a KeyboardMap for every
APZCTreeManager for later keyboard event processing.

This is a naive approach so it may be worth improving.

MozReview-Commit-ID: CYTbLL3wRlC

--HG--
extra : rebase_source : 016b80a2a209d4fb5b92bc3adb95bd2dbb4399e0
2017-06-05 18:35:32 -05:00
Bill McCloskey
f115503a0b Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-26 14:19:58 -07:00
David Anderson
7df9b05034 Add MLGPU feature bits and compositor initialization. (bug 1365879 part 21, r=mattwoodrow) 2017-06-23 14:23:12 -07:00
Carsten "Tomcat" Book
1f871b61e4 Backed out changeset 9d0048e04446 (bug 1365879) 2017-06-23 12:15:32 +02:00
David Anderson
0505938414 Add MLGPU feature bits and compositor initialization. (bug 1365879 part 21, r=mattwoodrow)
--HG--
extra : rebase_source : 3d8d1a9619d997a2de9eea4e734a0457cd326e91
2017-06-22 21:12:19 -07:00
Carsten "Tomcat" Book
8a1350b5a6 Backed out changeset 4f6302a98ae4 (bug 1372405)
--HG--
extra : rebase_source : 41632f3158e88e692809731394a683d065a73dfb
2017-06-21 13:59:26 +02:00
Edgar Chen
273f4b0c7e Bug 1236512 - Part 1: Send "occlusionstatechange" custom event when occlusion state in Mac is changed; f=spohl; r=mstange
MozReview-Commit-ID: GTBeH4UwZiU
2017-05-26 18:09:34 +08:00
Bill McCloskey
6b3e84ed5f Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-20 21:44:11 -07:00
Carsten "Tomcat" Book
e5d9b2a520 Backed out changeset 844d46609652 (bug 1236512) for test failures in own test 2017-06-20 14:30:54 +02:00
Edgar Chen
244552c6fd Bug 1236512 - Part 1: Send "occlusionstatechange" custom event when occlusion state in Mac is changed; f=spohl; r=mstange
MozReview-Commit-ID: GTBeH4UwZiU
2017-05-26 18:09:34 +08:00
Kartikaya Gupta
f2e0962ebb Bug 1339474 - Enable APZ in QuantumRender builds. r=jrmuizel
All reftests that are still failing with APZ enabled are annotated with
a bug number that is tracking the fix.

MozReview-Commit-ID: 8QU15LHVy1t

--HG--
extra : rebase_source : 71908ca38e96e0f6f5a341605e70c3f6670b9237
2017-06-19 15:46:38 -04:00
domfarolino@gmail.com
d4253766db Bug 1274663 - Expose API to trigger device reset. r=dvander
--HG--
extra : rebase_source : 5a9d2757f8e7378083ce42131d5a250027569814
2017-06-15 14:34:00 -04:00
Botond Ballo
4810f9b6a9 Bug 1369074 - Store the layers id in a variable of the proper type (uint64_t) in nsBaseWidget::StartAsyncScrollbarDrag(). r=kats
MozReview-Commit-ID: App50MV57JJ

--HG--
extra : rebase_source : 5892eea589227df0511e63bc260d99ece9cbf9a4
2017-05-31 13:48:01 -04:00
Ryan VanderMeulen
96eca59299 Merge m-c to autoland. a=merge 2017-05-19 12:26:48 -04:00
Masayuki Nakano
872f694c63 Bug 1339543 part 4 Change nsIWidget::ExecuteNativeKeyBinding() to nsIWidget::GetEditCommands() which just retrieves edit commands for the type r=smaug
Now, nsIWidget::ExecuteNativeKeyBinding() isn't used by anybody for executing
edit commands.  Instead, they need array of edit commands for the key
combination.  So, the method should be renamed to GetEditCommands() and just
return edit commands as an array.

MozReview-Commit-ID: 4G0B1lJ8Lbe

--HG--
extra : rebase_source : 4a5829281d59677c773950c34d91a1cd8074d243
2017-05-19 17:49:41 +09:00
Kartikaya Gupta
643cd662e4 Bug 1364987 - Remove the pref to allow APZ with webrender. r=rhunt
People seem to be turning on this pref in the wild and generating crash reports
which are wasting time and energy of people who have better things to do.

MozReview-Commit-ID: 5VfjKaDluYJ

--HG--
extra : rebase_source : fa2237835d842ddb118c6ba6096f6b703aef9d81
2017-05-16 09:43:36 -04:00
Stephen A Pohl
99336e02ef Bug 429824: Properly forward native OSX events to the native menu bar if they haven't been handled by the child process in e10s. r=mstange,masayuki 2017-05-15 22:59:35 -04:00
David Anderson
57800cc0bd Handle in-process device resets by recreating the entire rendering stack. (bug 1363126 part 2, r=rhunt) 2017-05-11 22:44:27 -07:00
Kris Maglione
37bcd40492 Bug 1353060: Allow APZ in popup window widgets. r=kats
Prior to this patchset, we never hosted remote, scrollable content in widgets
other than toplevel and child windows, so all other widget types have APZ
disabled. Since we now need to host remote content in popup widgets, and would
like similar performance and behavior for those browsers as other remote
browsers, we also need to enable APZ for those widgets too.

MozReview-Commit-ID: AVDt9U5i2WK
2017-04-17 13:29:56 -07:00
Kartikaya Gupta
9e5e792b0f Back out bug 1353060 (3 csets) for possibly causing a checkerboarding regression. r=backout
MozReview-Commit-ID: AIHvzAUUCeu
2017-05-09 13:23:20 -04:00
David Anderson
af30648746 Make PLayerTransaction's constructor async. (bug 1350634, ipc_r=billm, r=mattwoodrow, r=kats)
PLayerTransaction's constructor was previously synchronous so we could
return a TextureFactoryIdentifier. This is quite reliably available
already in the case of opening a tab, due to RenderFrameParent knowing
which compositor it is attached to, so we can make the constructor
asynchronous.

In the top-level widget case, we add a new synchronous message to find
the TextureFactoryIdentifier.
2017-05-05 10:53:17 -07:00
Kris Maglione
dc3d84653a Bug 1353060: Allow APZ in popup window widgets. r=kats
Prior to this patchset, we never hosted remote, scrollable content in widgets
other than toplevel and child windows, so all other widget types have APZ
disabled. Since we now need to host remote content in popup widgets, and would
like similar performance and behavior for those browsers as other remote
browsers, we also need to enable APZ for those widgets too.

MozReview-Commit-ID: AVDt9U5i2WK

--HG--
extra : rebase_source : a9482d966b9d910fe0f989f2ff5daf49d60033c8
extra : histedit_source : 4c039c182535acdc690abbc8201db749169e9b80
2017-04-17 13:29:56 -07:00
Phil Ringnalda
6b129efd40 Backed out changeset 867fcd3e181d (bug 1350634) for leaking in sessionstore's browser-chrome tests
MozReview-Commit-ID: 7NS2GkfZSp0
2017-04-30 21:14:10 -07:00
David Anderson
d7a1f66c55 Make PLayerTransaction's constructor async. (bug 1350634, ipc_r=billm, r=mattwoodrow, r=kats)
PLayerTransaction's constructor was previously synchronous so we could
return a TextureFactoryIdentifier. This is quite reliably available
already in the case of opening a tab, due to RenderFrameParent knowing
which compositor it is attached to, so we can make the constructor
asynchronous.

In the top-level widget case, we add a new synchronous message to find
the TextureFactoryIdentifier.
2017-04-30 17:22:56 -07:00
Kris Maglione
e162499bf5 Bug 1365660: Part 4 - Only enable APZ for popups which contain remote content. r=kats
We only ever need to enable APZ for popups which contain remote content. In
theory, enabling it for other popups shouldn't hurt, but having it enabled
adds overhead that we'd rather avoid, and causes painting issues under some
circumstances.

Ideally, the painting issues should be fixed, but disabling APZ is a good
short term workaround, and we should try to avoid the unnecessary overhead
either way.

MozReview-Commit-ID: AOivnTQBWQh

--HG--
extra : rebase_source : a1636aebdea84235e57922226c64fb987a4937a7
2017-05-16 14:28:20 -07:00
Kris Maglione
444c7656ff Bug 1365660: Part 2 - Add a HasRemoteContent flag to popup widgets that contain remote browsers. r=kats,bas
There are several behaviors that we only need to apply to popups which are
known to contain remote content. And since those behaviors can cause issues
elsewhere, we need to be able to identify popups which should contain remote
content, and treat them specially, where appropriate.

MozReview-Commit-ID: EMFrSP8lZiD

--HG--
extra : rebase_source : 5ee9da422081098d8099a048c7704008a06a7241
2017-05-17 10:16:25 -07:00