Index: Source/core/dom/FullscreenElementStack.cpp |
diff --git a/Source/core/dom/FullscreenElementStack.cpp b/Source/core/dom/FullscreenElementStack.cpp |
index b5363bc682bbf5d5542556cfba3b794ace965954..b499a8f0ac1e7071c88014395c9cff04cf28faa0 100644 |
--- a/Source/core/dom/FullscreenElementStack.cpp |
+++ b/Source/core/dom/FullscreenElementStack.cpp |
@@ -145,13 +145,7 @@ void FullscreenElementStack::documentWasDisposed() |
} |
#endif |
-bool FullscreenElementStack::fullScreenIsAllowedForElement(Element* element) const |
-{ |
- ASSERT(element); |
- return fullscreenIsAllowedForAllOwners(element->document()); |
-} |
- |
-void FullscreenElementStack::requestFullScreenForElement(Element* element, unsigned short flags, FullScreenCheckType checkType) |
+void FullscreenElementStack::requestFullScreenForElement(Element& element, unsigned short flags, FullScreenCheckType checkType) |
{ |
// Ignore this request if the document is not in a live frame. |
if (!document()->isActive()) |
@@ -162,20 +156,17 @@ void FullscreenElementStack::requestFullScreenForElement(Element* element, unsig |
bool inLegacyMozillaMode = (flags & Element::LEGACY_MOZILLA_REQUEST); |
do { |
- if (!element) |
- element = document()->documentElement(); |
- |
// 1. If any of the following conditions are true, terminate these steps and queue a task to fire |
// an event named fullscreenerror with its bubbles attribute set to true on the context object's |
// node document: |
// The context object is not in a document. |
- if (!element->inDocument()) |
+ if (!element.inDocument()) |
break; |
// The context object's node document, or an ancestor browsing context's document does not have |
// the fullscreen enabled flag set. |
- if (checkType == EnforceIFrameAllowFullScreenRequirement && !fullScreenIsAllowedForElement(element)) |
+ if (checkType == EnforceIFrameAllowFullScreenRequirement && !fullscreenIsAllowedForAllOwners(element.document())) |
break; |
// The context object's node document fullscreen element stack is not empty and its top element |
@@ -183,7 +174,7 @@ void FullscreenElementStack::requestFullScreenForElement(Element* element, unsig |
// made via the legacy Mozilla-style API.) |
if (!m_fullScreenElementStack.isEmpty() && !inLegacyMozillaMode) { |
Element* lastElementOnStack = m_fullScreenElementStack.last().get(); |
- if (lastElementOnStack == element || !lastElementOnStack->contains(element)) |
+ if (lastElementOnStack == &element || !lastElementOnStack->contains(&element)) |
break; |
} |
@@ -237,7 +228,7 @@ void FullscreenElementStack::requestFullScreenForElement(Element* element, unsig |
// set to true on the document. |
if (!followingDoc) { |
from(*currentDoc).pushFullscreenElementStack(element); |
- addDocumentToFullScreenChangeEventQueue(currentDoc); |
+ addDocumentToFullScreenChangeEventQueue(*currentDoc); |
continue; |
} |
@@ -248,8 +239,8 @@ void FullscreenElementStack::requestFullScreenForElement(Element* element, unsig |
// ...push following document's browsing context container on document's fullscreen element |
// stack, and queue a task to fire an event named fullscreenchange with its bubbles attribute |
// set to true on document. |
- from(*currentDoc).pushFullscreenElementStack(followingDoc->ownerElement()); |
- addDocumentToFullScreenChangeEventQueue(currentDoc); |
+ from(*currentDoc).pushFullscreenElementStack(*followingDoc->ownerElement()); |
+ addDocumentToFullScreenChangeEventQueue(*currentDoc); |
continue; |
} |
@@ -259,13 +250,13 @@ void FullscreenElementStack::requestFullScreenForElement(Element* element, unsig |
// 5. Return, and run the remaining steps asynchronously. |
// 6. Optionally, perform some animation. |
m_areKeysEnabledInFullScreen = flags & Element::ALLOW_KEYBOARD_INPUT; |
- document()->frameHost()->chrome().client().enterFullScreenForElement(element); |
+ document()->frameHost()->chrome().client().enterFullScreenForElement(&element); |
// 7. Optionally, display a message indicating how the user can exit displaying the context object fullscreen. |
return; |
} while (0); |
- m_fullScreenErrorEventTargetQueue.append(element ? element : document()->documentElement()); |
+ m_fullScreenErrorEventTargetQueue.append(&element); |
m_fullScreenChangeDelayTimer.startOneShot(0, FROM_HERE); |
} |
@@ -317,7 +308,7 @@ void FullscreenElementStack::webkitExitFullscreen() |
for (WillBeHeapDeque<RefPtrWillBeMember<Document> >::iterator i = descendants.begin(); i != descendants.end(); ++i) { |
ASSERT(*i); |
from(**i).clearFullscreenElementStack(); |
- addDocumentToFullScreenChangeEventQueue(i->get()); |
+ addDocumentToFullScreenChangeEventQueue(**i); |
} |
// 5. While doc is not null, run these substeps: |
@@ -334,7 +325,7 @@ void FullscreenElementStack::webkitExitFullscreen() |
// 2. Queue a task to fire an event named fullscreenchange with its bubbles attribute set to true |
// on doc. |
- addDocumentToFullScreenChangeEventQueue(currentDoc); |
+ addDocumentToFullScreenChangeEventQueue(*currentDoc); |
// 3. If doc's fullscreen element stack is empty and doc's browsing context has a browsing context |
// container, set doc to that browsing context container's node document. |
@@ -568,24 +559,22 @@ void FullscreenElementStack::popFullscreenElementStack() |
m_fullScreenElementStack.removeLast(); |
} |
-void FullscreenElementStack::pushFullscreenElementStack(Element* element) |
+void FullscreenElementStack::pushFullscreenElementStack(Element& element) |
{ |
- m_fullScreenElementStack.append(element); |
+ m_fullScreenElementStack.append(&element); |
} |
-void FullscreenElementStack::addDocumentToFullScreenChangeEventQueue(Document* doc) |
+void FullscreenElementStack::addDocumentToFullScreenChangeEventQueue(Document& doc) |
{ |
- ASSERT(doc); |
- |
Node* target = 0; |
- if (FullscreenElementStack* fullscreen = fromIfExists(*doc)) { |
+ if (FullscreenElementStack* fullscreen = fromIfExists(doc)) { |
target = fullscreen->webkitFullscreenElement(); |
if (!target) |
target = fullscreen->webkitCurrentFullScreenElement(); |
} |
if (!target) |
- target = doc; |
+ target = &doc; |
m_fullScreenChangeEventTargetQueue.append(target); |
} |