Index: third_party/WebKit/Source/web/FullscreenController.h |
diff --git a/third_party/WebKit/Source/web/FullscreenController.h b/third_party/WebKit/Source/web/FullscreenController.h |
index 3250456888119ef5a3bfb6bdcb77d4bd6de01a26..8f1f00e712f1d6c9afee565676e269691831a4d9 100644 |
--- a/third_party/WebKit/Source/web/FullscreenController.h |
+++ b/third_party/WebKit/Source/web/FullscreenController.h |
@@ -33,24 +33,24 @@ |
#include "platform/geometry/FloatPoint.h" |
#include "platform/geometry/IntSize.h" |
-#include "platform/heap/Handle.h" |
-#include "wtf/RefPtr.h" |
+#include "wtf/Vector.h" |
+#include <memory> |
namespace blink { |
class Element; |
+class FullscreenCallbacks; |
class LocalFrame; |
class WebViewImpl; |
-class FullscreenController final |
- : public GarbageCollected<FullscreenController> { |
+class FullscreenController { |
public: |
- static FullscreenController* create(WebViewImpl*); |
+ static std::unique_ptr<FullscreenController> create(WebViewImpl*); |
// Called by Fullscreen (via ChromeClient) to request entering or exiting |
// fullscreen. |
- void enterFullscreenForElement(Element*); |
- void exitFullscreen(LocalFrame*); |
+ void enterFullscreen(LocalFrame&, std::unique_ptr<FullscreenCallbacks>); |
+ void exitFullscreen(LocalFrame&); |
// Called by content::RenderWidget (via WebWidget) to notify that we've |
// entered or exited fullscreen. This can be because we requested it, or it |
@@ -62,14 +62,12 @@ class FullscreenController final |
// element has changed. |
void fullscreenElementChanged(Element*, Element*); |
- bool isFullscreen() { return m_fullscreenFrame; } |
+ bool isFullscreen() { return m_state == State::kFullscreen; } |
void updateSize(); |
void didUpdateLayout(); |
- DECLARE_TRACE(); |
- |
protected: |
explicit FullscreenController(WebViewImpl*); |
@@ -78,19 +76,21 @@ class FullscreenController final |
WebViewImpl* m_webViewImpl; |
- bool m_haveEnteredFullscreen; |
- float m_exitFullscreenPageScaleFactor; |
- IntSize m_exitFullscreenScrollOffset; |
- FloatPoint m_exitFullscreenVisualViewportOffset; |
- bool m_needsScrollAndScaleRestore; |
- |
- // If set, the WebView is transitioning to fullscreen for this element. |
- Member<Element> m_provisionalFullscreenElement; |
- |
- // If set, the WebView is in fullscreen mode for an element in this frame. |
- Member<LocalFrame> m_fullscreenFrame; |
- |
- bool m_isCancelingFullscreen; |
+ enum class State { |
+ kInitial, |
+ kEnteringFullscreen, |
+ kFullscreen, |
+ kExitingFullscreen, |
+ kNeedsScrollAndScaleRestore |
+ }; |
+ State m_state = State::kInitial; |
+ |
+ float m_initialPageScaleFactor = 0.0f; |
+ IntSize m_initialScrollOffset; |
+ FloatPoint m_initialVisualViewportOffset; |
+ |
+ using CallbacksList = Vector<std::unique_ptr<FullscreenCallbacks>>; |
+ CallbacksList m_callbacksList; |
}; |
} // namespace blink |