Chromium Code Reviews| 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 fe5ac4494ee2ecb6dc58e36d675b0f7f4d2dad20..ee67ea1d5703b2fcf3bcd89a4f2533b4fd2440aa 100644 |
| --- a/third_party/WebKit/Source/core/frame/VisualViewport.cpp |
| +++ b/third_party/WebKit/Source/core/frame/VisualViewport.cpp |
| @@ -36,6 +36,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" |
| @@ -222,6 +223,12 @@ void VisualViewport::setScale(float scale) |
| setScaleAndLocation(scale, m_offset); |
| } |
| +void VisualViewport::setScrollAndScaleEmulator(const RefPtr<ScrollAndScaleEmulator>& emulator) |
| +{ |
| + m_scrollAndScaleEmulator = emulator; |
| + setScaleAndLocation(scale(), location()); |
|
bokan
2016/07/01 21:05:12
We should call setScaleAndLocation to clamp the sc
Eric Seckler
2016/07/04 14:33:08
Done, using clampToBoundaries() now. (This boils d
|
| +} |
| + |
| double VisualViewport::scrollLeft() |
| { |
| if (!mainFrame()) |
| @@ -550,7 +557,23 @@ int VisualViewport::scrollSize(ScrollbarOrientation orientation) const |
| IntPoint VisualViewport::minimumScrollPosition() const |
| { |
| - return IntPoint(); |
| + return flooredIntPoint(minimumScrollPositionDouble()); |
| +} |
| + |
| +DoublePoint VisualViewport::minimumScrollPositionDouble() const |
| +{ |
| + if (m_scrollAndScaleEmulator) { |
| + DoublePoint minimum = calculateMinimumScrollPositionDouble(); |
| + DoublePoint maximum = calculateMaximumScrollPositionDouble(); |
| + return m_scrollAndScaleEmulator->applyVisualViewportPositionOverride(minimum, minimum, maximum); |
| + } |
| + |
| + return calculateMinimumScrollPositionDouble(); |
| +} |
| + |
| +DoublePoint VisualViewport::calculateMinimumScrollPositionDouble() const |
| +{ |
| + return DoublePoint(); |
| } |
| IntPoint VisualViewport::maximumScrollPosition() const |
| @@ -560,6 +583,17 @@ IntPoint VisualViewport::maximumScrollPosition() const |
| DoublePoint VisualViewport::maximumScrollPositionDouble() const |
| { |
| + if (m_scrollAndScaleEmulator) { |
| + DoublePoint minimum = calculateMinimumScrollPositionDouble(); |
| + DoublePoint maximum = calculateMaximumScrollPositionDouble(); |
| + return m_scrollAndScaleEmulator->applyVisualViewportPositionOverride(maximum, minimum, maximum); |
| + } |
| + |
| + return calculateMaximumScrollPositionDouble(); |
| +} |
| + |
| +DoublePoint VisualViewport::calculateMaximumScrollPositionDouble() const |
| +{ |
| if (!mainFrame()) |
| return IntPoint(); |