The first failure in rc1 was:
TEST-UNEXPECTED-FAIL | testAxisLocking | PaintExpecter - blockUtilClear timeout
and the first failure in rc2 (API9) or rc3 (API11) was:
TEST-UNEXPECTED-FAIL | testPanCorrectness | PaintExpecter - blockUtilClear timeout
This makes APZ behave nicely with most uses of a css transform:scale.
Summary of changes:
- FrameMetrics::mCumulativeResolution now includes the css-driven resolution
in addition to the pres-shell resolution.
- Displayports are now stored in Screen pixels rather than Layer pixels.
This is what we want anyways (as we'd like the displayport size to remain
constant as a fraction of the screen size), but it was necessary to make
this change as part of this patch because continuing to store them in
Layer pixels in the presence of a css-driven resolution would have
required a bunch of infrastructure to implement correctly.
Remaining work:
- Layout painting a scrollable layer at a resolution different from the
scale induced by the css transform causes problems. These will go away
with bug 1076192.
- Different resolutions on the x and y axes are not supported. This is
tracked by bug 1039967.
This makes APZ behave nicely with most uses of a css transform:scale.
Summary of changes:
- FrameMetrics::mCumulativeResolution now includes the css-driven resolution
in addition to the pres-shell resolution.
- Displayports are now stored in Screen pixels rather than Layer pixels.
This is what we want anyways (as we'd like the displayport size to remain
constant as a fraction of the screen size), but it was necessary to make
this change as part of this patch because continuing to store them in
Layer pixels in the presence of a css-driven resolution would have
required a bunch of infrastructure to implement correctly.
Remaining work:
- Layout painting a scrollable layer at a resolution different from the
scale induced by the css transform causes problems. These will go away
with bug 1076192.
- Different resolutions on the x and y axes are not supported. This is
tracked by bug 1039967.
- Added SCROLL_SMOOTH_AUTO flag to nsIPresShell to enable selection of
scroll behavior through CSS.
- Updated Element and Window scrolling DOM methods to enable smooth scrolling
set through the scroll-behavior CSS property.
- Keyboard, scroll bar, mousewheel, and any other events that scroll smoothly
with the general.smoothScroll preference enabled will now scroll instantly
if the scroll frame has "scroll-behavior: instant" applied through CSS.
When we have a display port the dirty rect for root scroll frames is going to be the display port already when it is passed in. The display port can contain a somewhat arbitrary area of the scroll frame, there is no reason is has to include the scrollbars, which are laid out at the desktop scrollport (and adjusted as necessary in the compositor).
As well as BuildDisplayListForChild, we need the dirty rect to be set for the creation of the nsDisplayWrapList or nsDisplayOwnLayer in AppendToTop.