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 Apple Inc. All rights
reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights
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 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 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 * | 10 * |
(...skipping 4864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4875 return; | 4875 return; |
4876 | 4876 |
4877 page()->chrome()->client()->exitFullScreenForElement(m_fullScreenElement.get
()); | 4877 page()->chrome()->client()->exitFullScreenForElement(m_fullScreenElement.get
()); |
4878 } | 4878 } |
4879 | 4879 |
4880 void Document::webkitWillEnterFullScreenForElement(Element* element) | 4880 void Document::webkitWillEnterFullScreenForElement(Element* element) |
4881 { | 4881 { |
4882 ASSERT(element); | 4882 ASSERT(element); |
4883 ASSERT(page() && page()->settings()->fullScreenEnabled()); | 4883 ASSERT(page() && page()->settings()->fullScreenEnabled()); |
4884 | 4884 |
| 4885 if (m_fullScreenRenderer) |
| 4886 m_fullScreenRenderer->unwrapRenderer(); |
| 4887 |
4885 m_fullScreenElement = element; | 4888 m_fullScreenElement = element; |
4886 | 4889 |
4887 // Create a placeholder block for a the full-screen element, to keep the pag
e from reflowing | 4890 // Create a placeholder block for a the full-screen element, to keep the pag
e from reflowing |
4888 // when the element is removed from the normal flow. Only do this for a Ren
derBox, as only | 4891 // when the element is removed from the normal flow. Only do this for a Ren
derBox, as only |
4889 // a box will have a frameRect. The placeholder will be created in setFullS
creenRenderer() | 4892 // a box will have a frameRect. The placeholder will be created in setFullS
creenRenderer() |
4890 // during layout. | 4893 // during layout. |
4891 RenderObject* renderer = m_fullScreenElement->renderer(); | 4894 RenderObject* renderer = m_fullScreenElement->renderer(); |
4892 bool shouldCreatePlaceholder = renderer && renderer->isBox(); | 4895 bool shouldCreatePlaceholder = renderer && renderer->isBox(); |
4893 if (shouldCreatePlaceholder) { | 4896 if (shouldCreatePlaceholder) { |
4894 m_savedPlaceholderFrameRect = toRenderBox(renderer)->frameRect(); | 4897 m_savedPlaceholderFrameRect = toRenderBox(renderer)->frameRect(); |
4895 m_savedPlaceholderRenderStyle = RenderStyle::clone(renderer->style()); | 4898 m_savedPlaceholderRenderStyle = RenderStyle::clone(renderer->style()); |
4896 } | 4899 } |
4897 | 4900 |
4898 if (m_fullScreenElement != documentElement()) | 4901 if (m_fullScreenElement != documentElement()) |
4899 m_fullScreenElement->detach(); | 4902 RenderFullScreen::wrapRenderer(renderer, this); |
4900 | 4903 |
4901 m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBou
ndaries(true); | 4904 m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBou
ndaries(true); |
4902 | 4905 |
4903 recalcStyle(Force); | 4906 recalcStyle(Force); |
4904 | 4907 |
4905 if (m_fullScreenRenderer) { | 4908 if (m_fullScreenRenderer) { |
4906 setAnimatingFullScreen(true); | 4909 setAnimatingFullScreen(true); |
4907 #if USE(ACCELERATED_COMPOSITING) | 4910 #if USE(ACCELERATED_COMPOSITING) |
4908 view()->updateCompositingLayers(); | 4911 view()->updateCompositingLayers(); |
4909 if (m_fullScreenRenderer->layer() && m_fullScreenRenderer->layer()->isCo
mposited()) | 4912 if (m_fullScreenRenderer->layer() && m_fullScreenRenderer->layer()->isCo
mposited()) |
(...skipping 30 matching lines...) Expand all Loading... |
4940 if (m_fullScreenRenderer->layer() && m_fullScreenRenderer->layer()->isCo
mposited()) | 4943 if (m_fullScreenRenderer->layer() && m_fullScreenRenderer->layer()->isCo
mposited()) |
4941 page()->chrome()->client()->setRootFullScreenLayer(m_fullScreenRende
rer->layer()->backing()->graphicsLayer()); | 4944 page()->chrome()->client()->setRootFullScreenLayer(m_fullScreenRende
rer->layer()->backing()->graphicsLayer()); |
4942 #endif | 4945 #endif |
4943 } | 4946 } |
4944 } | 4947 } |
4945 | 4948 |
4946 void Document::webkitDidExitFullScreenForElement(Element*) | 4949 void Document::webkitDidExitFullScreenForElement(Element*) |
4947 { | 4950 { |
4948 m_areKeysEnabledInFullScreen = false; | 4951 m_areKeysEnabledInFullScreen = false; |
4949 setAnimatingFullScreen(false); | 4952 setAnimatingFullScreen(false); |
4950 | 4953 |
4951 if (m_fullScreenRenderer) | 4954 if (m_fullScreenRenderer) |
4952 m_fullScreenRenderer->remove(); | 4955 m_fullScreenRenderer->unwrapRenderer(); |
4953 | |
4954 if (m_fullScreenElement != documentElement()) | |
4955 m_fullScreenElement->detach(); | |
4956 | 4956 |
4957 m_fullScreenChangeEventTargetQueue.append(m_fullScreenElement.release()); | 4957 m_fullScreenChangeEventTargetQueue.append(m_fullScreenElement.release()); |
4958 setFullScreenRenderer(0); | |
4959 #if USE(ACCELERATED_COMPOSITING) | 4958 #if USE(ACCELERATED_COMPOSITING) |
4960 page()->chrome()->client()->setRootFullScreenLayer(0); | 4959 page()->chrome()->client()->setRootFullScreenLayer(0); |
4961 #endif | 4960 #endif |
4962 scheduleForcedStyleRecalc(); | 4961 scheduleForcedStyleRecalc(); |
4963 | 4962 |
4964 m_fullScreenChangeDelayTimer.startOneShot(0); | 4963 m_fullScreenChangeDelayTimer.startOneShot(0); |
4965 } | 4964 } |
4966 | 4965 |
4967 void Document::setFullScreenRenderer(RenderFullScreen* renderer) | 4966 void Document::setFullScreenRenderer(RenderFullScreen* renderer) |
4968 { | 4967 { |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5168 if (!loader) | 5167 if (!loader) |
5169 return 0; | 5168 return 0; |
5170 | 5169 |
5171 if (m_frame->document() != this) | 5170 if (m_frame->document() != this) |
5172 return 0; | 5171 return 0; |
5173 | 5172 |
5174 return loader; | 5173 return loader; |
5175 } | 5174 } |
5176 | 5175 |
5177 } // namespace WebCore | 5176 } // namespace WebCore |
OLD | NEW |