Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(279)

Unified Diff: third_party/WebKit/Source/web/FullscreenController.h

Issue 2495423004: Convert FullscreenController to use WebCallbacks (Closed)
Patch Set: public/WebFullscreenCallbacks->core/FullscreenCallbacks Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698