Commit Graph

367 Commits

Author SHA1 Message Date
Matt Woodrow
2bcbca93c9 Bug 1436904 - Part 1: Add a static constructor function for display items. r=Bas 2018-02-13 13:43:28 +13:00
Kartikaya Gupta
54e93dc875 Bug 1415225 - Move the EventRegionsOverride field to be on RefLayers only. r=botond
We now set EventRegionsOverride flags on ref layers only, so
there's no need to have the APIs to set it on container layers in
general.

MozReview-Commit-ID: JKU4UXvdR2e
2017-11-09 09:03:52 -05:00
Mats Palmgren
2544eb586c Bug 1414666 part 1 - Add nsIFrame::PresShell() for convenient access to the shell. r=emilio
MozReview-Commit-ID: 8FPTPKWyVtY
2017-11-09 03:00:48 +01:00
Daniel Holbert
8fea3c215f Bug 1412346 part 5: (automated patch) Switch a bunch of C++ files in layout to use our standard mode lines. r=jfkthame
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: EuRsDue63tK
2017-10-27 10:33:53 -07:00
Markus Stange
19988c784e Bug 1406715 - Use the RenderFrameParent's content rect as the bounds of the webrender iframe display item. r=kats
It was using the visible rect of the display item before, which can be larger
than the frame for various reasons. But the bounds we pass for the webrender
iframe item determines the iframe's position, so it needs to be informed by the
layout position of the frame, not by circumstances of the paint.

MozReview-Commit-ID: JSmFGLmAm0h
2017-10-22 00:48:01 -04:00
Kartikaya Gupta
cbacb77052 Bug 1403915 - Remove the IsLayersFreeTransaction() machinery and assume it's always true. r=jrmuizel
MozReview-Commit-ID: 7FYVirQ5pal
2017-10-03 16:31:07 -04:00
Morris Tseng
d7ade017fc Bug 1392200 - Add backface-visibility support for layers-free mode. r=kats
For layers-full mode, we set the backface-visibility to visible because
visibility would be handled by FLB and layers.

MozReview-Commit-ID: CUbeUabfC7K
2017-09-21 14:41:38 +08:00
Nicolas Silva
3c8f9ba825 Bug 1393031 - Remove unused nsTArray<WebRenderParentCommand>& parameter all over the place. r=jrmuizel 2017-09-20 13:36:53 +02:00
Sebastian Hengst
fc53f3bd53 Backed out changeset f34a52244cf9 (bug 1393031) 2017-09-14 23:17:35 +02:00
Nicolas Silva
8c829d94a4 Bug 1393031 - Remove unused nsTArray<WebRenderParentCommand>& parameter all over the place. r=jrmuizel 2017-09-14 20:21:54 +02:00
Nicolas Silva
7100d343f6 Bug 1393031 - Use shared memory to pass resource update data. r=jrmuizel 2017-09-14 18:48:55 +02:00
Kartikaya Gupta
65155cd93b Bug 1389143 - Send event regions override information to APZ in layers-free mode. r=jrmuizel
MozReview-Commit-ID: 1jh6sdfe8jX
2017-08-18 13:06:31 -04:00
Kartikaya Gupta
39c1caa4e1 Bug 1389139 - Add transforms for reflayer equivalents in the layers-free APZ world. r=jrmuizel
In normal gecko, RefLayer instances also have a transform, which needs
to be propagated to APZ in layers-free mode.

MozReview-Commit-ID: DaEyvpumG9F
2017-08-16 12:50:37 -04:00
Matt Woodrow
8370362323 Bug 1388162 - Add a Destroy function to nsDisplayItem to use instead of manually invoking the destructor, this will allow us to recycle them in the future. r=mstange
* * *
[mq]: fix

MozReview-Commit-ID: LUXZAIL73BJ
2017-08-07 16:07:43 +12:00
Matt Woodrow
e62cf6dd69 Bug 1388161 - Store the dirty rect on the display list builder rather than passing it as a parameter to BuildDisplayList. r=mstange 2017-08-07 14:23:35 +12:00
Sebastian Hengst
2e92d940f4 Backed out changeset 8f2dd8f13b53 (bug 1388161) for failing chrome's test_animation_performance_warning.html | preserve-3d transform. r=backout 2017-08-10 14:40:21 +02:00
Sebastian Hengst
1e52933103 Backed out changeset e9985564e081 (bug 1388162) for failing chrome's test_animation_performance_warning.html | preserve-3d transform. r=backout 2017-08-10 14:40:20 +02:00
Matt Woodrow
b0bdae09c7 Bug 1388162 - Add a Destroy function to nsDisplayItem to use instead of manually invoking the destructor, this will allow us to recycle them in the future. r=mstange 2017-08-07 16:07:43 +12:00
Matt Woodrow
61b7fddb66 Bug 1388161 - Store the dirty rect on the display list builder rather than passing it as a parameter to BuildDisplayList. r=mstange 2017-08-07 14:23:35 +12:00
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