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

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

--HG--
extra : rebase_source : 5a93b63b19a502f2030331cb77aea8708bb11238
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 : c345a38551ccc2ba40ca4559e599845b5d83f952
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 : d846866a6128bb96903e45e6bd08ef67033bf701
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 : 29c7b2a43f4cb67b4c778851b18dba3e3e2ebd3d
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 : 4d02f7c14c548a614cb0fd3764cab2d3060989f3
Bug 1022612. Part 7: Enable APZC for IPC reftests. r=billm

--HG--
extra : rebase_source : 79e216bfb54db5df2c69b6e3c78fcd421cf5246b
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 : 62594931ff461dc1ae2c744531252d2b3c696ca0
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 : 52cf25ce39a6ab38f89e0231ea044fdf3cac0a2d
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 : c242006445d90372f6c7941d909f30945422321b
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 : 26e5e44fa90000089f1dc64c1cb073d5b1806765
Bug 1022612. Part 12: Propagate NeedsTransparentSurface in ProcessDisplayItems. r=mattwoodrow

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

--HG--
extra : rebase_source : 456aaeba5a9bb3e8d34e0d900dd693f337cf2b12
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 : 8ac6abb8f6b3ab078883935688ae1f5059b797c7
Bug 1022612. Part 15: Add nsDisplayItem::GetVisibleRectForChildren(). r=mattwoodrow

--HG--
extra : rebase_source : 79f4ee133e464d10c82efc78e42ea6dbcb2571c1
Bug 1022612. Part 15.5: Use GetVisibleRectForChildren instead of GetVisibleRect. r=mattwoodrow

--HG--
extra : rebase_source : 67cd76ce64beff29af0a90db76e752585922ddab
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 : ecdfdbd02fdf8df23a71514ada32a8d20926913f
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 : 45ed3e76905a37d1099af8dd907fa86061b5a867
Bug 1022612. Part 18: When ComputeVisibility returns false, RecomputeVisibility should avoid painting the item. r=mattwoodrow

--HG--
extra : rebase_source : 31e8a9ff9419b4aca2743d41db74b5271aae32bf
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 : 7748dde5aa0d51573acec9eb163f864beabefb3b