| 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 b07546a6bf4dd190c9e3cf0bfa2ad4a15e8d81e7..d13d6a2ef407e0dacbb2c8d410ac8f21e0c2b454 100644
 | 
| --- a/third_party/WebKit/Source/core/frame/FrameView.h
 | 
| +++ b/third_party/WebKit/Source/core/frame/FrameView.h
 | 
| @@ -63,6 +63,7 @@ class ComputedStyle;
 | 
|  class DocumentLifecycle;
 | 
|  class Cursor;
 | 
|  class Element;
 | 
| +class ElementVisibilityObserver;
 | 
|  class FloatSize;
 | 
|  class JSONArray;
 | 
|  class JSONObject;
 | 
| @@ -675,10 +676,11 @@ class CORE_EXPORT FrameView final
 | 
|    // scheduling visual updates.
 | 
|    bool canThrottleRendering() const;
 | 
|    bool isHiddenForThrottling() const { return m_hiddenForThrottling; }
 | 
| +  void setupRenderThrottling();
 | 
|  
 | 
|    // For testing, run pending intersection observer notifications for this
 | 
|    // frame.
 | 
| -  void notifyRenderThrottlingObserversForTesting();
 | 
| +  void updateRenderThrottlingStatusForTesting();
 | 
|  
 | 
|    // Paint properties for SPv2 Only.
 | 
|    void setPreTranslation(
 | 
| @@ -919,9 +921,7 @@ class CORE_EXPORT FrameView final
 | 
|    void setNeedsUpdateViewportIntersection();
 | 
|    void updateViewportIntersectionsForSubtree(
 | 
|        DocumentLifecycle::LifecycleState targetState);
 | 
| -  void updateViewportIntersectionIfNeeded();
 | 
| -  void notifyRenderThrottlingObservers();
 | 
| -  void updateThrottlingStatus();
 | 
| +  void updateRenderThrottlingStatus(bool hidden, bool subtreeThrottled);
 | 
|    void notifyResizeObservers();
 | 
|  
 | 
|    // PaintInvalidationCapableScrollableArea
 | 
| @@ -963,8 +963,6 @@ class CORE_EXPORT FrameView final
 | 
|    unsigned m_nestedLayoutCount;
 | 
|    Timer<FrameView> m_postLayoutTasksTimer;
 | 
|    Timer<FrameView> m_updateWidgetsTimer;
 | 
| -  std::unique_ptr<CancellableTaskFactory>
 | 
| -      m_renderThrottlingObserverNotificationFactory;
 | 
|  
 | 
|    bool m_firstLayout;
 | 
|    bool m_isTransparent;
 | 
| @@ -1044,16 +1042,10 @@ class CORE_EXPORT FrameView final
 | 
|    // main frame.
 | 
|    Member<RootFrameViewport> m_viewportScrollableArea;
 | 
|  
 | 
| -  // This frame's bounds in the root frame's content coordinates, clipped
 | 
| -  // recursively through every ancestor view.
 | 
| -  IntRect m_viewportIntersection;
 | 
| -  bool m_viewportIntersectionValid;
 | 
| -
 | 
|    // The following members control rendering pipeline throttling for this
 | 
|    // frame. They are only updated in response to intersection observer
 | 
|    // notifications, i.e., not in the middle of the lifecycle.
 | 
|    bool m_hiddenForThrottling;
 | 
| -  bool m_crossOriginForThrottling;
 | 
|    bool m_subtreeThrottled;
 | 
|  
 | 
|    // Paint properties for SPv2 Only.
 | 
| @@ -1090,6 +1082,8 @@ class CORE_EXPORT FrameView final
 | 
|    bool m_suppressAdjustViewSize;
 | 
|    bool m_allowsLayoutInvalidationAfterLayoutClean;
 | 
|  
 | 
| +  Member<ElementVisibilityObserver> m_visibilityObserver;
 | 
| +
 | 
|    // For testing.
 | 
|    struct ObjectPaintInvalidation {
 | 
|      String name;
 | 
| 
 |