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

Side by Side Diff: Source/core/dom/FullscreenElementStack.h

Issue 171333003: Pass implementation object to supplemental classes by reference (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 10 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
9 * Copyright (C) 2013 Google Inc. All rights reserved. 9 * Copyright (C) 2013 Google Inc. All rights reserved.
10 * 10 *
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 class RenderFullScreen; 45 class RenderFullScreen;
46 class RenderStyle; 46 class RenderStyle;
47 class ExecutionContext; 47 class ExecutionContext;
48 48
49 class FullscreenElementStack FINAL 49 class FullscreenElementStack FINAL
50 : public DocumentSupplement 50 : public DocumentSupplement
51 , public DocumentLifecycleObserver { 51 , public DocumentLifecycleObserver {
52 public: 52 public:
53 virtual ~FullscreenElementStack(); 53 virtual ~FullscreenElementStack();
54 static const char* supplementName(); 54 static const char* supplementName();
55 static FullscreenElementStack* from(Document*); 55 static FullscreenElementStack& from(Document&);
56 static FullscreenElementStack* fromIfExists(Document*); 56 static FullscreenElementStack* fromIfExists(Document&);
57 static Element* fullscreenElementFrom(Document*); 57 static Element* fullscreenElementFrom(Document&);
58 static Element* currentFullScreenElementFrom(Document*); 58 static Element* currentFullScreenElementFrom(Document&);
59 static bool isFullScreen(Document*); 59 static bool isFullScreen(Document&);
60 static bool isActiveFullScreenElement(const Element*); 60 static bool isActiveFullScreenElement(const Element*);
61 61
62 enum FullScreenCheckType { 62 enum FullScreenCheckType {
63 EnforceIFrameAllowFullScreenRequirement, 63 EnforceIFrameAllowFullScreenRequirement,
64 ExemptIFrameAllowFullScreenRequirement, 64 ExemptIFrameAllowFullScreenRequirement,
65 }; 65 };
66 66
67 void requestFullScreenForElement(Element*, unsigned short flags, FullScreenC heckType); 67 void requestFullScreenForElement(Element*, unsigned short flags, FullScreenC heckType);
68 void webkitCancelFullScreen(); 68 void webkitCancelFullScreen();
69 69
70 void webkitWillEnterFullScreenForElement(Element*); 70 void webkitWillEnterFullScreenForElement(Element*);
71 void webkitDidEnterFullScreenForElement(Element*); 71 void webkitDidEnterFullScreenForElement(Element*);
72 void webkitWillExitFullScreenForElement(Element*); 72 void webkitWillExitFullScreenForElement(Element*);
73 void webkitDidExitFullScreenForElement(Element*); 73 void webkitDidExitFullScreenForElement(Element*);
74 74
75 void setFullScreenRenderer(RenderFullScreen*); 75 void setFullScreenRenderer(RenderFullScreen*);
76 RenderFullScreen* fullScreenRenderer() const { return m_fullScreenRenderer; } 76 RenderFullScreen* fullScreenRenderer() const { return m_fullScreenRenderer; }
77 void fullScreenRendererDestroyed(); 77 void fullScreenRendererDestroyed();
78 78
79 void clearFullscreenElementStack(); 79 void clearFullscreenElementStack();
80 void popFullscreenElementStack(); 80 void popFullscreenElementStack();
81 void pushFullscreenElementStack(Element*); 81 void pushFullscreenElementStack(Element*);
82 void addDocumentToFullScreenChangeEventQueue(Document*); 82 void addDocumentToFullScreenChangeEventQueue(Document*);
83 83
84 bool fullScreenIsAllowedForElement(Element*) const; 84 bool fullScreenIsAllowedForElement(Element*) const;
85 void fullScreenElementRemoved(); 85 void fullScreenElementRemoved();
86 void removeFullScreenElementOfSubtree(Node*, bool amongChildrenOnly = false) ; 86 void removeFullScreenElementOfSubtree(Node*, bool amongChildrenOnly = false) ;
87 87
88 // W3C API 88 // W3C API
89 static bool webkitFullscreenEnabled(Document*); 89 static bool webkitFullscreenEnabled(Document&);
90 Element* webkitFullscreenElement() const { return !m_fullScreenElementStack. isEmpty() ? m_fullScreenElementStack.last().get() : 0; } 90 Element* webkitFullscreenElement() const { return !m_fullScreenElementStack. isEmpty() ? m_fullScreenElementStack.last().get() : 0; }
91 void webkitExitFullscreen(); 91 void webkitExitFullscreen();
92 92
93 bool webkitIsFullScreen() const { return m_fullScreenElement.get(); } 93 bool webkitIsFullScreen() const { return m_fullScreenElement.get(); }
94 bool webkitFullScreenKeyboardInputAllowed() const { return m_fullScreenEleme nt.get() && m_areKeysEnabledInFullScreen; } 94 bool webkitFullScreenKeyboardInputAllowed() const { return m_fullScreenEleme nt.get() && m_areKeysEnabledInFullScreen; }
95 Element* webkitCurrentFullScreenElement() const { return m_fullScreenElement .get(); } 95 Element* webkitCurrentFullScreenElement() const { return m_fullScreenElement .get(); }
96 96
97 virtual void documentWasDetached() OVERRIDE; 97 virtual void documentWasDetached() OVERRIDE;
98 virtual void documentWasDisposed() OVERRIDE; 98 virtual void documentWasDisposed() OVERRIDE;
99 99
100 private: 100 private:
101 static FullscreenElementStack* fromIfExistsSlow(Document*); 101 static FullscreenElementStack* fromIfExistsSlow(Document&);
102 102
103 explicit FullscreenElementStack(Document*); 103 explicit FullscreenElementStack(Document&);
104 104
105 Document* document(); 105 Document* document();
106 void fullScreenChangeDelayTimerFired(Timer<FullscreenElementStack>*); 106 void fullScreenChangeDelayTimerFired(Timer<FullscreenElementStack>*);
107 107
108 bool m_areKeysEnabledInFullScreen; 108 bool m_areKeysEnabledInFullScreen;
109 RefPtr<Element> m_fullScreenElement; 109 RefPtr<Element> m_fullScreenElement;
110 Vector<RefPtr<Element> > m_fullScreenElementStack; 110 Vector<RefPtr<Element> > m_fullScreenElementStack;
111 RenderFullScreen* m_fullScreenRenderer; 111 RenderFullScreen* m_fullScreenRenderer;
112 Timer<FullscreenElementStack> m_fullScreenChangeDelayTimer; 112 Timer<FullscreenElementStack> m_fullScreenChangeDelayTimer;
113 Deque<RefPtr<Node> > m_fullScreenChangeEventTargetQueue; 113 Deque<RefPtr<Node> > m_fullScreenChangeEventTargetQueue;
114 Deque<RefPtr<Node> > m_fullScreenErrorEventTargetQueue; 114 Deque<RefPtr<Node> > m_fullScreenErrorEventTargetQueue;
115 LayoutRect m_savedPlaceholderFrameRect; 115 LayoutRect m_savedPlaceholderFrameRect;
116 RefPtr<RenderStyle> m_savedPlaceholderRenderStyle; 116 RefPtr<RenderStyle> m_savedPlaceholderRenderStyle;
117 }; 117 };
118 118
119 inline bool FullscreenElementStack::isActiveFullScreenElement(const Element* ele ment) 119 inline bool FullscreenElementStack::isActiveFullScreenElement(const Element* ele ment)
120 { 120 {
121 FullscreenElementStack* controller = fromIfExists(&element->document()); 121 FullscreenElementStack* controller = fromIfExists(element->document());
122 if (!controller) 122 if (!controller)
123 return false; 123 return false;
124 return controller->webkitIsFullScreen() && controller->webkitCurrentFullScre enElement() == element; 124 return controller->webkitIsFullScreen() && controller->webkitCurrentFullScre enElement() == element;
125 } 125 }
126 126
127 inline FullscreenElementStack* FullscreenElementStack::fromIfExists(Document* do cument) 127 inline FullscreenElementStack* FullscreenElementStack::fromIfExists(Document& do cument)
128 { 128 {
129 if (!document->hasFullscreenElementStack()) 129 if (!document.hasFullscreenElementStack())
130 return 0; 130 return 0;
131 return fromIfExistsSlow(document); 131 return fromIfExistsSlow(document);
132 } 132 }
133 133
134 } // namespace WebCore 134 } // namespace WebCore
135 135
136 #endif // FullscreenElementStack_h 136 #endif // FullscreenElementStack_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698