| Index: third_party/WebKit/Source/web/DevToolsEmulator.h
 | 
| diff --git a/third_party/WebKit/Source/web/DevToolsEmulator.h b/third_party/WebKit/Source/web/DevToolsEmulator.h
 | 
| index 07836526e34fbc6b10560e8bfe291d7ce2486c8d..649013dfe2513b5b10f073f97146e0e3eda28077 100644
 | 
| --- a/third_party/WebKit/Source/web/DevToolsEmulator.h
 | 
| +++ b/third_party/WebKit/Source/web/DevToolsEmulator.h
 | 
| @@ -7,19 +7,24 @@
 | 
|  
 | 
|  #include "platform/heap/Handle.h"
 | 
|  #include "public/platform/PointerProperties.h"
 | 
| +#include "public/platform/WebFloatPoint.h"
 | 
|  #include "public/platform/WebViewportStyle.h"
 | 
|  #include "public/web/WebDeviceEmulationParams.h"
 | 
| +#include "web/WebExport.h"
 | 
|  #include "wtf/Forward.h"
 | 
| +#include "wtf/Optional.h"
 | 
|  #include <memory>
 | 
|  
 | 
|  namespace blink {
 | 
|  
 | 
|  class InspectorEmulationAgent;
 | 
|  class IntPoint;
 | 
| +class IntRect;
 | 
| +class TransformationMatrix;
 | 
|  class WebInputEvent;
 | 
|  class WebViewImpl;
 | 
|  
 | 
| -class DevToolsEmulator final : public GarbageCollectedFinalized<DevToolsEmulator> {
 | 
| +class WEB_EXPORT DevToolsEmulator final : public GarbageCollectedFinalized<DevToolsEmulator> {
 | 
|  public:
 | 
|      ~DevToolsEmulator();
 | 
|      static DevToolsEmulator* create(WebViewImpl*);
 | 
| @@ -44,23 +49,49 @@ public:
 | 
|      // Emulation.
 | 
|      void enableDeviceEmulation(const WebDeviceEmulationParams&);
 | 
|      void disableDeviceEmulation();
 | 
| +    // Position is given in CSS pixels, scale relative to a page scale of 1.0.
 | 
| +    void forceViewport(const WebFloatPoint& position, float scale);
 | 
| +    void resetViewport();
 | 
|      bool resizeIsDeviceSizeChange();
 | 
|      void setTouchEventEmulationEnabled(bool);
 | 
|      bool handleInputEvent(const WebInputEvent&);
 | 
|      void setScriptExecutionDisabled(bool);
 | 
|  
 | 
| +    // Notify the DevToolsEmulator about a scroll or scale change of the main
 | 
| +    // frame. Updates the transform for a viewport override.
 | 
| +    void mainFrameScrollOrScaleChanged();
 | 
| +
 | 
| +    // Returns a custom visible content rect if a viewport override is active.
 | 
| +    // This ensures that all content inside the forced viewport is painted.
 | 
| +    WTF::Optional<IntRect> visibleContentRectForPainting() const;
 | 
| +
 | 
|  private:
 | 
|      explicit DevToolsEmulator(WebViewImpl*);
 | 
|  
 | 
|      void enableMobileEmulation();
 | 
|      void disableMobileEmulation();
 | 
|  
 | 
| +    // Returns the original device scale factor when overridden by DevTools, or
 | 
| +    // deviceScaleFactor() otherwise.
 | 
| +    float compositorDeviceScaleFactor() const;
 | 
| +
 | 
| +    void applyDeviceEmulationTransform(TransformationMatrix*);
 | 
| +    void applyViewportOverride(TransformationMatrix*);
 | 
| +    void updateRootLayerTransform();
 | 
| +
 | 
|      WebViewImpl* m_webViewImpl;
 | 
|  
 | 
|      bool m_deviceMetricsEnabled;
 | 
|      bool m_emulateMobileEnabled;
 | 
|      WebDeviceEmulationParams m_emulationParams;
 | 
|  
 | 
| +    struct ViewportOverride {
 | 
| +        WebFloatPoint position;
 | 
| +        double scale;
 | 
| +        bool originalVisualViewportMasking;
 | 
| +    };
 | 
| +    WTF::Optional<ViewportOverride> m_viewportOverride;
 | 
| +
 | 
|      bool m_isOverlayScrollbarsEnabled;
 | 
|      bool m_isOrientationEventEnabled;
 | 
|      bool m_isMobileLayoutThemeEnabled;
 | 
| 
 |