Chromium Code Reviews| Index: third_party/WebKit/Source/web/ResizeViewportAnchor.h |
| diff --git a/third_party/WebKit/Source/web/ResizeViewportAnchor.h b/third_party/WebKit/Source/web/ResizeViewportAnchor.h |
| index 49ec20eaeb1e5acf0ee31f0f57632b8a83eefb26..da6bf121ee1e37fbbc88ab66921dd615665e401f 100644 |
| --- a/third_party/WebKit/Source/web/ResizeViewportAnchor.h |
| +++ b/third_party/WebKit/Source/web/ResizeViewportAnchor.h |
| @@ -5,28 +5,59 @@ |
| #ifndef ResizeViewportAnchor_h |
| #define ResizeViewportAnchor_h |
| -#include "platform/geometry/DoublePoint.h" |
| +#include "core/page/Page.h" |
| #include "platform/heap/Handle.h" |
| -#include "web/ViewportAnchor.h" |
| namespace blink { |
| class FrameView; |
| -class VisualViewport; |
| -// The resize anchor saves the current scroll offset of the visual viewport and |
| -// restores to that scroll offset so that document location appears exactly |
| -// unchanged to the user. |
| -class ResizeViewportAnchor : public ViewportAnchor { |
| - STACK_ALLOCATED(); |
| +// This class scrolls the viewports to compensate for bounds clamping caused by |
| +// viewport size changes. |
| +// |
| +// It is needed when the layout viewport grows (causing its own scroll position |
| +// to be clamped) and also when it shrinks (causing the visual viewport's scroll |
| +// position to be clamped). |
| +class ResizeViewportAnchor : public GarbageCollectedFinalized<ResizeViewportAnchor> { |
| + WTF_MAKE_NONCOPYABLE(ResizeViewportAnchor); |
| public: |
| - ResizeViewportAnchor(FrameView& rootFrameView, VisualViewport&); |
| - ~ResizeViewportAnchor(); |
| + ResizeViewportAnchor(Page& page) |
| + : m_page(page) |
| + , m_scopeCount(0) |
| + { |
| + } |
| + |
| + class ResizeScope { |
| + STACK_ALLOCATED(); |
| + public: |
| + explicit ResizeScope(ResizeViewportAnchor& anchor) |
| + : m_anchor(anchor) |
| + { |
| + m_anchor->beginScope(); |
| + } |
| + ~ResizeScope() |
| + { |
| + m_anchor->endScope(); |
| + } |
| + private: |
| + Member<ResizeViewportAnchor> m_anchor; |
| + }; |
| + |
| + void resizeFrameView(IntSize); |
| + |
| + DEFINE_INLINE_TRACE() |
| + { |
| + visitor->trace(m_page); |
| + } |
| private: |
| - // Inner viewport origin in the reference frame of the root document, in CSS |
| - // pixels. |
| - DoublePoint m_visualViewportInDocument; |
| + void beginScope() { m_scopeCount++; } |
| + void endScope(); |
| + FrameView* rootFrameView(); |
| + |
| + DoubleSize m_drift; |
|
bokan
2016/07/28 14:55:55
Could you add a comment describing this member? I'
skobes
2016/07/28 15:45:50
The opposite actually :) Comment added.
|
| + Member<Page> m_page; |
| + int m_scopeCount; |
| }; |
| } // namespace blink |