| Index: third_party/WebKit/Source/core/frame/VisualViewport.h
 | 
| diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.h b/third_party/WebKit/Source/core/frame/VisualViewport.h
 | 
| index 295c52a5ef9f2c88d69bd495aa220c02a8b0a980..e0bd6a0babd2bc7f5becadce5fcdb82a47ee40aa 100644
 | 
| --- a/third_party/WebKit/Source/core/frame/VisualViewport.h
 | 
| +++ b/third_party/WebKit/Source/core/frame/VisualViewport.h
 | 
| @@ -55,6 +55,7 @@ class GraphicsLayer;
 | 
|  class IntRect;
 | 
|  class IntSize;
 | 
|  class LocalFrame;
 | 
| +class ScrollAndScaleEmulator;
 | 
|  
 | 
|  // Represents the visual viewport the user is currently seeing the page through. This
 | 
|  // class corresponds to the InnerViewport on the compositor. It is a ScrollableArea; it's
 | 
| @@ -100,6 +101,9 @@ public:
 | 
|      void move(const FloatSize&);
 | 
|      FloatPoint location() const { return m_offset; }
 | 
|  
 | 
| +    // Override the scroll location and scale with values from the emulator. Passing |nullptr| clears override.
 | 
| +    void setScrollAndScaleEmulator(const RefPtr<ScrollAndScaleEmulator>&);
 | 
| +
 | 
|      // Sets the size of the inner viewport when unscaled in CSS pixels.
 | 
|      void setSize(const IntSize&);
 | 
|      IntSize size() const { return m_size; }
 | 
| @@ -181,6 +185,7 @@ public:
 | 
|      IntPoint scrollPosition() const override { return flooredIntPoint(m_offset); }
 | 
|      DoublePoint scrollPositionDouble() const override { return m_offset; }
 | 
|      IntPoint minimumScrollPosition() const override;
 | 
| +    DoublePoint minimumScrollPositionDouble() const override;
 | 
|      IntPoint maximumScrollPosition() const override;
 | 
|      DoublePoint maximumScrollPositionDouble() const override;
 | 
|      int visibleHeight() const override { return visibleRect().height(); }
 | 
| @@ -235,6 +240,10 @@ private:
 | 
|      void setupScrollbar(WebScrollbar::Orientation);
 | 
|      FloatPoint clampOffsetToBoundaries(const FloatPoint&);
 | 
|  
 | 
| +    // Calculate the physical minimum/maximum scroll positions without any overrides applied.
 | 
| +    DoublePoint calculateMinimumScrollPositionDouble() const;
 | 
| +    DoublePoint calculateMaximumScrollPositionDouble() const;
 | 
| +
 | 
|      LocalFrame* mainFrame() const;
 | 
|  
 | 
|      FrameHost& frameHost() const
 | 
| @@ -261,6 +270,8 @@ private:
 | 
|      float m_topControlsAdjustment;
 | 
|      float m_maxPageScale;
 | 
|      bool m_trackPinchZoomStatsForPage;
 | 
| +
 | 
| +    RefPtr<ScrollAndScaleEmulator> m_scrollAndScaleEmulator;
 | 
|  };
 | 
|  
 | 
|  } // namespace blink
 | 
| 
 |