Changeset 167441 in webkit
- Timestamp:
- Apr 17, 2014 10:59:26 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r167440 r167441 1 2014-04-16 Jer Noble <jer.noble@apple.com> 2 3 Fullscreen media controls are unusable in pagination mode 4 https://bugs.webkit.org/show_bug.cgi?id=131705 5 6 Reviewed by Darin Adler. 7 8 * fullscreen/full-screen-no-style-sharing-expected.txt: Rebaselined. 9 * fullscreen/video-cursor-auto-hide.html: Corrected test to move cursor 10 to the middle of the video element. 11 1 12 2014-04-16 Jer Noble <jer.noble@apple.com> 2 13 -
trunk/LayoutTests/fullscreen/full-screen-no-style-sharing-expected.txt
r158743 r167441 1 1 2 2 EVENT(webkitfullscreenchange) TEST(video2.clientWidth==document.body.clientWidth) OK 3 3 END OF TEST -
trunk/LayoutTests/fullscreen/video-cursor-auto-hide.html
r158113 r167441 7 7 <script> 8 8 var wrapper = document.getElementById('wrapper'); 9 var video = document.getElementById('video'); 9 10 10 11 function checkForHiddenMouse() … … 18 19 if (window.internals) { 19 20 internals.settings.setTimeWithoutMouseMovementBeforeHidingControls(0); 20 wrapperBox = internals.boundingBox(wrapper);21 eventSender.mouseMoveTo( wrapperBox.left + wrapperBox.width / 2, wrapperBox.top + wrapperBox.height / 2);21 videoBox = internals.boundingBox(video); 22 eventSender.mouseMoveTo(videoBox.left + videoBox.width / 2, videoBox.top + videoBox.height / 2); 22 23 testExpected('window.internals.getCurrentCursorInfo()', 'type=Pointer hotSpot=0,0'); 23 24 setTimeout(checkForHiddenMouse, 0); -
trunk/Source/WebCore/ChangeLog
r167440 r167441 1 2014-04-15 Jer Noble <jer.noble@apple.com> 2 3 Fullscreen media controls are unusable in pagination mode 4 https://bugs.webkit.org/show_bug.cgi?id=131705 5 6 Reviewed by Darin Adler. 7 8 When pagination mode is enabled, the full screen media will (depending on the width of the 9 pagination columns) overflow its column, and hit testing will be clipped to the column. In extreme 10 cases, where the column width < 0.5 * media element width, the media controls will be entirely 11 unclickable. 12 13 Rather than making the RenderFullScreen a child of the full screen element's parent's renderer, 14 make it a child of the RenderView, putting it outside of the columns entirely. Always create and 15 insert the fullscreenRenderer's placeholder, using it as the remembered insertion point for the 16 fullscreen element's renderer when we exit full screen. 17 18 Drive-by fix: don't wrap the full screen element's renderer in webkitWillEnterFullScreenForElement(); 19 it will just be re-wrapped in createRendererIfNeeded(). 20 21 * dom/Document.cpp: 22 (WebCore::Document::webkitWillEnterFullScreenForElement): Don't wrap the full screen element's renderer. 23 (WebCore::Document::setFullScreenRenderer): Call setPlaceholderStyle. 24 * rendering/RenderFullScreen.cpp: 25 (WebCore::RenderFullScreenPlaceholder::willBeDestroyed): Call clearPlaceholder. 26 (WebCore::RenderFullScreen::wrapRenderer): Make fullscreenRenderer a child of the view(). 27 (WebCore::RenderFullScreen::unwrapRenderer): Return the children to the parent of the placeholder(). 28 (WebCore::RenderFullScreen::clearPlaceholder): Renamed from setPlaceholder(). 29 (WebCore::RenderFullScreen::ensurePlaceholder): Added. 30 (WebCore::RenderFullScreen::setPlaceholderStyle): Renamed from createPlaceholder(). 31 (WebCore::RenderFullScreen::setPlaceholder): Deleted. 32 (WebCore::RenderFullScreen::createPlaceholder): Deleted. 33 * rendering/RenderFullScreen.h: 34 1 35 2014-04-16 Jer Noble <jer.noble@apple.com> 2 36 -
trunk/Source/WebCore/dom/Document.cpp
r167406 r167441 5366 5366 } 5367 5367 5368 if (m_fullScreenElement != documentElement())5369 RenderFullScreen::wrapRenderer(renderer, renderer ? renderer->parent() : nullptr, *this);5370 5371 5368 m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(true); 5372 5369 … … 5433 5430 5434 5431 if (renderer && m_savedPlaceholderRenderStyle) 5435 renderer-> createPlaceholder(m_savedPlaceholderRenderStyle.releaseNonNull(), m_savedPlaceholderFrameRect);5432 renderer->setPlaceholderStyle(m_savedPlaceholderRenderStyle.releaseNonNull(), m_savedPlaceholderFrameRect); 5436 5433 else if (renderer && m_fullScreenRenderer && m_fullScreenRenderer->placeholder()) { 5437 5434 RenderBlock* placeholder = m_fullScreenRenderer->placeholder(); 5438 renderer-> createPlaceholder(RenderStyle::clone(&placeholder->style()), placeholder->frameRect());5435 renderer->setPlaceholderStyle(RenderStyle::clone(&placeholder->style()), placeholder->frameRect()); 5439 5436 } 5440 5437 -
trunk/Source/WebCore/rendering/RenderFullScreen.cpp
r163079 r167441 32 32 #include "RenderLayer.h" 33 33 #include "RenderLayerCompositor.h" 34 #include "RenderView.h" 34 35 35 36 namespace WebCore { … … 51 52 void RenderFullScreenPlaceholder::willBeDestroyed() 52 53 { 53 m_owner. setPlaceholder(0);54 m_owner.clearPlaceholder(); 54 55 RenderBlockFlow::willBeDestroyed(); 55 56 } … … 105 106 } 106 107 107 Render FullScreen* RenderFullScreen::wrapRenderer(RenderObject* object, RenderElement* parent, Document& document)108 RenderElement* RenderFullScreen::wrapRenderer(RenderObject* object, RenderElement* parent, Document& document) 108 109 { 109 110 RenderFullScreen* fullscreenRenderer = new RenderFullScreen(document, createFullScreenStyle()); … … 119 120 RenderBlock* containingBlock = object->containingBlock(); 120 121 ASSERT(containingBlock); 122 121 123 // Since we are moving the |object| to a new parent |fullscreenRenderer|, 122 124 // the line box tree underneath our |containingBlock| is not longer valid. 123 125 containingBlock->deleteLines(); 124 126 125 parent->addChild(fullscreenRenderer , object);127 parent->addChild(fullscreenRenderer->ensurePlaceholder(), object); 126 128 object->removeFromParent(); 127 129 … … 132 134 containingBlock->setNeedsLayoutAndPrefWidthsRecalc(); 133 135 } 136 137 object->view().addChild(fullscreenRenderer); 134 138 fullscreenRenderer->addChild(object); 135 fullscreenRenderer->setNeedsLayoutAndPrefWidthsRecalc();136 139 } 137 140 document.setFullScreenRenderer(fullscreenRenderer); 138 return fullscreenRenderer ;141 return fullscreenRenderer->ensurePlaceholder(); 139 142 } 140 143 141 144 void RenderFullScreen::unwrapRenderer() 142 145 { 143 if (p arent()) {146 if (placeholder() && placeholder()->parent()) { 144 147 RenderObject* child; 145 148 while ((child = firstChild())) { … … 150 153 toRenderBox(child)->clearOverrideSize(); 151 154 child->removeFromParent(); 152 parent()->addChild(child, this); 153 parent()->setNeedsLayoutAndPrefWidthsRecalc(); 155 placeholder()->parent()->addChild(child, m_placeholder); 154 156 } 157 158 placeholder()->removeFromParent(); 155 159 } 156 if (placeholder())157 placeholder()->removeFromParent();158 160 removeFromParent(); 159 161 document().setFullScreenRenderer(0); 160 162 } 161 163 162 void RenderFullScreen:: setPlaceholder(RenderBlock* placeholder)164 void RenderFullScreen::clearPlaceholder() 163 165 { 164 m_placeholder = placeholder;166 m_placeholder = nullptr; 165 167 } 166 168 167 void RenderFullScreen::createPlaceholder(PassRef<RenderStyle> style, const LayoutRect& frameRect) 169 RenderBlock* RenderFullScreen::ensurePlaceholder() 170 { 171 if (m_placeholder) 172 return m_placeholder; 173 174 m_placeholder = new RenderFullScreenPlaceholder(*this, RenderStyle::create()); 175 m_placeholder->initializeStyle(); 176 return m_placeholder; 177 } 178 179 void RenderFullScreen::setPlaceholderStyle(PassRef<RenderStyle> style, const LayoutRect& frameRect) 168 180 { 169 181 if (style.get().width().isAuto()) … … 172 184 style.get().setHeight(Length(frameRect.height(), Fixed)); 173 185 174 if (m_placeholder) { 175 m_placeholder->setStyle(std::move(style)); 176 return; 177 } 178 179 m_placeholder = new RenderFullScreenPlaceholder(*this, std::move(style)); 180 m_placeholder->initializeStyle(); 181 if (parent()) { 182 parent()->addChild(m_placeholder, this); 183 parent()->setNeedsLayoutAndPrefWidthsRecalc(); 184 } 186 ensurePlaceholder()->setStyle(std::move(style)); 185 187 } 186 188 -
trunk/Source/WebCore/rendering/RenderFullScreen.h
r162158 r167441 40 40 virtual const char* renderName() const override { return "RenderFullScreen"; } 41 41 42 void setPlaceholder(RenderBlock*); 42 void clearPlaceholder(); 43 RenderBlock* ensurePlaceholder(); 43 44 RenderBlock* placeholder() { return m_placeholder; } 44 void createPlaceholder(PassRef<RenderStyle>, const LayoutRect& frameRect);45 void setPlaceholderStyle(PassRef<RenderStyle>, const LayoutRect& frameRect); 45 46 46 static Render FullScreen* wrapRenderer(RenderObject*, RenderElement*, Document&);47 static RenderElement* wrapRenderer(RenderObject*, RenderElement*, Document&); 47 48 void unwrapRenderer(); 48 49
Note: See TracChangeset
for help on using the changeset viewer.