WebCore:
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Nov 2007 02:02:11 +0000 (02:02 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Nov 2007 02:02:11 +0000 (02:02 +0000)
commit28e56ec3e6297116c7d78567dca32a48825e5b4f
tree0df7f09c749aa71788c36aa4d75e44886be7506b
parent2df7a33f2c0967a8f0f033b0df91c410bee8a9b3
WebCore:

        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: https://svn.webkit.org/repository/webkit/trunk@28127 268f45cc-cd09-0410-ab3c-d52691b4dbfc
58 files changed:
LayoutTests/ChangeLog
LayoutTests/media/progress-event.html
LayoutTests/media/video-append-source.html
LayoutTests/media/video-autoplay.html
LayoutTests/media/video-buffered.html
LayoutTests/media/video-controls-expected.txt [new file with mode: 0644]
LayoutTests/media/video-controls.html [new file with mode: 0644]
LayoutTests/media/video-currentTime-set.html
LayoutTests/media/video-currentTime-set2.html
LayoutTests/media/video-currentTime.html
LayoutTests/media/video-dom-autoplay.html
LayoutTests/media/video-dom-end.html
LayoutTests/media/video-dom-loopcount.html
LayoutTests/media/video-dom-loopend.html
LayoutTests/media/video-dom-loopstart.html
LayoutTests/media/video-dom-src.html
LayoutTests/media/video-dom-start.html
LayoutTests/media/video-end.html
LayoutTests/media/video-error-abort.html
LayoutTests/media/video-error-does-not-exist.html
LayoutTests/media/video-load-networkState.html
LayoutTests/media/video-load-readyState.html
LayoutTests/media/video-loopcount.html
LayoutTests/media/video-loopend.html
LayoutTests/media/video-loopstart.html
LayoutTests/media/video-muted.html
LayoutTests/media/video-no-autoplay.html
LayoutTests/media/video-pause-empty-events.html
LayoutTests/media/video-play-empty-events.html
LayoutTests/media/video-play-pause-events.html
LayoutTests/media/video-play-pause-exception.html
LayoutTests/media/video-poster.html
LayoutTests/media/video-seek-past-end-paused.html
LayoutTests/media/video-seek-past-end-playing.html
LayoutTests/media/video-seekable.html
LayoutTests/media/video-seeking.html
LayoutTests/media/video-size.html
LayoutTests/media/video-source-media.html
LayoutTests/media/video-source-type.html
LayoutTests/media/video-source.html
LayoutTests/media/video-src-change.html
LayoutTests/media/video-src-remove.html
LayoutTests/media/video-src-set.html
LayoutTests/media/video-src-source.html
LayoutTests/media/video-src.html
LayoutTests/media/video-start.html
LayoutTests/media/video-volume.html
LayoutTests/media/video-width-height.html
WebCore/ChangeLog
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/css/html4.css
WebCore/html/HTMLMediaElement.cpp
WebCore/html/HTMLMediaElement.h
WebCore/rendering/RenderMedia.cpp [new file with mode: 0644]
WebCore/rendering/RenderMedia.h [new file with mode: 0644]
WebCore/rendering/RenderObject.h
WebCore/rendering/RenderVideo.cpp
WebCore/rendering/RenderVideo.h