Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp

Issue 1403963002: Invalidate non-self-painting-layer descendants when creating a layer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove resetting of previousPaintInvalidationRect Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
7 * Copyright (C) 2010 Google Inc. All rights reserved. 7 * Copyright (C) 2010 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 if (newStyleIsViewportConstained && layer()) 273 if (newStyleIsViewportConstained && layer())
274 frameView->addViewportConstrainedObject(this); 274 frameView->addViewportConstrainedObject(this);
275 else 275 else
276 frameView->removeViewportConstrainedObject(this); 276 frameView->removeViewportConstrainedObject(this);
277 } 277 }
278 } 278 }
279 } 279 }
280 280
281 void LayoutBoxModelObject::createLayer(PaintLayerType type) 281 void LayoutBoxModelObject::createLayer(PaintLayerType type)
282 { 282 {
283 283 // If the current paint invalidation container is not a stacking context and this object is
284 // Acquiring a PaintLayer may change the paint invalidation container. There fore we must eagerly 284 // a or treated as a stacking context, creating this layer may cause this ob ject and its
285 // invalidate paint for this object before creating the layer. 285 // descendants to change paint invalidation container. Therefore we must eag erly invalidate
286 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled() && isRooted()) { 286 // them on the original paint invalidation container before creating the lay er.
287 DisablePaintInvalidationStateAsserts invalidationDisabler; 287 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled() && isRooted() && style Ref().isTreatedAsOrStackingContext()) {
288 DisableCompositingQueryAsserts compositingDisabler; 288 if (const LayoutBoxModelObject* currentPaintInvalidationContainer = cont ainerForPaintInvalidation()) {
chrishtr 2015/10/14 18:22:32 Re testing: can you build on the test in https://c
Xianzhu 2015/10/14 19:47:21 Done.
289 289 if (!currentPaintInvalidationContainer->styleRef().isStackingContext ())
290 // It would be more correct to call invalidatePaintIncludingNonCompositi ngDescendants, but 290 invalidatePaintIncludingNonSelfPaintingLayerDescendants(*current PaintInvalidationContainer);
291 // we do this instead to avoid performance issues when creating large nu mbers of layers. 291 }
292 const LayoutBoxModelObject& paintInvalidationContainer = containerForPai ntInvalidationOnRootedTree();
293 invalidatePaintUsingContainer(
294 paintInvalidationContainer,
295 boundsRectForPaintInvalidation(&paintInvalidationContainer),
296 PaintInvalidationLayer);
297 } 292 }
298 293
299 ASSERT(!m_layer); 294 ASSERT(!m_layer);
300 m_layer = adoptPtr(new PaintLayer(this, type)); 295 m_layer = adoptPtr(new PaintLayer(this, type));
301 setHasLayer(true); 296 setHasLayer(true);
302 m_layer->insertOnlyThisLayer(); 297 m_layer->insertOnlyThisLayer();
303 } 298 }
304 299
305 void LayoutBoxModelObject::destroyLayer() 300 void LayoutBoxModelObject::destroyLayer()
306 { 301 {
(...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 if (rootElementStyle->hasBackground()) 1050 if (rootElementStyle->hasBackground())
1056 return false; 1051 return false;
1057 1052
1058 if (node() != document().firstBodyElement()) 1053 if (node() != document().firstBodyElement())
1059 return false; 1054 return false;
1060 1055
1061 return true; 1056 return true;
1062 } 1057 }
1063 1058
1064 } // namespace blink 1059 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698