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

Side by Side Diff: third_party/WebKit/Source/core/frame/FrameView.cpp

Issue 2506353002: Incrementally build main thread scrolling reasons [spv2] (Closed)
Patch Set: Fix test mistake Created 4 years, 1 month 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) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Dirk Mueller <mueller@kde.org> 5 * 2000 Dirk Mueller <mueller@kde.org>
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * Copyright (C) 2009 Google Inc. All rights reserved. 9 * Copyright (C) 2009 Google Inc. All rights reserved.
10 * 10 *
(...skipping 1462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 } 1473 }
1474 1474
1475 void FrameView::addBackgroundAttachmentFixedObject(LayoutObject* object) { 1475 void FrameView::addBackgroundAttachmentFixedObject(LayoutObject* object) {
1476 ASSERT(!m_backgroundAttachmentFixedObjects.contains(object)); 1476 ASSERT(!m_backgroundAttachmentFixedObjects.contains(object));
1477 1477
1478 m_backgroundAttachmentFixedObjects.add(object); 1478 m_backgroundAttachmentFixedObjects.add(object);
1479 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator()) 1479 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator())
1480 scrollingCoordinator->frameViewHasBackgroundAttachmentFixedObjectsDidChange( 1480 scrollingCoordinator->frameViewHasBackgroundAttachmentFixedObjectsDidChange(
1481 this); 1481 this);
1482 1482
1483 // TODO(pdr): When slimming paint v2 is enabled, invalidate the scroll paint 1483 // Ensure main thread scrolling reasons are recomputed.
1484 // property subtree for this so main thread scroll reasons are recomputed. 1484 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
1485 setNeedsPaintPropertyUpdate();
1486 // The object's scroll properties are not affected by its own background.
1487 object->setAllAncestorsNeedPaintPropertyUpdate();
1488 }
1485 } 1489 }
1486 1490
1487 void FrameView::removeBackgroundAttachmentFixedObject(LayoutObject* object) { 1491 void FrameView::removeBackgroundAttachmentFixedObject(LayoutObject* object) {
1488 ASSERT(m_backgroundAttachmentFixedObjects.contains(object)); 1492 ASSERT(m_backgroundAttachmentFixedObjects.contains(object));
1489 1493
1490 m_backgroundAttachmentFixedObjects.remove(object); 1494 m_backgroundAttachmentFixedObjects.remove(object);
1491 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator()) 1495 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator())
1492 scrollingCoordinator->frameViewHasBackgroundAttachmentFixedObjectsDidChange( 1496 scrollingCoordinator->frameViewHasBackgroundAttachmentFixedObjectsDidChange(
1493 this); 1497 this);
1494 1498
1495 // TODO(pdr): When slimming paint v2 is enabled, invalidate the scroll paint 1499 // Ensure main thread scrolling reasons are recomputed.
1496 // property subtree for this so main thread scroll reasons are recomputed. 1500 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
1501 setNeedsPaintPropertyUpdate();
1502 // The object's scroll properties are not affected by its own background.
1503 object->setAllAncestorsNeedPaintPropertyUpdate();
1504 }
1497 } 1505 }
1498 1506
1499 void FrameView::addViewportConstrainedObject(LayoutObject* object) { 1507 void FrameView::addViewportConstrainedObject(LayoutObject* object) {
1500 if (!m_viewportConstrainedObjects) 1508 if (!m_viewportConstrainedObjects)
1501 m_viewportConstrainedObjects = wrapUnique(new ViewportConstrainedObjectSet); 1509 m_viewportConstrainedObjects = wrapUnique(new ViewportConstrainedObjectSet);
1502 1510
1503 if (!m_viewportConstrainedObjects->contains(object)) { 1511 if (!m_viewportConstrainedObjects->contains(object)) {
1504 m_viewportConstrainedObjects->add(object); 1512 m_viewportConstrainedObjects->add(object);
1505 1513
1506 if (ScrollingCoordinator* scrollingCoordinator = 1514 if (ScrollingCoordinator* scrollingCoordinator =
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 void FrameView::scrollContentsIfNeededRecursive() { 1600 void FrameView::scrollContentsIfNeededRecursive() {
1593 forAllNonThrottledFrameViews( 1601 forAllNonThrottledFrameViews(
1594 [](FrameView& frameView) { frameView.scrollContentsIfNeeded(); }); 1602 [](FrameView& frameView) { frameView.scrollContentsIfNeeded(); });
1595 } 1603 }
1596 1604
1597 void FrameView::invalidateBackgroundAttachmentFixedObjects() { 1605 void FrameView::invalidateBackgroundAttachmentFixedObjects() {
1598 for (const auto& layoutObject : m_backgroundAttachmentFixedObjects) 1606 for (const auto& layoutObject : m_backgroundAttachmentFixedObjects)
1599 layoutObject->setShouldDoFullPaintInvalidation(); 1607 layoutObject->setShouldDoFullPaintInvalidation();
1600 } 1608 }
1601 1609
1610 bool FrameView::hasBackgroundAttachmentFixedDescendants(
1611 const LayoutObject& object) const {
1612 for (const auto* potentialDescendant : m_backgroundAttachmentFixedObjects) {
1613 if (potentialDescendant == &object)
1614 continue;
1615 if (potentialDescendant->isDescendantOf(&object))
1616 return true;
1617 }
1618 return false;
1619 }
1620
1602 bool FrameView::invalidateViewportConstrainedObjects() { 1621 bool FrameView::invalidateViewportConstrainedObjects() {
1603 bool fastPathAllowed = true; 1622 bool fastPathAllowed = true;
1604 for (const auto& viewportConstrainedObject : *m_viewportConstrainedObjects) { 1623 for (const auto& viewportConstrainedObject : *m_viewportConstrainedObjects) {
1605 LayoutObject* layoutObject = viewportConstrainedObject; 1624 LayoutObject* layoutObject = viewportConstrainedObject;
1606 LayoutItem layoutItem = LayoutItem(layoutObject); 1625 LayoutItem layoutItem = LayoutItem(layoutObject);
1607 ASSERT(layoutItem.style()->hasViewportConstrainedPosition()); 1626 ASSERT(layoutItem.style()->hasViewportConstrainedPosition());
1608 ASSERT(layoutItem.hasLayer()); 1627 ASSERT(layoutItem.hasLayer());
1609 PaintLayer* layer = LayoutBoxModel(layoutItem).layer(); 1628 PaintLayer* layer = LayoutBoxModel(layoutItem).layer();
1610 1629
1611 if (layer->isPaintInvalidationContainer()) 1630 if (layer->isPaintInvalidationContainer())
(...skipping 3001 matching lines...) Expand 10 before | Expand all | Expand 10 after
4613 DCHECK(m_frame->isMainFrame()); 4632 DCHECK(m_frame->isMainFrame());
4614 return m_initialViewportSize.width(); 4633 return m_initialViewportSize.width();
4615 } 4634 }
4616 4635
4617 int FrameView::initialViewportHeight() const { 4636 int FrameView::initialViewportHeight() const {
4618 DCHECK(m_frame->isMainFrame()); 4637 DCHECK(m_frame->isMainFrame());
4619 return m_initialViewportSize.height(); 4638 return m_initialViewportSize.height();
4620 } 4639 }
4621 4640
4622 } // namespace blink 4641 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/frame/FrameView.h ('k') | third_party/WebKit/Source/core/layout/LayoutObject.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698