Skip to content
  • antti@apple.com's avatar
    WebCore: · 4e4658c3
    antti@apple.com authored
            Reviewed by Darin.
    
            Test: media/video-controls.html
            
            <rdar://problem/5605668>
            Implement controls attribute for video element
            
            - Add RenderMedia and make RenderVideo its subclass. Controls code goes to RenderMedia while
              video specific (painting etc) code stays in RenderVideo. For example audio controls can be implemented
              later by just instantiating RenderMedia as renderer.
            - Make media renderer hierarchy inherit from RenderBlock instead of RenderReplaced so it can 
              have child nodes (for controls).
            - Controls are implemented as a shadow DOM.
            - Current look is a placeholder. It is defined purely in CSS.
            - Some things like volume controls are not yet implemented.
            - Fade-in/out is done manually, CSS animations don't work well in shadow trees.
              
            * WebCore.xcodeproj/project.pbxproj:
            * css/html4.css:
            * html/HTMLMediaElement.cpp:
            (WebCore::HTMLMediaElement::attributeChanged):
            (WebCore::HTMLMediaElement::updateMovie):
            (WebCore::HTMLMediaElement::defaultEventHandler):
            * html/HTMLMediaElement.h:
            * rendering/RenderMedia.cpp: Added.
            (WebCore::MediaControlShadowRootElement::MediaControlShadowRootElement):
            (WebCore::MediaControlShadowRootElement::isShadowNode):
            (WebCore::MediaControlShadowRootElement::shadowParentNode):
            (WebCore::MediaControlInputElement::MediaControlInputElement):
            (WebCore::MediaControlInputElement::attachToParent):
            (WebCore::MediaControlPlayButtonElement::MediaControlPlayButtonElement):
            (WebCore::MediaControlPlayButtonElement::inPausedState):
            (WebCore::MediaControlPlayButtonElement::defaultEventHandler):
            (WebCore::MediaControlPlayButtonElement::update):
            (WebCore::MediaControlTimelineElement::MediaControlTimelineElement):
            (WebCore::MediaControlTimelineElement::defaultEventHandler):
            (WebCore::MediaControlTimelineElement::update):
            (WebCore::RenderMedia::RenderMedia):
            (WebCore::RenderMedia::~RenderMedia):
            (WebCore::RenderMedia::mediaElement):
            (WebCore::RenderMedia::movie):
            (WebCore::RenderMedia::setStyle):
            (WebCore::RenderMedia::createControlsShadowRoot):
            (WebCore::RenderMedia::createPanel):
            (WebCore::RenderMedia::createPlayButton):
            (WebCore::RenderMedia::createTimeline):
            (WebCore::RenderMedia::createTimeDisplay):
            (WebCore::RenderMedia::updateFromElement):
            (WebCore::RenderMedia::updateControls):
            (WebCore::RenderMedia::timeUpdateTimerFired):
            (WebCore::RenderMedia::updateTimeDisplay):
            (WebCore::RenderMedia::updateControlVisibility):
            (WebCore::RenderMedia::changeOpacity):
            (WebCore::RenderMedia::opacityAnimationTimerFired):
            (WebCore::RenderMedia::forwardEvent):
            * rendering/RenderMedia.h: Added.
            (WebCore::RenderMedia::renderName):
            (WebCore::RenderMedia::isMedia):
            (WebCore::RenderMedia::intrinsicSize):
            * rendering/RenderObject.h:
            (WebCore::RenderObject::isMedia):
            * rendering/RenderVideo.cpp:
            (WebCore::RenderVideo::RenderVideo):
            (WebCore::RenderVideo::videoSizeChanged):
            (WebCore::RenderVideo::paintObject):
            (WebCore::RenderVideo::layout):
            (WebCore::RenderVideo::updateFromElement):
            (WebCore::RenderVideo::calcAspectRatioWidth):
            (WebCore::RenderVideo::calcAspectRatioHeight):
            * rendering/RenderVideo.h:
    
    LayoutTests:
    
            Reviewed by Darin.
            
            <rdar://problem/5605668>
            Implement controls attribute for video element
            
            - A new test for the controls attribute.
            - Add the controls attibute to all existing video tests. This will give the code
              some additional exercise without affecting test results.
    
            * media/progress-event.html:
            * media/video-append-source.html:
            * media/video-autoplay.html:
            * media/video-buffered.html:
            * media/video-controls-expected.txt: Added.
            * media/video-controls.html: Added.
            * media/video-currentTime-set.html:
            * media/video-currentTime-set2.html:
            * media/video-currentTime.html:
            * media/video-dom-autoplay.html:
            * media/video-dom-end.html:
            * media/video-dom-loopcount.html:
            * media/video-dom-loopend.html:
            * media/video-dom-loopstart.html:
            * media/video-dom-src.html:
            * media/video-dom-start.html:
            * media/video-end.html:
            * media/video-error-abort.html:
            * media/video-error-does-not-exist.html:
            * media/video-load-networkState.html:
            * media/video-load-readyState.html:
            * media/video-loopcount.html:
            * media/video-loopend.html:
            * media/video-loopstart.html:
            * media/video-muted.html:
            * media/video-no-autoplay.html:
            * media/video-pause-empty-events.html:
            * media/video-play-empty-events.html:
            * media/video-play-pause-events.html:
            * media/video-play-pause-exception.html:
            * media/video-poster.html:
            * media/video-seek-past-end-paused.html:
            * media/video-seek-past-end-playing.html:
            * media/video-seekable.html:
            * media/video-seeking.html:
            * media/video-size.html:
            * media/video-source-media.html:
            * media/video-source-type.html:
            * media/video-source.html:
            * media/video-src-change.html:
            * media/video-src-remove.html:
            * media/video-src-set.html:
            * media/video-src-source.html:
            * media/video-src.html:
            * media/video-start.html:
            * media/video-volume.html:
            * media/video-width-height.html:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@28127 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    4e4658c3