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

Side by Side Diff: third_party/WebKit/Source/core/page/scrolling/TopDocumentRootScrollerController.h

Issue 2732363003: Make TopDocumentRootScrollerController store Page instead of FrameHost (Closed)
Patch Set: Review feedback 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 #ifndef TopDocumentRootScrollerController_h 5 #ifndef TopDocumentRootScrollerController_h
6 #define TopDocumentRootScrollerController_h 6 #define TopDocumentRootScrollerController_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/page/scrolling/RootScrollerController.h" 9 #include "core/page/scrolling/RootScrollerController.h"
10 #include "platform/geometry/IntSize.h" 10 #include "platform/geometry/IntSize.h"
11 #include "platform/heap/Handle.h" 11 #include "platform/heap/Handle.h"
12 12
13 namespace blink { 13 namespace blink {
14 14
15 class Element; 15 class Element;
16 class FrameHost; 16 class Page;
17 class GraphicsLayer; 17 class GraphicsLayer;
18 class PaintLayer; 18 class PaintLayer;
19 class RootFrameViewport; 19 class RootFrameViewport;
20 class ScrollStateCallback; 20 class ScrollStateCallback;
21 class ScrollableArea; 21 class ScrollableArea;
22 class ViewportScrollCallback; 22 class ViewportScrollCallback;
23 23
24 // This class manages the the page level aspects of the root scroller. That 24 // This class manages the the page level aspects of the root scroller. That
25 // is, given all the iframes on a page and their individual root scrollers, 25 // is, given all the iframes on a page and their individual root scrollers,
26 // this class will determine which ultimate Element should be used as the root 26 // this class will determine which ultimate Element should be used as the root
27 // scroller and ensures that Element is used to scroll browser controls and 27 // scroller and ensures that Element is used to scroll browser controls and
28 // provide overscroll effects. 28 // provide overscroll effects.
29 // TODO(bokan): This class is currently OOPIF unaware. crbug.com/642378. 29 // TODO(bokan): This class is currently OOPIF unaware. crbug.com/642378.
30 class CORE_EXPORT TopDocumentRootScrollerController 30 class CORE_EXPORT TopDocumentRootScrollerController
31 : public GarbageCollected<TopDocumentRootScrollerController> { 31 : public GarbageCollected<TopDocumentRootScrollerController> {
32 public: 32 public:
33 static TopDocumentRootScrollerController* create(FrameHost&); 33 static TopDocumentRootScrollerController* create(Page&);
34 34
35 DECLARE_TRACE(); 35 DECLARE_TRACE();
36 36
37 // This class needs to be informed of changes to compositing so that it can 37 // This class needs to be informed of changes to compositing so that it can
38 // update the compositor when the effective root scroller changes. 38 // update the compositor when the effective root scroller changes.
39 void didUpdateCompositing(); 39 void didUpdateCompositing();
40 40
41 // PaintLayerScrollableAreas need to notify this class when they're being 41 // PaintLayerScrollableAreas need to notify this class when they're being
42 // disposed so that we can remove them as the root scroller. 42 // disposed so that we can remove them as the root scroller.
43 void didDisposeScrollableArea(ScrollableArea&); 43 void didDisposeScrollableArea(ScrollableArea&);
(...skipping 27 matching lines...) Expand all
71 // this isn't necessarily the PLSA belonging to the root scroller Element's 71 // this isn't necessarily the PLSA belonging to the root scroller Element's
72 // LayoutBox. If the root scroller is the documentElement then we use the 72 // LayoutBox. If the root scroller is the documentElement then we use the
73 // FrameView (or LayoutView if root-layer-scrolls). 73 // FrameView (or LayoutView if root-layer-scrolls).
74 ScrollableArea* rootScrollerArea() const; 74 ScrollableArea* rootScrollerArea() const;
75 75
76 // Returns the size we should use for the root scroller, accounting for top 76 // Returns the size we should use for the root scroller, accounting for top
77 // controls adjustment and using the root FrameView. 77 // controls adjustment and using the root FrameView.
78 IntSize rootScrollerVisibleArea() const; 78 IntSize rootScrollerVisibleArea() const;
79 79
80 private: 80 private:
81 TopDocumentRootScrollerController(FrameHost&); 81 TopDocumentRootScrollerController(Page&);
82 82
83 // Calculates the Element that should be the globalRootScroller. On a 83 // Calculates the Element that should be the globalRootScroller. On a
84 // simple page, this will simply the root frame's effectiveRootScroller but 84 // simple page, this will simply the root frame's effectiveRootScroller but
85 // if the root scroller is set to an iframe, this will then descend into 85 // if the root scroller is set to an iframe, this will then descend into
86 // the iframe to find its effective root scroller. 86 // the iframe to find its effective root scroller.
87 Element* findGlobalRootScrollerElement(); 87 Element* findGlobalRootScrollerElement();
88 88
89 // Should be called to ensure the correct element is currently set as the 89 // Should be called to ensure the correct element is currently set as the
90 // global root scroller and that all appropriate state changes are made if 90 // global root scroller and that all appropriate state changes are made if
91 // it changes. 91 // it changes.
92 void recomputeGlobalRootScroller(); 92 void recomputeGlobalRootScroller();
93 93
94 Document* topDocument() const; 94 Document* topDocument() const;
95 95
96 void setNeedsCompositingInputsUpdateOnGlobalRootScroller(); 96 void setNeedsCompositingInputsUpdateOnGlobalRootScroller();
97 97
98 // The apply-scroll callback that moves browser controls and produces 98 // The apply-scroll callback that moves browser controls and produces
99 // overscroll effects. This class makes sure this callback is set on the 99 // overscroll effects. This class makes sure this callback is set on the
100 // appropriate root scroller element. 100 // appropriate root scroller element.
101 Member<ViewportScrollCallback> m_viewportApplyScroll; 101 Member<ViewportScrollCallback> m_viewportApplyScroll;
102 102
103 // The page level root scroller. i.e. The actual element for which 103 // The page level root scroller. i.e. The actual element for which
104 // scrolling should move browser controls and produce overscroll glow. Once an 104 // scrolling should move browser controls and produce overscroll glow. Once an
105 // m_viewportApplyScroll has been created, it will always be set on this 105 // m_viewportApplyScroll has been created, it will always be set on this
106 // Element. 106 // Element.
107 WeakMember<Element> m_globalRootScroller; 107 WeakMember<Element> m_globalRootScroller;
108 108
109 WeakMember<FrameHost> m_frameHost; 109 WeakMember<Page> m_page;
haraken 2017/03/08 06:15:48 Not related to this CL, I don't understand why thi
sashab 2017/03/08 23:39:31 Haha, I thought the same thing when I saw this! Le
110 }; 110 };
111 111
112 } // namespace blink 112 } // namespace blink
113 113
114 #endif // RootScrollerController_h 114 #endif // RootScrollerController_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698