| OLD | NEW |
| 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, 2011, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 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) 2008, 2009, 2011 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
| 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
| 11 * | 11 * |
| 12 * This library is free software; you can redistribute it and/or | 12 * This library is free software; you can redistribute it and/or |
| 13 * modify it under the terms of the GNU Library General Public | 13 * modify it under the terms of the GNU Library General Public |
| 14 * License as published by the Free Software Foundation; either | 14 * License as published by the Free Software Foundation; either |
| 15 * version 2 of the License, or (at your option) any later version. | 15 * version 2 of the License, or (at your option) any later version. |
| 16 * | 16 * |
| 17 * This library is distributed in the hope that it will be useful, | 17 * This library is distributed in the hope that it will be useful, |
| 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 5514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5533 currentDoc->popFullscreenElementStack(); | 5533 currentDoc->popFullscreenElementStack(); |
| 5534 | 5534 |
| 5535 // If doc's fullscreen element stack is non-empty and the element now
at the top is either | 5535 // If doc's fullscreen element stack is non-empty and the element now
at the top is either |
| 5536 // not in a document or its node document is not doc, repeat this sub
step. | 5536 // not in a document or its node document is not doc, repeat this sub
step. |
| 5537 newTop = currentDoc->webkitFullscreenElement(); | 5537 newTop = currentDoc->webkitFullscreenElement(); |
| 5538 if (newTop && (!newTop->inDocument() || newTop->document() != currentDoc
)) | 5538 if (newTop && (!newTop->inDocument() || newTop->document() != currentDoc
)) |
| 5539 continue; | 5539 continue; |
| 5540 | 5540 |
| 5541 // 2. Queue a task to fire an event named fullscreenchange with its bubb
les attribute set to true | 5541 // 2. Queue a task to fire an event named fullscreenchange with its bubb
les attribute set to true |
| 5542 // on doc. | 5542 // on doc. |
| 5543 Node* target = currentDoc->m_fullScreenElement.get(); | |
| 5544 if (!target) | |
| 5545 target = currentDoc; | |
| 5546 addDocumentToFullScreenChangeEventQueue(currentDoc); | 5543 addDocumentToFullScreenChangeEventQueue(currentDoc); |
| 5547 | 5544 |
| 5548 // 3. If doc's fullscreen element stack is empty and doc's browsing cont
ext has a browsing context | 5545 // 3. If doc's fullscreen element stack is empty and doc's browsing cont
ext has a browsing context |
| 5549 // container, set doc to that browsing context container's node document
. | 5546 // container, set doc to that browsing context container's node document
. |
| 5550 if (!newTop && currentDoc->ownerElement()) | 5547 if (!newTop && currentDoc->ownerElement()) { |
| 5551 currentDoc = currentDoc->ownerElement()->document(); | 5548 currentDoc = currentDoc->ownerElement()->document(); |
| 5549 continue; |
| 5550 } |
| 5552 | 5551 |
| 5553 // 4. Otherwise, set doc to null. | 5552 // 4. Otherwise, set doc to null. |
| 5554 currentDoc = 0; | 5553 currentDoc = 0; |
| 5555 } | 5554 } |
| 5556 | 5555 |
| 5557 // 6. Return, and run the remaining steps asynchronously. | 5556 // 6. Return, and run the remaining steps asynchronously. |
| 5558 // 7. Optionally, perform some animation. | 5557 // 7. Optionally, perform some animation. |
| 5559 | 5558 |
| 5560 // Only exit out of full screen window mode if there are no remaining elemen
ts in the | 5559 // Only exit out of full screen window mode if there are no remaining elemen
ts in the |
| 5561 // full screen stack. | 5560 // full screen stack. |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5654 m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBou
ndaries(false); | 5653 m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBou
ndaries(false); |
| 5655 | 5654 |
| 5656 m_areKeysEnabledInFullScreen = false; | 5655 m_areKeysEnabledInFullScreen = false; |
| 5657 | 5656 |
| 5658 if (m_fullScreenRenderer) | 5657 if (m_fullScreenRenderer) |
| 5659 m_fullScreenRenderer->unwrapRenderer(); | 5658 m_fullScreenRenderer->unwrapRenderer(); |
| 5660 | 5659 |
| 5661 m_fullScreenElement = 0; | 5660 m_fullScreenElement = 0; |
| 5662 scheduleForcedStyleRecalc(); | 5661 scheduleForcedStyleRecalc(); |
| 5663 | 5662 |
| 5664 m_fullScreenChangeDelayTimer.startOneShot(0); | 5663 // When webkitCancelFullScreen is called, we call webkitExitFullScreen on th
e topDocument(). That |
| 5664 // means that the events will be queued there. So if we have no events here,
start the timer on |
| 5665 // the exiting document. |
| 5666 Document* exitingDocument = this; |
| 5667 if (m_fullScreenChangeEventTargetQueue.isEmpty() && m_fullScreenErrorEventTa
rgetQueue.isEmpty()) |
| 5668 exitingDocument = topDocument(); |
| 5669 exitingDocument->m_fullScreenChangeDelayTimer.startOneShot(0); |
| 5665 } | 5670 } |
| 5666 | 5671 |
| 5667 void Document::setFullScreenRenderer(RenderFullScreen* renderer) | 5672 void Document::setFullScreenRenderer(RenderFullScreen* renderer) |
| 5668 { | 5673 { |
| 5669 if (renderer == m_fullScreenRenderer) | 5674 if (renderer == m_fullScreenRenderer) |
| 5670 return; | 5675 return; |
| 5671 | 5676 |
| 5672 if (renderer && m_savedPlaceholderRenderStyle) | 5677 if (renderer && m_savedPlaceholderRenderStyle) |
| 5673 renderer->createPlaceholder(m_savedPlaceholderRenderStyle.release(), m_s
avedPlaceholderFrameRect); | 5678 renderer->createPlaceholder(m_savedPlaceholderRenderStyle.release(), m_s
avedPlaceholderFrameRect); |
| 5674 else if (renderer && m_fullScreenRenderer && m_fullScreenRenderer->placehold
er()) { | 5679 else if (renderer && m_fullScreenRenderer && m_fullScreenRenderer->placehold
er()) { |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5725 void Document::fullScreenChangeDelayTimerFired(Timer<Document>*) | 5730 void Document::fullScreenChangeDelayTimerFired(Timer<Document>*) |
| 5726 { | 5731 { |
| 5727 Deque<RefPtr<Node> > changeQueue; | 5732 Deque<RefPtr<Node> > changeQueue; |
| 5728 m_fullScreenChangeEventTargetQueue.swap(changeQueue); | 5733 m_fullScreenChangeEventTargetQueue.swap(changeQueue); |
| 5729 | 5734 |
| 5730 while (!changeQueue.isEmpty()) { | 5735 while (!changeQueue.isEmpty()) { |
| 5731 RefPtr<Node> node = changeQueue.takeFirst(); | 5736 RefPtr<Node> node = changeQueue.takeFirst(); |
| 5732 if (!node) | 5737 if (!node) |
| 5733 node = documentElement(); | 5738 node = documentElement(); |
| 5734 | 5739 |
| 5735 // If the element was removed from our tree, also message the documentEl
ement. | 5740 // If the element was removed from our tree, also message the documentEl
ement. Since we may |
| 5736 if (!contains(node.get())) | 5741 // have a document hierarchy, check that node isn't in another document. |
| 5742 if (!contains(node.get()) && !node->inDocument()) |
| 5737 changeQueue.append(documentElement()); | 5743 changeQueue.append(documentElement()); |
| 5738 | 5744 |
| 5739 node->dispatchEvent(Event::create(eventNames().webkitfullscreenchangeEve
nt, true, false)); | 5745 node->dispatchEvent(Event::create(eventNames().webkitfullscreenchangeEve
nt, true, false)); |
| 5740 } | 5746 } |
| 5741 | 5747 |
| 5742 Deque<RefPtr<Node> > errorQueue; | 5748 Deque<RefPtr<Node> > errorQueue; |
| 5743 m_fullScreenErrorEventTargetQueue.swap(errorQueue); | 5749 m_fullScreenErrorEventTargetQueue.swap(errorQueue); |
| 5744 | 5750 |
| 5745 while (!errorQueue.isEmpty()) { | 5751 while (!errorQueue.isEmpty()) { |
| 5746 RefPtr<Node> node = errorQueue.takeFirst(); | 5752 RefPtr<Node> node = errorQueue.takeFirst(); |
| 5747 if (!node) | 5753 if (!node) |
| 5748 node = documentElement(); | 5754 node = documentElement(); |
| 5749 | 5755 |
| 5750 // If the node was removed from our tree, also message the documentEleme
nt. | 5756 // If the element was removed from our tree, also message the documentEl
ement. Since we may |
| 5751 if (!contains(node.get())) | 5757 // have a document hierarchy, check that node isn't in another document. |
| 5758 if (!contains(node.get()) && !node->inDocument()) |
| 5752 errorQueue.append(documentElement()); | 5759 errorQueue.append(documentElement()); |
| 5753 | 5760 |
| 5754 node->dispatchEvent(Event::create(eventNames().webkitfullscreenerrorEven
t, true, false)); | 5761 node->dispatchEvent(Event::create(eventNames().webkitfullscreenerrorEven
t, true, false)); |
| 5755 } | 5762 } |
| 5756 } | 5763 } |
| 5757 | 5764 |
| 5758 void Document::fullScreenElementRemoved() | 5765 void Document::fullScreenElementRemoved() |
| 5759 { | 5766 { |
| 5760 m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBou
ndaries(false); | 5767 m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBou
ndaries(false); |
| 5761 webkitCancelFullScreen(); | 5768 webkitCancelFullScreen(); |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6131 #if ENABLE(UNDO_MANAGER) | 6138 #if ENABLE(UNDO_MANAGER) |
| 6132 PassRefPtr<UndoManager> Document::undoManager() | 6139 PassRefPtr<UndoManager> Document::undoManager() |
| 6133 { | 6140 { |
| 6134 if (!m_undoManager) | 6141 if (!m_undoManager) |
| 6135 m_undoManager = UndoManager::create(this); | 6142 m_undoManager = UndoManager::create(this); |
| 6136 return m_undoManager; | 6143 return m_undoManager; |
| 6137 } | 6144 } |
| 6138 #endif | 6145 #endif |
| 6139 | 6146 |
| 6140 } // namespace WebCore | 6147 } // namespace WebCore |
| OLD | NEW |