Bug 1022612. Part 1: Always pass a frame to AutoBuildingDisplayList. r=mattwoodrow

--HG--
extra : rebase_source : c76f7af7e65a4e98dc3ee0a8309d0c05e02cf82e
Bug 1022612. Part 2: Remove unused nsDisplayWrapList constructor. r=mattwoodrow

--HG--
extra : rebase_source : df4241bf3f2a646b45c8653c0e36f9eea1cf823e
Bug 1022612. Part 3: Rename "cached frame" to "current frame" in nsDisplayListBuilder and take advantage of the fact it's always set. r=mattwoodrow

--HG--
extra : rebase_source : 78a1f6886828d88d1a9d4e96d36d86846ebb845f
Bug 1022612. Part 4: Track current dirty rect in nsDisplayListBuilder. r=mattwoodrow

We need this to set the initial visible rect during display list construction.
Eventually we'll also be able to get rid of the dirty rect parameter to
nsIFrame::BuildDisplayList.

--HG--
extra : rebase_source : 1ba0444270986dd799a27e4373ca16525f3ced6c
Bug 1022612. Part 5: BuildDisplayListForExtraPage needs to pass the correct dirty rect in. r=mattwoodrow

When printing, every page has the same origin. So doing this change naively
would result in the first page having all the display items for every page
added to it, and all but the first page's display items being pruned
away by PruneDisplayListForExtraPage. This would making printing long documents
very slow. We avoid that problem with the new check for
NS_FRAME_FORCE_DISPLAY_LIST_DESCEND_INTO, so the only pages other than the
current page we descend into are the ones with placeholders for abs-pos content
on the current page.

--HG--
extra : rebase_source : 5e07ef9e894ef41d36d4daf4498a14d5163da337
Bug 1022612. Part 6: Set the initial mVisibleRect for each display item to the dirty rect when we create the item. r=mattwoodrow

--HG--
extra : rebase_source : 23fb5aefd5de004ca89037724aff7b34e1a5864e
Bug 1022612. Part 7: Enable APZC for IPC reftests. r=billm

--HG--
extra : rebase_source : 2b6f6af95eaa2fdc1a5cc63ff2e907ddf8e8b83c
Bug 1022612. Part 8: nsDisplayWrapList (but not subclasses) should return true for ShouldFlattenAway. r=mattwoodrow

Also the assertion in TryMerge is going away because we're going to do TryMerge
first in FrameLayerBuilder.

--HG--
extra : rebase_source : d6343f0a7cb26f9848c2d2b8d46bb1787d3ae632
Bug 1022612. Part 9: nsDisplayScrollInfoLayer destructor does not need to destroy ScrollLayerCount. r=mattwoodrow

Getting the timing of this right without processing display items in reverse
order is hard. But it doesn't matter if this property sticks around anyway.

--HG--
extra : rebase_source : 9c94f2091818bb50b31a584a53c572007cd6d0e6
Bug 1022612. Part 10: Implement merging and flattening in ProcessDisplayItems. r=mattwoodrow

BuildContainerLayerFor now has to be able to mutate the passed-in display item
list.

--HG--
extra : rebase_source : 6a9727998a5ffb01896a4a2bbdd8d30a24c89dcd
Bug 1022612. Part 11: Set opaque flag on nsDisplayList if we find an opaque item that covers the whole list. r=mattwoodrow

This is less general than what nsDisplayItem::ComputeVisibility does. This means
if multiple opaque items together cover the list bounds, but not individually,
we won't mark the list as opaque. I think that should be OK.

--HG--
extra : rebase_source : 43dced732123617f85f360d13861b01d70fddef5
Bug 1022612. Part 12: Propagate NeedsTransparentSurface in ProcessDisplayItems. r=mattwoodrow

--HG--
extra : rebase_source : ed15b100438912f12e3c556d2a6a43e8387b2981
Bug 1022612. Part 13: Set mDidComputeVisibility in ProcessDisplayItems. r=mattwoodrow

--HG--
extra : rebase_source : c1a929e549c437388aa308b3dfda68b923eb0236
Bug 1022612. Part 14: Don't compute a final transparent region anymore. r=mattwoodrow

Computing this via FrameLayerBuilder is some work and we don't really have to.

SuppressComponentAlpha will be true in more cases. This will be OK as long as
text in the chrome window is over opaque content in the same ThebesLayer. We
will miss some edge cases such as text in 'opacity' with no opaque background.
This should be OK.

--HG--
extra : rebase_source : dc8bbdd564cc99df1286921e59642648779b9c4a
Bug 1022612. Part 16: No need to exclude final transparent region from window opaque region. r=mattwoodrow

The removed code should be a no-op as long as the window opaque region is
accurate enough.

--HG--
extra : rebase_source : c48e2ecaa9e7653708681011cd335d377d5bfaba
Bug 1022612. Part 17: RecordFrameMetrics should not set layer visible regions. r=mattwoodrow

This is unnecessary. FrameLayerBuilder sets the correct region.

--HG--
extra : rebase_source : b2c3694cfa2af182c8b2006633efa35a50616642
Bug 1022612. Part 18: When ComputeVisibility returns false, RecomputeVisibility should avoid painting the item. r=mattwoodrow

--HG--
extra : rebase_source : b11f832b412b75e9868306908a5e08fe9724a603
Bug 1022612. Part 19: Test that merged display item lists merge their contents in the correct z-order. r=mattwoodrow

Prior to this patch, the only tests that caught this were a couple of obscure
cases on B2G. This test tests it on all platforms.

--HG--
extra : rebase_source : 2534f87eec88d5eba40726032e74ce85ac13be64
Bug 1022612. Part 20: Do the business. r=mattwoodrow

--HG--
extra : rebase_source : a87960893a3cdf6661f25091ae9fd28b247a464b
Bug 1022612. Part 21: Remove DidComputeVisibility checking. r=mattwoodrow

--HG--
extra : rebase_source : dc32021b0ba919d68a93f555cc8430e1d0a741a4