Skip to content
  • antti@apple.com's avatar
    WebCore: · 7f6c5da8
    antti@apple.com authored
            Reviewed by Adele.
            
            Fix <rdar://problem/5624802> 
            Controller displays outside of <video> element when width and height aren't specified 
    
            - Explicitly adjust size of the controls tree root.
            - Switch RenderMedia base class back to RenderReplaced. It is easier to manage the shadow tree
              by hand. This also allows better code sharing with other replaced element classes.
            - Move duplicated layout and painting code from subclasses up to RenderReplaced.
    
            Test: media/video-controls-rendering.html
    
            * rendering/RenderHTMLCanvas.cpp:
            (WebCore::RenderHTMLCanvas::paintReplaced):
            * rendering/RenderHTMLCanvas.h:
                Share code.
            * rendering/RenderImage.cpp:
            (WebCore::RenderImage::paintReplaced):
            (WebCore::RenderImage::minimumReplacedHeight):
            * rendering/RenderImage.h:
                Share code.
            * rendering/RenderMedia.cpp:
            (WebCore::RenderMediaControlShadowRoot::RenderMediaControlShadowRoot):
            (WebCore::RenderMediaControlShadowRoot::setParent):
                Add a subclass just to get through encapsulation to use setParent().
            (WebCore::MediaControlShadowRootElement::MediaControlShadowRootElement):
                Move initialization to the constructor.
            (WebCore::RenderMedia::RenderMedia):
            (WebCore::RenderMedia::~RenderMedia):
            (WebCore::RenderMedia::layout):
                Resize and layout the controller root by hand.
            (WebCore::RenderMedia::firstChild):
            (WebCore::RenderMedia::lastChild):
            (WebCore::RenderMedia::removeChild):
                Support one child renderer for controls.
            (WebCore::RenderMedia::createControlsShadowRoot):
            * rendering/RenderMedia.h:
            (WebCore::RenderMedia::isMedia):
                Switch base class to RenderReplaced, delete the now unnecessary stuff.
            * rendering/RenderReplaced.cpp:
            (WebCore::RenderReplaced::layout):
            (WebCore::RenderReplaced::paint):
            * rendering/RenderReplaced.h:
            (WebCore::RenderReplaced::minimumReplacedHeight):
            (WebCore::RenderReplaced::paintReplaced):
                Share code.
            * rendering/RenderVideo.cpp:
            (WebCore::RenderVideo::videoSizeChanged):
                Simplify, just request relayout.
            (WebCore::RenderVideo::paintReplaced):
            (WebCore::RenderVideo::layout):
            * rendering/RenderVideo.h:
                Share code.
    
    LayoutTests:
    
            Reviewed by Adele.
            
            Test for <rdar://problem/5624802> 
            Controller displays outside of <video> element when width and height aren't specified 
    
            * media/remove-from-document.html: Improve coverage by doing relayout before finishing.
            * media/video-controls-rendering.html: Added.
            * platform/mac/media/video-controls-rendering-expected.checksum: Added.
            * platform/mac/media/video-controls-rendering-expected.png: Added.
            * platform/mac/media/video-controls-rendering-expected.txt: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@28397 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    7f6c5da8