OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2010 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "core/dom/FullscreenElementStack.h" | 28 #include "core/dom/FullscreenElementStack.h" |
29 | 29 |
30 using namespace WebCore; | 30 using namespace WebCore; |
31 | 31 |
32 class RenderFullScreenPlaceholder FINAL : public RenderBlock { | 32 class RenderFullScreenPlaceholder FINAL : public RenderBlock { |
33 public: | 33 public: |
34 RenderFullScreenPlaceholder(RenderFullScreen* owner) | 34 RenderFullScreenPlaceholder(RenderFullScreen* owner) |
35 : RenderBlock(0) | 35 : RenderBlock(0) |
36 , m_owner(owner) | 36 , m_owner(owner) |
37 { | 37 { |
38 setDocumentForAnonymous(owner->document()); | 38 setDocumentForAnonymous(&owner->document()); |
39 } | 39 } |
40 private: | 40 private: |
41 virtual bool isRenderFullScreenPlaceholder() const { return true; } | 41 virtual bool isRenderFullScreenPlaceholder() const { return true; } |
42 virtual void willBeDestroyed(); | 42 virtual void willBeDestroyed(); |
43 RenderFullScreen* m_owner; | 43 RenderFullScreen* m_owner; |
44 }; | 44 }; |
45 | 45 |
46 void RenderFullScreenPlaceholder::willBeDestroyed() | 46 void RenderFullScreenPlaceholder::willBeDestroyed() |
47 { | 47 { |
48 m_owner->setPlaceholder(0); | 48 m_owner->setPlaceholder(0); |
(...skipping 18 matching lines...) Expand all Loading... |
67 { | 67 { |
68 if (m_placeholder) { | 68 if (m_placeholder) { |
69 remove(); | 69 remove(); |
70 if (!m_placeholder->beingDestroyed()) | 70 if (!m_placeholder->beingDestroyed()) |
71 m_placeholder->destroy(); | 71 m_placeholder->destroy(); |
72 ASSERT(!m_placeholder); | 72 ASSERT(!m_placeholder); |
73 } | 73 } |
74 | 74 |
75 // RenderObjects are unretained, so notify the document (which holds a point
er to a RenderFullScreen) | 75 // RenderObjects are unretained, so notify the document (which holds a point
er to a RenderFullScreen) |
76 // if it's RenderFullScreen is destroyed. | 76 // if it's RenderFullScreen is destroyed. |
77 if (document()) { | 77 FullscreenElementStack* controller = FullscreenElementStack::from(&document(
)); |
78 FullscreenElementStack* controller = FullscreenElementStack::from(docume
nt()); | 78 if (controller->fullScreenRenderer() == this) |
79 if (controller->fullScreenRenderer() == this) | 79 controller->fullScreenRendererDestroyed(); |
80 controller->fullScreenRendererDestroyed(); | |
81 } | |
82 | 80 |
83 RenderFlexibleBox::willBeDestroyed(); | 81 RenderFlexibleBox::willBeDestroyed(); |
84 } | 82 } |
85 | 83 |
86 static PassRefPtr<RenderStyle> createFullScreenStyle() | 84 static PassRefPtr<RenderStyle> createFullScreenStyle() |
87 { | 85 { |
88 RefPtr<RenderStyle> fullscreenStyle = RenderStyle::createDefaultStyle(); | 86 RefPtr<RenderStyle> fullscreenStyle = RenderStyle::createDefaultStyle(); |
89 | 87 |
90 // Create a stacking context: | 88 // Create a stacking context: |
91 fullscreenStyle->setZIndex(INT_MAX); | 89 fullscreenStyle->setZIndex(INT_MAX); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 if (child->isBox()) | 153 if (child->isBox()) |
156 toRenderBox(child)->clearOverrideSize(); | 154 toRenderBox(child)->clearOverrideSize(); |
157 child->remove(); | 155 child->remove(); |
158 parent()->addChild(child, this); | 156 parent()->addChild(child, this); |
159 parent()->setNeedsLayoutAndPrefWidthsRecalc(); | 157 parent()->setNeedsLayoutAndPrefWidthsRecalc(); |
160 } | 158 } |
161 } | 159 } |
162 if (placeholder()) | 160 if (placeholder()) |
163 placeholder()->remove(); | 161 placeholder()->remove(); |
164 remove(); | 162 remove(); |
165 FullscreenElementStack::from(document())->setFullScreenRenderer(0); | 163 FullscreenElementStack::from(&document())->setFullScreenRenderer(0); |
166 } | 164 } |
167 | 165 |
168 void RenderFullScreen::setPlaceholder(RenderBlock* placeholder) | 166 void RenderFullScreen::setPlaceholder(RenderBlock* placeholder) |
169 { | 167 { |
170 m_placeholder = placeholder; | 168 m_placeholder = placeholder; |
171 } | 169 } |
172 | 170 |
173 void RenderFullScreen::createPlaceholder(PassRefPtr<RenderStyle> style, const La
youtRect& frameRect) | 171 void RenderFullScreen::createPlaceholder(PassRefPtr<RenderStyle> style, const La
youtRect& frameRect) |
174 { | 172 { |
175 if (style->width().isAuto()) | 173 if (style->width().isAuto()) |
176 style->setWidth(Length(frameRect.width(), Fixed)); | 174 style->setWidth(Length(frameRect.width(), Fixed)); |
177 if (style->height().isAuto()) | 175 if (style->height().isAuto()) |
178 style->setHeight(Length(frameRect.height(), Fixed)); | 176 style->setHeight(Length(frameRect.height(), Fixed)); |
179 | 177 |
180 if (!m_placeholder) { | 178 if (!m_placeholder) { |
181 m_placeholder = new RenderFullScreenPlaceholder(this); | 179 m_placeholder = new RenderFullScreenPlaceholder(this); |
182 m_placeholder->setStyle(style); | 180 m_placeholder->setStyle(style); |
183 if (parent()) { | 181 if (parent()) { |
184 parent()->addChild(m_placeholder, this); | 182 parent()->addChild(m_placeholder, this); |
185 parent()->setNeedsLayoutAndPrefWidthsRecalc(); | 183 parent()->setNeedsLayoutAndPrefWidthsRecalc(); |
186 } | 184 } |
187 } else | 185 } else |
188 m_placeholder->setStyle(style); | 186 m_placeholder->setStyle(style); |
189 } | 187 } |
OLD | NEW |