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

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

Issue 2251303003: Implement position: sticky updates on compositor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge with master and add comments to WebLayerStickyPositionConstraint members. Created 4 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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 } 346 }
347 347
348 if (FrameView *frameView = view()->frameView()) { 348 if (FrameView *frameView = view()->frameView()) {
349 bool newStyleIsViewportConstained = style()->position() == FixedPosition ; 349 bool newStyleIsViewportConstained = style()->position() == FixedPosition ;
350 bool oldStyleIsViewportConstrained = oldStyle && oldStyle->position() == FixedPosition; 350 bool oldStyleIsViewportConstrained = oldStyle && oldStyle->position() == FixedPosition;
351 bool newStyleIsSticky = style()->position() == StickyPosition; 351 bool newStyleIsSticky = style()->position() == StickyPosition;
352 bool oldStyleIsSticky = oldStyle && oldStyle->position() == StickyPositi on; 352 bool oldStyleIsSticky = oldStyle && oldStyle->position() == StickyPositi on;
353 353
354 if (newStyleIsSticky != oldStyleIsSticky) { 354 if (newStyleIsSticky != oldStyleIsSticky) {
355 if (newStyleIsSticky) { 355 if (newStyleIsSticky) {
356 frameView->addStickyPositionObject();
357 // During compositing inputs update we'll have the scroll 356 // During compositing inputs update we'll have the scroll
358 // ancestor without having to walk up the tree and can compute 357 // ancestor without having to walk up the tree and can compute
359 // the sticky position constraints then. 358 // the sticky position constraints then.
360 if (layer()) 359 if (layer())
361 layer()->setNeedsCompositingInputsUpdate(); 360 layer()->setNeedsCompositingInputsUpdate();
362 361
363 // TODO(pdr): When slimming paint v2 is enabled, we will need to 362 // TODO(pdr): When slimming paint v2 is enabled, we will need to
364 // invalidate the scroll paint property subtree for this so main 363 // invalidate the scroll paint property subtree for this so main
365 // thread scroll reasons are recomputed. 364 // thread scroll reasons are recomputed.
366 } else { 365 } else {
367 // This may get re-added to viewport constrained objects if the object went 366 // This may get re-added to viewport constrained objects if the object went
368 // from sticky to fixed. 367 // from sticky to fixed.
369 frameView->removeViewportConstrainedObject(this); 368 frameView->removeViewportConstrainedObject(this);
370 frameView->removeStickyPositionObject();
371 369
372 // Remove sticky constraints for this layer. 370 // Remove sticky constraints for this layer.
373 if (layer()) { 371 if (layer()) {
374 DisableCompositingQueryAsserts disabler; 372 DisableCompositingQueryAsserts disabler;
375 if (const PaintLayer* ancestorOverflowLayer = layer()->ances torOverflowLayer()) 373 if (const PaintLayer* ancestorOverflowLayer = layer()->ances torOverflowLayer())
376 ancestorOverflowLayer->getScrollableArea()->invalidateSt ickyConstraintsFor(layer()); 374 ancestorOverflowLayer->getScrollableArea()->invalidateSt ickyConstraintsFor(layer());
377 } 375 }
378 376
379 // TODO(pdr): When slimming paint v2 is enabled, we will need to 377 // TODO(pdr): When slimming paint v2 is enabled, we will need to
380 // invalidate the scroll paint property subtree for this so main 378 // invalidate the scroll paint property subtree for this so main
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after
1196 if (rootElementStyle->hasBackground()) 1194 if (rootElementStyle->hasBackground())
1197 return false; 1195 return false;
1198 1196
1199 if (node() != document().firstBodyElement()) 1197 if (node() != document().firstBodyElement())
1200 return false; 1198 return false;
1201 1199
1202 return true; 1200 return true;
1203 } 1201 }
1204 1202
1205 } // namespace blink 1203 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698