Index: third_party/WebKit/Source/core/frame/FrameView.h |
diff --git a/third_party/WebKit/Source/core/frame/FrameView.h b/third_party/WebKit/Source/core/frame/FrameView.h |
index 9e1f4485e8107fb77553a45a3a93ca47de7a72fa..497a1c0838bb49cba798958a4123b2276e07ba9f 100644 |
--- a/third_party/WebKit/Source/core/frame/FrameView.h |
+++ b/third_party/WebKit/Source/core/frame/FrameView.h |
@@ -64,6 +64,7 @@ class DocumentLifecycle; |
class Cursor; |
class Element; |
class ElementVisibilityObserver; |
+class Frame; |
class FloatSize; |
class JSONArray; |
class JSONObject; |
@@ -331,14 +332,15 @@ class CORE_EXPORT FrameView final |
NotScrollableExplicitlyDisabled |
}; |
- ScrollingReasons getScrollingReasons(); |
+ ScrollingReasons getScrollingReasons() const; |
bool isScrollable(); |
bool isProgrammaticallyScrollable() override; |
enum ScrollbarModesCalculationStrategy { RulesFromWebContentOnly, AnyRule }; |
- void calculateScrollbarModes(ScrollbarMode& hMode, |
- ScrollbarMode& vMode, |
- ScrollbarModesCalculationStrategy = AnyRule); |
+ void calculateScrollbarModes( |
+ ScrollbarMode& hMode, |
+ ScrollbarMode& vMode, |
+ ScrollbarModesCalculationStrategy = AnyRule) const; |
IntPoint lastKnownMousePosition() const override; |
bool shouldSetCursor() const; |
@@ -785,6 +787,26 @@ class CORE_EXPORT FrameView final |
// Only for SPv2. |
std::unique_ptr<JSONObject> compositedLayersAsJSON(LayerTreeFlags); |
+ // Recursively update frame tree. Each frame has its only |
+ // scroll on main reason. Given the following frame tree |
+ //.. A... |
+ //../.\.. |
+ //.B...C. |
+ //.|..... |
+ //.D..... |
+ // If B has fixed background-attachment but other frames |
+ // don't, both A and C should scroll on cc. Frame D should |
+ // scrolled on main thread as its ancestor B. |
+ void updateSubFrameScrollOnMainReason(const Frame&, |
+ MainThreadScrollingReasons); |
+ String mainThreadScrollingReasonsAsText() const; |
+ // Main thread scrolling reasons including reasons from ancestors. |
+ MainThreadScrollingReasons mainThreadScrollingReasons() const; |
+ // Main thread scrolling reasons for this object only. For all reasons, |
+ // see: mainThreadScrollingReasons(). |
+ MainThreadScrollingReasons mainThreadScrollingReasonsPerFrame() const; |
+ bool hasVisibleSlowRepaintViewportConstrainedObjects() const; |
+ |
protected: |
// Scroll the content via the compositor. |
bool scrollContentsFastPath(const IntSize& scrollDelta); |
@@ -874,7 +896,7 @@ class CORE_EXPORT FrameView final |
void calculateScrollbarModesFromOverflowStyle(const ComputedStyle*, |
ScrollbarMode& hMode, |
- ScrollbarMode& vMode); |
+ ScrollbarMode& vMode) const; |
void updateCounters(); |
void forceLayoutParentViewIfNeeded(); |
@@ -1151,7 +1173,9 @@ class CORE_EXPORT FrameView final |
// For Slimming Paint v2 only. |
std::unique_ptr<PaintController> m_paintController; |
std::unique_ptr<PaintArtifactCompositor> m_paintArtifactCompositor; |
+ |
bool m_isStoringCompositedLayerDebugInfo; |
+ MainThreadScrollingReasons m_mainThreadScrollingReasons; |
}; |
inline void FrameView::incrementVisuallyNonEmptyCharacterCount(unsigned count) { |