Commit Graph

348 Commits

Author SHA1 Message Date
Kartikaya Gupta
2331dd79fe Bug 1384616 - Change how display items put their APZ-relevant info into the WebRenderScrollData. r=jrmuizel
Instead of the WebRenderLayerScrollData code knowing about all the
different display item types, it makes more sense to move this logic
into the display items.

In addition to avoiding dis-encapsulating the data from nsDisplayItem subclasses,
this makes it easier to handle two specific scenarios:
(1) the case where an nsDisplayItem A subclasses another nsDisplayItem B, but A
and B have different types returned by GetType(). Previously A and B would have
to be handled explicitly in the WebRenderLayerScrollData switch statements,
which doesn't scale well if new types are added. With the new approach the
virtual function is shared down from A to B and so takes care of it. This is
particularly relevant for types like nsDisplayOwnLayer which have a number of
subclasses.

(2) the case where a display item *might* have APZ-relevant information.
In this case the type of the item alone is not sufficient to determine
if we need to create a new WebRenderLayerScrollData for it. Instead, we
need to access specific state inside the display item. This is now
handled by the UpdateScrollData function returning true when passed
nullptr arguments, and replaces the switch statement in
WebRenderLayerManager that updated forceNewLayerData.

MozReview-Commit-ID: FlfHlgSccSn
2017-07-31 15:27:29 -04:00
Kartikaya Gupta
efc5247cf2 Bug 1384181 - Build WebRenderLayerScrollData instances for remote layer trees. r=jrmuizel
This adds handling for nsDisplayRemote frames, so that we create a
WebRenderLayerScrollData item for each nsDisplayRemote frame that we
encounter. This is the equivalent of a "ref layer" in a normal layer
tree, and allows the APZ side to glue together the scroll data from
different processes into a full tree.

MozReview-Commit-ID: 3lgsqtCKQya
2017-07-26 14:47:48 -04:00
Kartikaya Gupta
3c16f126d7 Bug 1383204 - Create webrender commands for the nsDisplayRemote display item. r=ethlin
This allows us to turn on layers-free mode in the firefox UI process,
and have it work better in that the content process' content actually
shows up.

MozReview-Commit-ID: qBnfueYmuf
2017-07-25 08:18:49 -04:00
Kartikaya Gupta
4343e4c3b9 Bug 1383204 - Change helper function's return type to be more strongly typed. r=mattwoodrow
No functional change here, but this makes the next patch simpler.

