Commit 9b503962 authored by smcgruer's avatar smcgruer Committed by Commit bot

Don't promote position: fixed elements with composited descendants if they don't scroll

BUG=715699
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2839263002
Cr-Commit-Position: refs/heads/master@{#469584}
parent ed10e8d7
......@@ -548,7 +548,6 @@ crbug.com/591099 canvas/philip/tests/2d.shadow.stroke.cap.1.html [ Crash Pass ]
crbug.com/591099 canvas/philip/tests/size.attributes.parse.em.html [ Crash Pass ]
crbug.com/591099 canvas/philip/tests/toDataURL.jpeg.primarycolours.html [ Crash Pass ]
crbug.com/591099 compositing/3d-corners.html [ Failure ]
crbug.com/591099 compositing/always-composite-fixed-position-when-descendants-composite.html [ Failure ]
crbug.com/591099 compositing/animation/busy-indicator.html [ Failure ]
crbug.com/591099 compositing/animation/hidden-composited.html [ Failure ]
crbug.com/591099 compositing/backface-visibility/backface-visibility-image.html [ Failure ]
......@@ -563,6 +562,7 @@ crbug.com/591099 compositing/change-preferCompositingToLCDText-setting.html [ Fa
crbug.com/591099 compositing/checkerboard.html [ Failure ]
crbug.com/591099 compositing/child-transform-layer-requires-box.html [ Failure ]
crbug.com/591099 compositing/columns/geometry-map-paginated-assert.html [ Failure ]
crbug.com/591099 compositing/composite-scrollable-fixed-position-when-descendants-composite.html [ Failure ]
crbug.com/591099 compositing/composited-negative-zindex-child.html [ Failure ]
crbug.com/591099 compositing/compositing-visible-descendant.html [ Failure ]
crbug.com/591099 compositing/contents-opaque/body-background-painted.html [ Failure ]
......@@ -20924,7 +20924,6 @@ crbug.com/591099 virtual/android/fullscreen/video-fail-to-enter-full-screen.html
crbug.com/591099 virtual/android/fullscreen/video-fixed-at-top-left.html [ Failure ]
crbug.com/591099 virtual/android/media/mediadocument/media-document-with-download-button.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/3d-corners.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/always-composite-fixed-position-when-descendants-composite.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/animation/busy-indicator.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/animation/hidden-composited.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/backface-visibility/backface-visibility-image.html [ Failure ]
......@@ -20938,6 +20937,7 @@ crbug.com/591099 virtual/disable-spinvalidation/compositing/checkerboard.html [
crbug.com/591099 virtual/disable-spinvalidation/compositing/child-transform-layer-requires-box.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/child-transform-layer-rounding.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/columns/geometry-map-paginated-assert.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/composite-scrollable-fixed-position-when-descendants-composite.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/composited-negative-zindex-child.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/compositing-visible-descendant.html [ Failure ]
crbug.com/591099 virtual/disable-spinvalidation/compositing/contents-opaque/body-background-painted.html [ Failure ]
......@@ -110,7 +110,6 @@ Bug(none) virtual/without-smil/ [ Skip ]
Bug(none) compositing/3d-cube.html [ Failure ]
Bug(none) compositing/absolute-inside-out-of-view-fixed.html [ Failure ]
Bug(none) compositing/always-composite-fixed-position-when-descendants-composite.html [ Failure ]
Bug(none) compositing/animation/hidden-composited.html [ Failure ]
Bug(none) compositing/backface-visibility/backface-visibility-image.html [ Failure ]
Bug(none) compositing/backface-visibility/backface-visibility-webgl.html [ Failure ]
......@@ -120,6 +119,7 @@ Bug(none) compositing/change-preferCompositingToLCDText-setting.html [ Failure ]
Bug(none) compositing/clip-child-by-non-stacking-ancestor.html [ Failure ]
Bug(none) compositing/color-matching/image-color-matching.html [ Failure ]
Bug(none) compositing/columns/composited-in-paginated.html [ Failure ]
Bug(none) compositing/composite-scrollable-fixed-position-when-descendants-composite.html [ Failure ]
Bug(none) compositing/contents-opaque/background-clip.html [ Failure ]
Bug(none) compositing/contents-opaque/background-color.html [ Failure ]
Bug(none) compositing/contents-opaque/body-background-painted.html [ Failure ]
......
......@@ -2,11 +2,11 @@ Bug(none) accessibility/scroll-to-global-point-main-window.html [ Failure ]
Bug(none) accessibility/scroll-to-global-point-nested.html [ Failure ]
Bug(none) accessibility/scroll-to-make-visible-nested-2.html [ Failure ]
Bug(none) compositing/absolute-inside-out-of-view-fixed.html [ Failure ]
Bug(none) compositing/always-composite-fixed-position-when-descendants-composite.html [ Failure ]
Bug(none) compositing/background-color/background-color-outside-document.html [ Failure ]
Bug(none) compositing/checkerboard.html [ Failure ]
Bug(none) compositing/clip-child-by-non-stacking-ancestor.html [ Failure ]
Bug(none) compositing/columns/composited-in-paginated.html [ Failure ]
Bug(none) compositing/composite-scrollable-fixed-position-when-descendants-composite.html [ Failure ]
Bug(none) compositing/contents-opaque/background-clip.html [ Failure ]
Bug(none) compositing/contents-opaque/background-color.html [ Failure ]
Bug(none) compositing/contents-opaque/body-background-painted.html [ Failure ]
......@@ -1249,7 +1249,7 @@ Bug(none) transforms/2d/transform-fixed-container.html [ Failure ]
Bug(none) transforms/selection-bounds-in-transformed-view.html [ Failure ]
Bug(none) transforms/transformed-document-element.html [ Failure ]
Bug(none) virtual/disable-spinvalidation/compositing/absolute-inside-out-of-view-fixed.html [ Failure ]
Bug(none) virtual/disable-spinvalidation/compositing/always-composite-fixed-position-when-descendants-composite.html [ Failure ]
Bug(none) virtual/disable-spinvalidation/compositing/composite-scrollable-fixed-position-when-descendants-composite.html [ Failure ]
Bug(none) virtual/disable-spinvalidation/compositing/background-color/background-color-outside-document.html [ Failure ]
Bug(none) virtual/disable-spinvalidation/compositing/checkerboard.html [ Failure ]
Bug(none) virtual/disable-spinvalidation/compositing/clip-child-by-non-stacking-ancestor.html [ Failure ]
......
<!doctype HTML>
Any errors will show below this line.
<!-- Having a composited child should always be a position:fixed compositing trigger -->
<!-- Having a composited child should be a position:fixed compositing trigger when scrollable -->
<div style="position: fixed; width: 100px; height: 100px; background: lightgray">
<div style="will-change: transform; margin: 50px; width: 50px; height: 50px; background: lightblue">
</div>
</div>
<div style="height: 2000px;"></div>
<script src="../resources/testharness.js"></script>
<script>
if (window.testRunner)
......
......@@ -45,16 +45,16 @@ class CORE_EXPORT CompositingReasonFinder {
static bool RequiresCompositingForTransformAnimation(const ComputedStyle&);
static bool RequiresCompositingForTransform(const LayoutObject&);
bool RequiresCompositingForScrollDependentPosition(
const PaintLayer*,
bool ignore_lcd_text) const;
private:
bool IsMainFrame() const;
CompositingReasons NonStyleDeterminedDirectReasons(
const PaintLayer*,
bool ignore_lcd_text) const;
bool RequiresCompositingForScrollDependentPosition(
const PaintLayer*,
bool ignore_lcd_text) const;
LayoutView& layout_view_;
CompositingTriggerFlags compositing_triggers_;
};
......
......@@ -166,6 +166,7 @@ static bool RequiresCompositingOrSquashing(CompositingReasons reasons) {
}
static CompositingReasons SubtreeReasonsForCompositing(
const CompositingReasonFinder& compositing_reason_finder,
PaintLayer* layer,
bool has_composited_descendants,
bool has3d_transformed_descendants) {
......@@ -190,10 +191,17 @@ static CompositingReasons SubtreeReasonsForCompositing(
if (layer->GetLayoutObject().HasClipRelatedProperty())
subtree_reasons |= kCompositingReasonClipsCompositingDescendants;
if (layer->GetLayoutObject().Style()->GetPosition() == EPosition::kFixed)
// We ignore LCD text here because we are required to composite
// scroll-dependant fixed position elements with composited descendants for
// correctness - even if we lose LCD.
const bool ignore_lcd_text = true;
if (layer->GetLayoutObject().Style()->GetPosition() == EPosition::kFixed &&
compositing_reason_finder.RequiresCompositingForScrollDependentPosition(
layer, ignore_lcd_text)) {
subtree_reasons |=
kCompositingReasonPositionFixedWithCompositedDescendants;
}
}
// A layer with preserve-3d or perspective only needs to be composited if
// there are descendant layers that will be affected by the preserve-3d or
......@@ -497,7 +505,8 @@ void CompositingRequirementsUpdater::UpdateRecursive(
// descendant layers.
CompositingReasons subtree_compositing_reasons =
SubtreeReasonsForCompositing(
layer, child_recursion_data.subtree_is_compositing_,
compositing_reason_finder_, layer,
child_recursion_data.subtree_is_compositing_,
any_descendant_has3d_transform);
reasons_to_composite |= subtree_compositing_reasons;
if (!will_be_composited_or_squashed && can_be_composited &&
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment