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

Side by Side Diff: third_party/WebKit/Source/core/page/scrolling/RootScrollerController.cpp

Issue 2745063005: Remove document.rootScroller compositing clipping effects. (Closed)
Patch Set: Fix Rebase Created 3 years, 9 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/page/scrolling/RootScrollerController.h" 5 #include "core/page/scrolling/RootScrollerController.h"
6 6
7 #include "core/dom/Document.h" 7 #include "core/dom/Document.h"
8 #include "core/dom/Element.h" 8 #include "core/dom/Element.h"
9 #include "core/frame/FrameView.h" 9 #include "core/frame/FrameView.h"
10 #include "core/layout/LayoutBox.h" 10 #include "core/layout/LayoutBox.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 // to kick the global root scroller to recompute itself. We can remove this 98 // to kick the global root scroller to recompute itself. We can remove this
99 // if ScrollCustomization is moved to the Node rather than Element. 99 // if ScrollCustomization is moved to the Node rather than Element.
100 bool oldHasDocumentElement = m_documentHasDocumentElement; 100 bool oldHasDocumentElement = m_documentHasDocumentElement;
101 m_documentHasDocumentElement = m_document->documentElement(); 101 m_documentHasDocumentElement = m_document->documentElement();
102 102
103 if (oldHasDocumentElement || !m_documentHasDocumentElement) { 103 if (oldHasDocumentElement || !m_documentHasDocumentElement) {
104 if (m_effectiveRootScroller == newEffectiveRootScroller) 104 if (m_effectiveRootScroller == newEffectiveRootScroller)
105 return; 105 return;
106 } 106 }
107 107
108 PaintLayer* oldRootScrollerLayer = rootScrollerPaintLayer();
109
110 m_effectiveRootScroller = newEffectiveRootScroller; 108 m_effectiveRootScroller = newEffectiveRootScroller;
111 109
112 // This change affects both the old and new layers.
113 if (oldRootScrollerLayer)
114 oldRootScrollerLayer->setNeedsCompositingInputsUpdate();
115 if (rootScrollerPaintLayer())
116 rootScrollerPaintLayer()->setNeedsCompositingInputsUpdate();
117
118 // The above may not be enough as we need to update existing ancestor
119 // GraphicsLayers. This will force us to rebuild the GraphicsLayer tree.
120 if (LayoutView* layoutView = m_document->layoutView()) {
121 layoutView->compositor()->setNeedsCompositingUpdate(
122 CompositingUpdateRebuildTree);
123 }
124
125 if (Page* page = m_document->page()) 110 if (Page* page = m_document->page())
126 page->globalRootScrollerController().didChangeRootScroller(); 111 page->globalRootScrollerController().didChangeRootScroller();
127 } 112 }
128 113
129 bool RootScrollerController::isValidRootScroller(const Element& element) const { 114 bool RootScrollerController::isValidRootScroller(const Element& element) const {
130 if (!element.layoutObject()) 115 if (!element.layoutObject())
131 return false; 116 return false;
132 117
133 if (!RootScrollerUtil::scrollableAreaForRootScroller(&element)) 118 if (!RootScrollerUtil::scrollableAreaForRootScroller(&element))
134 return false; 119 return false;
135 120
136 if (!fillsViewport(element)) 121 if (!fillsViewport(element))
137 return false; 122 return false;
138 123
139 return true; 124 return true;
140 } 125 }
141 126
142 PaintLayer* RootScrollerController::rootScrollerPaintLayer() const { 127 PaintLayer* RootScrollerController::rootScrollerPaintLayer() const {
143 return RootScrollerUtil::paintLayerForRootScroller(m_effectiveRootScroller); 128 return RootScrollerUtil::paintLayerForRootScroller(m_effectiveRootScroller);
144 } 129 }
145 130
146 bool RootScrollerController::scrollsViewport(const Element& element) const { 131 bool RootScrollerController::scrollsViewport(const Element& element) const {
147 if (m_effectiveRootScroller->isDocumentNode()) 132 if (m_effectiveRootScroller->isDocumentNode())
148 return element.isSameNode(m_document->documentElement()); 133 return element.isSameNode(m_document->documentElement());
149 134
150 return element.isSameNode(m_effectiveRootScroller); 135 return element.isSameNode(m_effectiveRootScroller);
151 } 136 }
152 137
153 } // namespace blink 138 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698