MozReview-Commit-ID: BzdmQ243VeI
2017-07-25 08:18:46 -04:00
Kartikaya Gupta
42cb4c0677 Bug 1383204 - Remove unused function parameter. r=mattwoodrow
MozReview-Commit-ID: JtJAHdHBqNd
2017-07-25 08:18:41 -04:00
Kris Maglione
da63a37845 Bug 1379046: Use the correct LayerManager everywhere. r=kats
MozReview-Commit-ID: 4eTQxraxGK0
2017-07-06 19:46:59 -07:00
Kris Maglione
1dc4116e58 Bug 1362462: Fallback to main document widget for frames which haven't been inserted yet. r=mconley
MozReview-Commit-ID: Ayr2kQ9KqbW
2017-05-29 13:16:23 -07:00
Peter Van der Beken
d697b27ee6 Bug 558184 - Part 8 - Load js plugins in a separate process. r=billm.
Every JS plugin is assigned a unique ID. When an instance of a JS plugin is created the
frame loader that we use to load the plugin's handler URI will create a special
TabContext. This TabContext causes the ContentParent to use the process for this specific
JS plugin (creating one if it hasn't already) when it creates the PBrowser actors.
This causes the iframes for all the instances of a specific JS plugin to be grouped in the
same process.
2017-05-29 12:38:46 +02:00
Kris Maglione
252338aa41 Bug 1353060: Use the correct layer manager for frameloaders in <popup>s. r=kats,mattwoodrow
Currently, we only correctly support remote layer trees for frameloaders that
use the same layer manager as their document. Since we need to be able to host
remote <browser> content in popup widgets for remote WebExtensions, we need to
tie the frameloaders to the layer manager of their host element, rather than
the root layer manager for the document.

MozReview-Commit-ID: 4RCsamFBiQw
2017-04-17 21:41:18 -07:00
Kartikaya Gupta
c861a54205 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
Kris Maglione
602d505b96 Bug 1353060: Use the correct layer manager for frameloaders in <popup>s. r=kats,mattwoodrow
Currently, we only correctly support remote layer trees for frameloaders that
use the same layer manager as their document. Since we need to be able to host
remote <browser> content in popup widgets for remote WebExtensions, we need to
tie the frameloaders to the layer manager of their host element, rather than
the root layer manager for the document.

MozReview-Commit-ID: 4RCsamFBiQw
2017-04-17 21:41:18 -07:00
Kartikaya Gupta
60180cd488 Bug 1350638 - Remove sync GetCompositorOptions call in TabChild::ReinitRenderingState. r=dvander
This piggybacks the sync message on the pre-existing
EnsureLayersConnected sync message pathway to the compositor.

MozReview-Commit-ID: DfYTlJrr3Gu
2017-04-09 17:31:24 -04:00
Kartikaya Gupta
eeb5724c1f Bug 1350638 - Remove sync GetCompositorOptions call added in the last patch. r=dvander
This call should be a no-op in the real world, and should be safe to
remove. The patch also adds an assert to ensure that the call is
effectively a no-op.

MozReview-Commit-ID: BXdcnHULWW2
2017-04-09 17:31:06 -04:00
Kartikaya Gupta
1bcda612ce Bug 1350638 - Remove sync GetCompositorOptions call in TabChild::InitRenderingState. r=dvander
The goal of this patch is to remove the call to the sync IPC
GetCompositorOptions message from TabChild::InitRenderingState. In order
to this, we have InitRenderingState take the CompositorOptions as an
argument instead, and propagate that backwards through the call sites.
Eventually we can propagate it back to a set of already-sync IPC
messages in PCompositorBridge that are used during layers id
registration (NotifyChildCreated, NotifyChildRecreated, etc.). Therefore
this patch effectively piggybacks the CompositorOptions sync IPC onto
these pre-existing sync IPC messages.

The one exception is when we propagate it back to the AdoptChild call.
If this message were sync we could just use it like the others and have
it return a CompositorOptions. However, it is async, so instead we add
another call to GetCompositorOptions here temporarily. This will be
removed in the next patch.

MozReview-Commit-ID: AtdYOuXmHu4
2017-04-09 17:30:27 -04:00
David Anderson
d4e994a584 When using the GPU process, combine layer ownership and window mapping into a single IPC message. (bug 1350660 part 1, r=rhunt, r=billm) 2017-04-03 15:13:37 -07:00
Kartikaya Gupta
e875155212 Bug 1351777 - Use a BasicLayerManager in the content process if the corresponding parent-side layer manager isn't connected to the compositor. r=dvander
There are scenarios where we have a TabParent in the UI process hooked up to
a PuppetWidget with a BasicLayerManager. Webextensions fall into this category.
In this scenario, the parent-side layer manager is not hooked up to
the compositor (that is, there is no entry in the CompositorBridge layer tree
state map for the layers id). However, the content-side still ends up creating
a ClientLayerManager or a WebRenderLayerManager, which expects the layers id to
be registered in the compositor. This results in brokenness (in the case of the
ClientLayerManager/PLayerTransaction) or crashes (in the case of WebRenderLayerManager/
PWebRenderBridge). Instead, this patch changes this scenario to have the content
process use a BasicLayerManager which seems safer.

MozReview-Commit-ID: 3f80aZrRrmD
2017-03-31 11:43:21 -04:00
Kartikaya Gupta
903533a5b8 Bug 1351777 - Remove aSuccess argument to RenderFrame constructor. r=dvander
Instead we can use the otherwise-unused function to check if initialization worked.
Technically, because of the way RenderFrame construction works, whether or not
initialization succeeds is exactly dependent on whether or not the frameloader is
non-null, so we could even just use that to check success. But this feels slightly
more readable/cleaner.

MozReview-Commit-ID: CGiIAA1h6V7
2017-03-31 11:43:21 -04:00
Kartikaya Gupta
bb2269ec2b Bug 1351777 - Remove trivial function. r=dvander
There is already a GetLayersId function in RenderFrameParent.h that does the
exact same thing, and this private function is only used in one spot. Seems
unnecessary.

MozReview-Commit-ID: 6i7lwKQsSFM
2017-03-31 11:43:20 -04:00
David Anderson
80fa3494e1 Remove references to the Direct3D9 compositor. (bug 1318558 part 1, r=mattwoodrow) 2017-03-08 00:17:36 -08:00
sotaro
610775e692 Bug 1335336 - Add LayerManager::GetCompositorBridgeChild() r=nical 2017-02-01 16:12:37 +09:00
Kartikaya Gupta
17245d5f13 Merge m-c to graphics
MozReview-Commit-ID: KhxBqJbwxv8
2016-12-06 23:45:24 -05:00
sotaro
f218c79e98 Bug 1321183 - Deliver TextureFactoryIdentifier r=nical 2016-12-01 12:02:37 +09:00
Kartikaya Gupta
f29c4ef71d Merge m-c to graphics
MozReview-Commit-ID: Cj1AAiaHUNH
2016-11-23 11:09:56 -05:00
Mozilla Graphics Team
1f923fd38d Bug 1317774 - Add non-gfx code needed to use WebRender in gecko. r=gfx
This completes the migration of code from the github branch to the graphics
project repo. At this point all webrender-related code should be disabled
unless --enable-webrender is provided in the mozconfig.

MozReview-Commit-ID: Dea8rxM6UPL
2016-11-16 08:54:51 -05:00
David Anderson
068e389bda Mark RenderFrameParent as initialized even if it failed to message the remote compositor. (bug 1319310, r=billm) 2016-11-22 13:01:08 -08:00
Kan-Ru Chen
1b9dd22e2d Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm
We will use the new type for the generated IPDL message handler
prototype to make sure correct error handling method is called.

MozReview-Commit-ID: AzVbApxFGZ0
2016-11-15 04:26:00 +01:00
Ting-Yu Lin
db635bcd47 Bug 1304598 Part 6 - Rename nsViewportFrame.h/cpp to ViewportFrame.h/cpp, and move exported header to mozilla/ subdir. r=dholbert
The class ViewportFrame doesn't have ns-prefix, so it's better to drop the
ns-prefix in the file names to avoid confusion.

MozReview-Commit-ID: 8Jrmfzb3tVR
2016-11-30 11:14:29 +08:00
Matt Woodrow
2cdb3a11b4 Bug 1314186 - Resync LayerTreeId mappings to the GPU process if it restarts. r=dvander 2016-11-03 09:55:07 +13:00
Kartikaya Gupta
04cc737e18 Bug 1306603 - Remove rest of mozpasspointerevents code as it is not needed any more. r=kanru
MozReview-Commit-ID: 5N3hUq2lGuU
2016-10-05 08:27:02 -04:00
Kartikaya Gupta
73c39bd08a Bug 1306644 - Have TabParent call TakeFocusForClickFromTap rather than doing it over a sync IPC roundtrip. r=dvander
MozReview-Commit-ID: 4anzBR6YoA
2016-09-30 15:03:42 -04:00
David Anderson
58dfb0992b Recreate PLayerTransactions for TabChildren when the compositor restarts. (bug 1300936 part 4, r=mattwoodrow, r=billm) 2016-09-20 01:19:32 -07:00
George Wright
4aedf7fcc6 Bug 1297565 - Handle failure from calling CompositorBridgeChild::SendNotifyChildCreated() in RenderFrameParent::Init() r=mattwoodrow 2016-09-13 22:58:54 -04:00
Matt Woodrow
75d4a848c5 Bug 1237102 - Make sure we don't generate invalidations for children of opacity:0 frames, even when plugins are present. r=tnikkel 2016-08-10 15:15:28 +12:00
Matt Woodrow
352a874990 Bug 1265468 - Invalidate all layers when dragging a tab to a new window. r=nical 2016-05-26 18:40:07 +12:00
Sebastian Hengst
ded5f126fa Backed out changeset 4d417e2c21ff (bug 1265468) for asserting in LayerManagerComposite.cpp on OS X 10.10 debug with e10s. r=backout 2016-05-26 10:45:39 +02:00
Matt Woodrow
15313030d5 Bug 1265468 - Invalidate all layers when dragging a tab to a new window. r=nical 2016-05-26 18:40:07 +12:00
David Anderson
377d55cdb8 Move Alloc/DeallocLayerTreeId calls to GPUProcessManager. (bug 1274149 part 3, r=mattwoodrow) 2016-05-23 00:27:57 -07:00
Wes Kocher
9a683a7c55 Backed out 5 changesets (bug 1274149) for intermittent failures in apz tests CLOSED TREE
Backed out changeset 1117598ac875 (bug 1274149)
Backed out changeset 540cb6d10745 (bug 1274149)
Backed out changeset 057223823e5d (bug 1274149)
Backed out changeset 9932689ab717 (bug 1274149)
Backed out changeset a22a53c503a6 (bug 1274149)
2016-05-23 13:01:22 -07:00
David Anderson
3a4fe10b40 Move Alloc/DeallocLayerTreeId calls to GPUProcessManager. (bug 1274149 part 3, r=mattwoodrow) 2016-05-23 00:27:57 -07:00
Cameron McCormack
98ad26ea1a Bug 1261754 - Part 7: Move pointer-events from nsStyleVisibility to nsStyleUserInterface. r=dholbert 2016-04-12 15:52:41 +10:00
Mike Conley
5f8de74236 Bug 1251032 - Make it possible to assign a frameloader to RenderFrameParent after construction. r=kanru
MozReview-Commit-ID: 4a8fzR7Vpac
2016-03-29 12:49:07 -04:00
Mike Conley
b3a0aa7e05 Bug 1251032 - Don't return layersId or textureFactoryIdentifier as outparams in RenderFrameParent constructor. r=kanru
MozReview-Commit-ID: JqcrHsNW25j
2016-03-29 12:42:05 -04:00
David Anderson
7b7cd394cc Rename PCompositor to PCompositorBridge. (bug 1258479 part 2, r=mattwoodrow) 2016-03-22 14:08:38 -04:00
David Anderson
a576a097a4 Remove some static_casting in CompositorParent. (bug 1245765 part 5, r=mattwoodrow) 2016-02-29 01:53:14 -05:00
Peter Van der Beken
2998bad48a Bug 1020199 - Make sure APZ works with nested oop iframe. r=kats, r=dvander. 2016-01-08 20:17:39 +01:00
Randall Barker
b474749936 Bug 1231517 - part 3, Add ZoomToRect function to nsIWidget classes r=kats 2016-01-20 16:24:59 -08:00
Botond Ballo
13362d389b Bug 1221371 - Remove unnecessary explicit copies of nsTArray. r=billm 2015-11-18 13:48:12 -05:00
Gijs Kruitbosch
15a23da0f2 Bug 1221947 - part 3: pass touch information to focus manager in RenderFrameParent, r=kats 2015-11-16 14:03:35 +00:00
Kartikaya Gupta
70ea97a295 Bug 898075 - Remove the mozbrowserasyncscroll event from Gecko. r=botond,kanru,sicking 2015-11-11 10:17:47 -05:00
Bill McCloskey
6e4dd6a29c Bug 1221371 - Switch chromium IPC code to use mozilla::Tuple (r=jld,cpearce,kats) 2015-11-09 10:21:11 -08:00