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

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

Issue 2647533002: Force compositing inputs to be clean for getBoundingClientRect (Closed)
Patch Set: For discussion; only do compositing update when in sticky subtree Created 3 years, 11 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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 return; 97 return;
98 98
99 layer()->contentChanged(changeType); 99 layer()->contentChanged(changeType);
100 } 100 }
101 101
102 bool LayoutBoxModelObject::hasAcceleratedCompositing() const { 102 bool LayoutBoxModelObject::hasAcceleratedCompositing() const {
103 return view()->compositor()->hasAcceleratedCompositing(); 103 return view()->compositor()->hasAcceleratedCompositing();
104 } 104 }
105 105
106 LayoutBoxModelObject::LayoutBoxModelObject(ContainerNode* node) 106 LayoutBoxModelObject::LayoutBoxModelObject(ContainerNode* node)
107 : LayoutObject(node) {} 107 : LayoutObject(node), m_isInStickySubtree(false) {}
108 108
109 bool LayoutBoxModelObject::usesCompositedScrolling() const { 109 bool LayoutBoxModelObject::usesCompositedScrolling() const {
110 return hasOverflowClip() && hasLayer() && 110 return hasOverflowClip() && hasLayer() &&
111 layer()->getScrollableArea()->usesCompositedScrolling(); 111 layer()->getScrollableArea()->usesCompositedScrolling();
112 } 112 }
113 113
114 BackgroundPaintLocation LayoutBoxModelObject::backgroundPaintLocation() const { 114 BackgroundPaintLocation LayoutBoxModelObject::backgroundPaintLocation() const {
115 bool hasCustomScrollbars = false; 115 bool hasCustomScrollbars = false;
116 // TODO(flackr): Detect opaque custom scrollbars which would cover up a 116 // TODO(flackr): Detect opaque custom scrollbars which would cover up a
117 // border-box background. 117 // border-box background.
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 } 414 }
415 } 415 }
416 416
417 if (newStyleIsViewportConstained != oldStyleIsViewportConstrained) { 417 if (newStyleIsViewportConstained != oldStyleIsViewportConstrained) {
418 if (newStyleIsViewportConstained && layer()) 418 if (newStyleIsViewportConstained && layer())
419 frameView->addViewportConstrainedObject(this); 419 frameView->addViewportConstrainedObject(this);
420 else 420 else
421 frameView->removeViewportConstrainedObject(this); 421 frameView->removeViewportConstrainedObject(this);
422 } 422 }
423 } 423 }
424
425 m_isInStickySubtree =
426 style()->position() == StickyPosition ||
427 (parent() && parent()->enclosingBoxModelObject() &&
428 parent()->enclosingBoxModelObject()->isInStickySubtree());
424 } 429 }
425 430
426 void LayoutBoxModelObject::invalidateStickyConstraints() { 431 void LayoutBoxModelObject::invalidateStickyConstraints() {
427 if (!layer()) 432 if (!layer())
428 return; 433 return;
429 434
430 // This intentionally uses the stale ancestor overflow layer compositing input 435 // This intentionally uses the stale ancestor overflow layer compositing input
431 // as if we have saved constraints for this layer they were saved in the 436 // as if we have saved constraints for this layer they were saved in the
432 // previous frame. 437 // previous frame.
433 DisableCompositingQueryAsserts disabler; 438 DisableCompositingQueryAsserts disabler;
(...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 if (rootElementStyle->hasBackground()) 1345 if (rootElementStyle->hasBackground())
1341 return false; 1346 return false;
1342 1347
1343 if (node() != document().firstBodyElement()) 1348 if (node() != document().firstBodyElement())
1344 return false; 1349 return false;
1345 1350
1346 return true; 1351 return true;
1347 } 1352 }
1348 1353
1349 } // namespace blink 1354 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698