| Index: third_party/WebKit/Source/core/frame/VisualViewport.cpp
|
| diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.cpp b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
|
| index 85c73df4a0db2517f8a404a18985d24c889f91ff..c3b4c98d779a3cb1b3b176d2d5c33cebd5d1b6d7 100644
|
| --- a/third_party/WebKit/Source/core/frame/VisualViewport.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
|
| @@ -35,6 +35,7 @@
|
| #include "core/frame/LocalFrame.h"
|
| #include "core/frame/PageScaleConstraints.h"
|
| #include "core/frame/PageScaleConstraintsSet.h"
|
| +#include "core/frame/ScrollAndScaleEmulator.h"
|
| #include "core/frame/Settings.h"
|
| #include "core/inspector/InspectorInstrumentation.h"
|
| #include "core/layout/TextAutosizer.h"
|
| @@ -211,6 +212,12 @@ void VisualViewport::setScale(float scale)
|
| setScaleAndLocation(scale, m_offset);
|
| }
|
|
|
| +void VisualViewport::setScrollAndScaleEmulator(const RefPtr<ScrollAndScaleEmulator>& emulator)
|
| +{
|
| + m_scrollAndScaleEmulator = emulator;
|
| + setScaleAndLocation(this->scale(), this->location());
|
| +}
|
| +
|
| double VisualViewport::scrollLeft()
|
| {
|
| if (!mainFrame())
|
| @@ -554,7 +561,15 @@ int VisualViewport::scrollSize(ScrollbarOrientation orientation) const
|
|
|
| IntPoint VisualViewport::minimumScrollPosition() const
|
| {
|
| - return IntPoint();
|
| + return flooredIntPoint(minimumScrollPositionDouble());
|
| +}
|
| +
|
| +DoublePoint VisualViewport::minimumScrollPositionDouble() const
|
| +{
|
| + if (m_scrollAndScaleEmulator)
|
| + return m_scrollAndScaleEmulator->applyVisualViewportPositionOverride(DoublePoint());
|
| +
|
| + return DoublePoint();
|
| }
|
|
|
| IntPoint VisualViewport::maximumScrollPosition() const
|
| @@ -583,6 +598,10 @@ DoublePoint VisualViewport::maximumScrollPositionDouble() const
|
|
|
| FloatSize maxPosition = frameViewSize - viewportSize;
|
| maxPosition.scale(1 / m_scale);
|
| +
|
| + if (m_scrollAndScaleEmulator)
|
| + return m_scrollAndScaleEmulator->applyVisualViewportPositionOverride(DoublePoint(maxPosition));
|
| +
|
| return DoublePoint(maxPosition);
|
| }
|
|
|
|
|