Commit 3751b045 authored by esprehn@chromium.org's avatar esprehn@chromium.org

Revert "Don't layout when isSelfPaintingLayer() changes"

This reverts https://src.chromium.org/viewvc/blink?revision=173614&view=revision

Breaks going in and out of compositing mode for layers that are floated. There
is logic that is reading the self painting layer bit when computing the overflow
of elements inside layout and also when computing if floats should paint. My
original patch was generally wrong, so many parts of layout are reading
hasSelfPaintingLayer() inside layout.

BUG=411825

Review URL: https://codereview.chromium.org/556993002

git-svn-id: svn://svn.chromium.org/blink/trunk@181676 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 286d478f
...@@ -410,6 +410,8 @@ crbug.com/334269 [ Mac ] fast/text/font-variant-ligatures.html [ ImageOnlyFailur ...@@ -410,6 +410,8 @@ crbug.com/334269 [ Mac ] fast/text/font-variant-ligatures.html [ ImageOnlyFailur
crbug.com/393157 [ Mac ] virtual/threaded/printing/print-document-without-documentElement-crash.html [ Pass Crash ] crbug.com/393157 [ Mac ] virtual/threaded/printing/print-document-without-documentElement-crash.html [ Pass Crash ]
Bug(esprehn) fast/repaint/opacity-change-on-overflow-float.html [ NeedsRebaseline ]
# Switching to content shell failures # Switching to content shell failures
crbug.com/231866 [ Lion ] fast/backgrounds/animated-gif-as-background.html [ Pass ImageOnlyFailure ] crbug.com/231866 [ Lion ] fast/backgrounds/animated-gif-as-background.html [ Pass ImageOnlyFailure ]
crbug.com/243599 [ Debug ] http/tests/plugins/interrupted-get-url.html [ Crash Pass ] crbug.com/243599 [ Debug ] http/tests/plugins/interrupted-get-url.html [ Crash Pass ]
......
...@@ -104,6 +104,8 @@ void RenderLayerModelObject::styleWillChange(StyleDifference diff, const RenderS ...@@ -104,6 +104,8 @@ void RenderLayerModelObject::styleWillChange(StyleDifference diff, const RenderS
void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
{ {
bool hadTransform = hasTransform(); bool hadTransform = hasTransform();
bool hadLayer = hasLayer();
bool layerWasSelfPainting = hadLayer && layer()->isSelfPaintingLayer();
RenderObject::styleDidChange(diff, oldStyle); RenderObject::styleDidChange(diff, oldStyle);
updateFromStyle(); updateFromStyle();
...@@ -133,7 +135,10 @@ void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderSt ...@@ -133,7 +135,10 @@ void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderSt
// FIXME: Ideally we shouldn't need this setter but we can't easily infer an overflow-only layer // FIXME: Ideally we shouldn't need this setter but we can't easily infer an overflow-only layer
// from the style. // from the style.
layer()->setLayerType(type); layer()->setLayerType(type);
layer()->styleChanged(diff, oldStyle); layer()->styleChanged(diff, oldStyle);
if (hadLayer && layer()->isSelfPaintingLayer() != layerWasSelfPainting)
setChildNeedsLayout();
} }
if (FrameView *frameView = view()->frameView()) { if (FrameView *frameView = view()->frameView()) {
......
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