Index: third_party/WebKit/Source/core/frame/FrameHost.cpp |
diff --git a/third_party/WebKit/Source/core/frame/FrameHost.cpp b/third_party/WebKit/Source/core/frame/FrameHost.cpp |
index aa29cf0c5b4c71a6bcff71ed060278def6f6a8b7..b6c4c7b6a9c92e7cd9a103e7399ae47e3a02dd3b 100644 |
--- a/third_party/WebKit/Source/core/frame/FrameHost.cpp |
+++ b/third_party/WebKit/Source/core/frame/FrameHost.cpp |
@@ -35,6 +35,7 @@ |
#include "core/frame/FrameView.h" |
#include "core/frame/PageScaleConstraints.h" |
#include "core/frame/PageScaleConstraintsSet.h" |
+#include "core/frame/ScrollAndScaleEmulator.h" |
#include "core/frame/TopControls.h" |
#include "core/frame/VisualViewport.h" |
#include "core/page/Page.h" |
@@ -191,6 +192,7 @@ DEFINE_TRACE(FrameHost) |
visitor->trace(m_overscrollController); |
visitor->trace(m_eventHandlerRegistry); |
visitor->trace(m_customElementReactionStack); |
+ visitor->trace(m_scrollAndScaleEmulator); |
} |
#if ENABLE(ASSERT) |
@@ -256,4 +258,25 @@ void FrameHost::setUserAgentPageScaleConstraints(const PageScaleConstraints& new |
rootView->setNeedsLayout(); |
} |
+void FrameHost::setScrollAndScaleOverride(const IntPoint& framePosition, const DoublePoint& visualViewportPosition, float pageScale) |
+{ |
+ if (!page().mainFrame() || !page().mainFrame()->isLocalFrame()) |
+ return; |
+ |
+ if (!m_scrollAndScaleEmulator) |
+ m_scrollAndScaleEmulator = ScrollAndScaleEmulator::create(this); |
+ |
+ m_scrollAndScaleEmulator->update( |
+ framePosition, visualViewportPosition, pageScale); |
+} |
+ |
+void FrameHost::clearScrollAndScaleOverride() |
+{ |
+ if (!m_scrollAndScaleEmulator) |
+ return; |
+ |
+ m_scrollAndScaleEmulator->clear(); |
+ m_scrollAndScaleEmulator = nullptr; |
+} |
+ |
} // namespace blink |