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

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

Issue 134753003: Reland r165710 "Replace RenderFullScreen with top layer" (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: patch for landing Created 6 years, 11 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 24 matching lines...) Expand all
35 #include "platform/geometry/LayoutRect.h" 35 #include "platform/geometry/LayoutRect.h"
36 #include "wtf/Deque.h" 36 #include "wtf/Deque.h"
37 #include "wtf/RefPtr.h" 37 #include "wtf/RefPtr.h"
38 #include "wtf/Vector.h" 38 #include "wtf/Vector.h"
39 39
40 namespace WebCore { 40 namespace WebCore {
41 41
42 class Document; 42 class Document;
43 class Element; 43 class Element;
44 class Node; 44 class Node;
45 class RenderFullScreen;
46 class RenderStyle; 45 class RenderStyle;
47 class ExecutionContext; 46 class ExecutionContext;
48 47
49 class FullscreenElementStack FINAL 48 class FullscreenElementStack FINAL
50 : public DocumentSupplement 49 : public DocumentSupplement
51 , public DocumentLifecycleObserver { 50 , public DocumentLifecycleObserver {
52 public: 51 public:
53 virtual ~FullscreenElementStack(); 52 virtual ~FullscreenElementStack();
54 static const char* supplementName(); 53 static const char* supplementName();
55 static FullscreenElementStack* from(Document*); 54 static FullscreenElementStack* from(Document*);
56 static FullscreenElementStack* fromIfExists(Document*); 55 static FullscreenElementStack* fromIfExists(Document*);
57 static Element* fullscreenElementFrom(Document*); 56 static Element* fullscreenElementFrom(Document*);
58 static Element* currentFullScreenElementFrom(Document*); 57 static Element* currentFullScreenElementFrom(Document*);
59 static bool isFullScreen(Document*); 58 static bool isFullScreen(Document*);
60 static bool isActiveFullScreenElement(const Element*); 59 static bool isActiveFullScreenElement(const Element*);
61 60
62 enum FullScreenCheckType { 61 enum FullScreenCheckType {
63 EnforceIFrameAllowFullScreenRequirement, 62 EnforceIFrameAllowFullScreenRequirement,
64 ExemptIFrameAllowFullScreenRequirement, 63 ExemptIFrameAllowFullScreenRequirement,
65 }; 64 };
66 65
67 void requestFullScreenForElement(Element*, unsigned short flags, FullScreenC heckType); 66 void requestFullScreenForElement(Element*, unsigned short flags, FullScreenC heckType);
68 void webkitCancelFullScreen(); 67 void webkitCancelFullScreen();
69 68
70 void webkitWillEnterFullScreenForElement(Element*); 69 void webkitWillEnterFullScreenForElement(Element*);
71 void webkitDidEnterFullScreenForElement(Element*); 70 void webkitDidEnterFullScreenForElement(Element*);
72 void webkitWillExitFullScreenForElement(Element*); 71 void webkitWillExitFullScreenForElement(Element*);
73 void webkitDidExitFullScreenForElement(Element*); 72 void webkitDidExitFullScreenForElement(Element*);
74 73
75 void setFullScreenRenderer(RenderFullScreen*);
76 RenderFullScreen* fullScreenRenderer() const { return m_fullScreenRenderer; }
77 void fullScreenRendererDestroyed();
78
79 void clearFullscreenElementStack(); 74 void clearFullscreenElementStack();
80 void popFullscreenElementStack(); 75 void popFullscreenElementStack();
81 void pushFullscreenElementStack(Element*); 76 void pushFullscreenElementStack(Element*);
82 void addDocumentToFullScreenChangeEventQueue(Document*); 77 void addDocumentToFullScreenChangeEventQueue(Document*);
83 78
84 bool fullScreenIsAllowedForElement(Element*) const; 79 bool fullScreenIsAllowedForElement(Element*) const;
85 void fullScreenElementRemoved(); 80 void fullScreenElementRemoved();
86 void removeFullScreenElementOfSubtree(Node*, bool amongChildrenOnly = false) ; 81 void removeFullScreenElementOfSubtree(Node*, bool amongChildrenOnly = false) ;
87 82
88 // W3C API 83 // W3C API
(...skipping 12 matching lines...) Expand all
101 static FullscreenElementStack* fromIfExistsSlow(Document*); 96 static FullscreenElementStack* fromIfExistsSlow(Document*);
102 97
103 explicit FullscreenElementStack(Document*); 98 explicit FullscreenElementStack(Document*);
104 99
105 Document* document(); 100 Document* document();
106 void fullScreenChangeDelayTimerFired(Timer<FullscreenElementStack>*); 101 void fullScreenChangeDelayTimerFired(Timer<FullscreenElementStack>*);
107 102
108 bool m_areKeysEnabledInFullScreen; 103 bool m_areKeysEnabledInFullScreen;
109 RefPtr<Element> m_fullScreenElement; 104 RefPtr<Element> m_fullScreenElement;
110 Vector<RefPtr<Element> > m_fullScreenElementStack; 105 Vector<RefPtr<Element> > m_fullScreenElementStack;
111 RenderFullScreen* m_fullScreenRenderer;
112 Timer<FullscreenElementStack> m_fullScreenChangeDelayTimer; 106 Timer<FullscreenElementStack> m_fullScreenChangeDelayTimer;
113 Deque<RefPtr<Node> > m_fullScreenChangeEventTargetQueue; 107 Deque<RefPtr<Node> > m_fullScreenChangeEventTargetQueue;
114 Deque<RefPtr<Node> > m_fullScreenErrorEventTargetQueue; 108 Deque<RefPtr<Node> > m_fullScreenErrorEventTargetQueue;
115 LayoutRect m_savedPlaceholderFrameRect; 109 LayoutRect m_savedPlaceholderFrameRect;
116 RefPtr<RenderStyle> m_savedPlaceholderRenderStyle; 110 RefPtr<RenderStyle> m_savedPlaceholderRenderStyle;
117 }; 111 };
118 112
119 inline bool FullscreenElementStack::isActiveFullScreenElement(const Element* ele ment) 113 inline bool FullscreenElementStack::isActiveFullScreenElement(const Element* ele ment)
120 { 114 {
121 FullscreenElementStack* controller = fromIfExists(&element->document()); 115 FullscreenElementStack* controller = fromIfExists(&element->document());
122 if (!controller) 116 if (!controller)
123 return false; 117 return false;
124 return controller->webkitIsFullScreen() && controller->webkitCurrentFullScre enElement() == element; 118 return controller->webkitIsFullScreen() && controller->webkitCurrentFullScre enElement() == element;
125 } 119 }
126 120
127 inline FullscreenElementStack* FullscreenElementStack::fromIfExists(Document* do cument) 121 inline FullscreenElementStack* FullscreenElementStack::fromIfExists(Document* do cument)
128 { 122 {
129 if (!document->hasFullscreenElementStack()) 123 if (!document->hasFullscreenElementStack())
130 return 0; 124 return 0;
131 return fromIfExistsSlow(document); 125 return fromIfExistsSlow(document);
132 } 126 }
133 127
134 } // namespace WebCore 128 } // namespace WebCore
135 129
136 #endif // FullscreenElementStack_h 130 #endif // FullscreenElementStack_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698