haikuwebkit/LayoutTests/media/video-pause-empty-events-ex...

15 lines
261 B
Plaintext
Raw Permalink Normal View History

AX: Audio and Video attachments are not output to VoiceOver https://bugs.webkit.org/show_bug.cgi?id=123479 Reviewed by Mario Sanchez Prada. Source/WebCore: Video and audio elements don't appear as distinct objects in the AX hierarchy, nor are they treated as replaceable objects when emitting the text. We should treat these characters like attachments, for one. On the Mac platform, we should also identify them with special subroles. Tests: platform/mac/accessibility/media-emits-object-replacement.html platform/mac/accessibility/media-role-descriptions.html * accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::isGenericFocusableElement): * accessibility/AccessibilityObject.h: * accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored): (WebCore::AccessibilityRenderObject::determineAccessibilityRole): * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (createAccessibilityRoleMap): (-[WebAccessibilityObjectWrapper subrole]): (-[WebAccessibilityObjectWrapper roleDescription]): * editing/TextIterator.cpp: (WebCore::isRendererReplacedElement): LayoutTests: Making media elements int replaced elements has the unfortunate side-effect of causing a new line to be inserted into any test using a <video> or <audio> tag. * compositing/video/video-poster-expected.txt: * compositing/video/video-reflection-expected.txt: * compositing/visibility/visibility-simple-video-layer-expected.txt: * fast/css/first-letter-block-form-controls-crash-expected.txt: * fast/css/relative-position-replaced-in-table-display-crash-expected.txt: * fast/forms/access-key-for-all-elements-expected.txt: * fast/forms/form-associated-element-crash3-expected.txt: * fast/multicol/renderer-positioned-assert-crash-expected.txt: * fast/regions/full-screen-video-from-region-expected.txt: * fast/runin/nonblock-runin-expected.txt: * fast/spatial-navigation/snav-media-elements-expected.txt: * fullscreen/full-screen-crash-offsetLeft-expected.txt: * fullscreen/full-screen-no-style-sharing-expected.txt: * fullscreen/full-screen-stacking-context-expected.txt: * fullscreen/video-controls-drag-expected.txt: * fullscreen/video-controls-timeline-expected.txt: * fullscreen/video-cursor-auto-hide-expected.txt: * fullscreen/video-specified-size-expected.txt: * http/tests/appcache/video-expected.txt: * http/tests/media/pdf-served-as-pdf-expected.txt: * http/tests/media/reload-after-dialog-expected.txt: * http/tests/media/text-served-as-text-expected.txt: * http/tests/media/video-accept-encoding-expected.txt: * http/tests/media/video-buffered-range-contains-currentTime-expected.txt: * http/tests/media/video-cross-site-expected.txt: * http/tests/media/video-error-abort-expected.txt: * http/tests/media/video-load-suspend-expected.txt: * http/tests/media/video-play-progress-expected.txt: * http/tests/media/video-play-stall-before-meta-data-expected.txt: * http/tests/media/video-preload-expected.txt: * http/tests/media/video-redirect-expected.txt: * http/tests/media/video-referer-expected.txt: * http/tests/media/video-served-as-text-expected.txt: * http/tests/media/video-throttled-load-metadata-expected.txt: * http/tests/misc/empty-urls-expected.txt: * http/tests/security/contentSecurityPolicy/media-src-allowed-expected.txt: * http/tests/security/contentSecurityPolicy/media-src-blocked-expected.txt: * http/tests/security/local-video-poster-from-remote-expected.txt: * http/tests/security/local-video-source-from-remote-expected.txt: * http/tests/security/local-video-src-from-remote-expected.txt: * http/tests/security/text-track-crossorigin-expected.txt: * media/W3C/audio/events/event_canplay-expected.txt: * media/W3C/audio/events/event_canplay_manual-expected.txt: * media/W3C/audio/events/event_canplaythrough-expected.txt: * media/W3C/audio/events/event_canplaythrough_manual-expected.txt: * media/W3C/audio/events/event_loadeddata-expected.txt: * media/W3C/audio/events/event_loadeddata_manual-expected.txt: * media/W3C/audio/events/event_loadedmetadata-expected.txt: * media/W3C/audio/events/event_loadedmetadata_manual-expected.txt: * media/W3C/audio/events/event_loadstart-expected.txt: * media/W3C/audio/events/event_loadstart_manual-expected.txt: * media/W3C/audio/events/event_order_canplay_canplaythrough-expected.txt: * media/W3C/audio/events/event_order_canplay_playing-expected.txt: * media/W3C/audio/events/event_order_loadedmetadata_loadeddata-expected.txt: * media/W3C/audio/events/event_order_loadstart_progress-expected.txt: * media/W3C/audio/events/event_pause_manual-expected.txt: * media/W3C/audio/events/event_play-expected.txt: * media/W3C/audio/events/event_play_manual-expected.txt: * media/W3C/audio/events/event_playing-expected.txt: * media/W3C/audio/events/event_playing_manual-expected.txt: * media/W3C/audio/events/event_progress-expected.txt: * media/W3C/audio/events/event_progress_manual-expected.txt: * media/W3C/audio/events/event_timeupdate-expected.txt: * media/W3C/audio/events/event_timeupdate_manual-expected.txt: * media/W3C/audio/networkState/networkState_during_loadstart-expected.txt: * media/W3C/audio/paused/paused_false_during_play-expected.txt: * media/W3C/audio/paused/paused_true_during_pause-expected.txt: * media/W3C/audio/readyState/readyState_during_canplay-expected.txt: * media/W3C/audio/readyState/readyState_during_canplaythrough-expected.txt: * media/W3C/audio/readyState/readyState_during_loadeddata-expected.txt: * media/W3C/audio/readyState/readyState_during_loadedmetadata-expected.txt: * media/W3C/audio/readyState/readyState_during_playing-expected.txt: * media/W3C/video/canPlayType/canPlayType_application_octet_stream-expected.txt: * media/W3C/video/canPlayType/canPlayType_application_octet_stream_with_codecs_1-expected.txt: * media/W3C/video/canPlayType/canPlayType_application_octet_stream_with_codecs_2-expected.txt: * media/W3C/video/canPlayType/canPlayType_application_octet_stream_with_codecs_3-expected.txt: * media/W3C/video/canPlayType/canPlayType_bogus_type-expected.txt: * media/W3C/video/canPlayType/canPlayType_codecs_order_1-expected.txt: * media/W3C/video/canPlayType/canPlayType_method_exists-expected.txt: * media/W3C/video/canPlayType/canPlayType_supported_but_no_codecs_parameter_1-expected.txt: * media/W3C/video/canPlayType/canPlayType_two_implies_one_1-expected.txt: * media/W3C/video/canPlayType/canPlayType_two_implies_one_2-expected.txt: * media/W3C/video/currentSrc/currentSrc_empty_if_no_src-expected.txt: * media/W3C/video/currentSrc/currentSrc_property_exists-expected.txt: * media/W3C/video/error/error_null-expected.txt: * media/W3C/video/error/error_onerror_called_on_bogus_source-expected.txt: * media/W3C/video/error/error_property_exists-expected.txt: * media/W3C/video/events/event_canplay-expected.txt: * media/W3C/video/events/event_canplay_manual-expected.txt: * media/W3C/video/events/event_canplaythrough-expected.txt: * media/W3C/video/events/event_canplaythrough_manual-expected.txt: * media/W3C/video/events/event_loadeddata-expected.txt: * media/W3C/video/events/event_loadeddata_manual-expected.txt: * media/W3C/video/events/event_loadedmetadata-expected.txt: * media/W3C/video/events/event_loadedmetadata_manual-expected.txt: * media/W3C/video/events/event_loadstart-expected.txt: * media/W3C/video/events/event_loadstart_manual-expected.txt: * media/W3C/video/events/event_order_canplay_canplaythrough-expected.txt: * media/W3C/video/events/event_order_canplay_playing-expected.txt: * media/W3C/video/events/event_order_loadedmetadata_loadeddata-expected.txt: * media/W3C/video/events/event_order_loadstart_progress-expected.txt: * media/W3C/video/events/event_pause_manual-expected.txt: * media/W3C/video/events/event_play-expected.txt: * media/W3C/video/events/event_play_manual-expected.txt: * media/W3C/video/events/event_playing-expected.txt: * media/W3C/video/events/event_playing_manual-expected.txt: * media/W3C/video/events/event_progress-expected.txt: * media/W3C/video/events/event_progress_manual-expected.txt: * media/W3C/video/events/event_timeupdate-expected.txt: * media/W3C/video/events/event_timeupdate_manual-expected.txt: * media/W3C/video/networkState/networkState_during_loadstart-expected.txt: * media/W3C/video/networkState/networkState_during_progress-expected.txt: * media/W3C/video/networkState/networkState_initial-expected.txt: * media/W3C/video/networkState/networkState_property_exists-expected.txt: * media/W3C/video/paused/paused_false_during_play-expected.txt: * media/W3C/video/paused/paused_true_during_pause-expected.txt: * media/W3C/video/preload/preload_property_exists-expected.txt: * media/W3C/video/preload/preload_reflects_auto_value-expected.txt: * media/W3C/video/preload/preload_reflects_bogus_value-expected.txt: * media/W3C/video/preload/preload_reflects_empty-expected.txt: * media/W3C/video/preload/preload_reflects_metadata-expected.txt: * media/W3C/video/preload/preload_reflects_no_value-expected.txt: * media/W3C/video/preload/preload_reflects_none-expected.txt: * media/W3C/video/preload/preload_reflects_none_autoplay-expected.txt: * media/W3C/video/readyState/readyState_during_canplay-expected.txt: * media/W3C/video/readyState/readyState_during_canplaythrough-expected.txt: * media/W3C/video/readyState/readyState_during_loadeddata-expected.txt: * media/W3C/video/readyState/readyState_during_loadedmetadata-expected.txt: * media/W3C/video/readyState/readyState_during_playing-expected.txt: * media/W3C/video/readyState/readyState_initial-expected.txt: * media/W3C/video/readyState/readyState_property_exists-expected.txt: * media/W3C/video/src/src_reflects_attribute_not_source_elements-expected.txt: * media/W3C/video/src/src_reflects_no_value-expected.txt: * media/W3C/video/src/src_removal_does_not_trigger_loadstart-expected.txt: * media/audio-mpeg-supported-expected.txt: * media/audio-mpeg4-supported-expected.txt: * media/audio-only-video-intrinsic-size-expected.txt: * media/auto-play-in-sandbox-with-allow-scripts-expected.txt: * media/before-load-member-access-expected.txt: * media/broken-video-expected.txt: * media/constructors-expected.txt: * media/controls-css-overload-expected.txt: * media/controls-drag-timebar-expected.txt: * media/controls-layout-direction-expected.txt: * media/controls-right-click-on-timebar-expected.txt: * media/csp-blocks-video-expected.txt: * media/event-attributes-expected.txt: * media/media-blocked-by-beforeload-expected.txt: * media/media-blocked-by-willsendrequest-expected.txt: * media/media-can-play-mpeg-audio-expected.txt: * media/media-can-play-mpeg4-video-expected.txt: * media/media-can-play-octet-stream-expected.txt: * media/media-can-play-type-expected.txt: * media/media-can-play-wav-audio-expected.txt: * media/media-captions-expected.txt: * media/media-captions-no-controls-expected.txt: * media/media-controller-expected.txt: * media/media-controller-playback-expected.txt: * media/media-controller-playbackrate-expected.txt: * media/media-controller-time-clamp-expected.txt: * media/media-controller-time-constant-expected.txt: * media/media-controller-time-expected.txt: * media/media-controller-timeupdate-expected.txt: * media/media-controller-unpause-expected.txt: * media/media-controls-invalid-url-expected.txt: * media/media-ended-expected.txt: * media/media-extension-with-fragment-expected.txt: * media/media-fragments/TC0001-expected.txt: * media/media-fragments/TC0002-expected.txt: * media/media-fragments/TC0003-expected.txt: * media/media-fragments/TC0004-expected.txt: * media/media-fragments/TC0005-expected.txt: * media/media-fragments/TC0006-expected.txt: * media/media-fragments/TC0009-expected.txt: * media/media-fragments/TC0011-expected.txt: * media/media-fragments/TC0012-expected.txt: * media/media-fragments/TC0014-expected.txt: * media/media-fragments/TC0015-expected.txt: * media/media-fragments/TC0017-expected.txt: * media/media-fragments/TC0024-expected.txt: * media/media-fragments/TC0027-expected.txt: * media/media-fragments/TC0028-expected.txt: * media/media-fragments/TC0029-expected.txt: * media/media-fragments/TC0030-expected.txt: * media/media-fragments/TC0031-expected.txt: * media/media-fragments/TC0032-expected.txt: * media/media-fragments/TC0033-expected.txt: * media/media-fragments/TC0034-expected.txt: * media/media-fragments/TC0035-expected.txt: * media/media-fragments/TC0036-expected.txt: * media/media-fragments/TC0037-expected.txt: * media/media-fragments/TC0038-expected.txt: * media/media-fragments/TC0039-expected.txt: * media/media-fragments/TC0044-expected.txt: * media/media-fragments/TC0051-expected.txt: * media/media-fragments/TC0052-expected.txt: * media/media-fragments/TC0053-expected.txt: * media/media-fragments/TC0054-expected.txt: * media/media-fragments/TC0055-expected.txt: * media/media-fragments/TC0058-expected.txt: * media/media-fragments/TC0059-expected.txt: * media/media-fragments/TC0061-expected.txt: * media/media-fragments/TC0062-expected.txt: * media/media-fragments/TC0063-expected.txt: * media/media-fragments/TC0064-expected.txt: * media/media-fragments/TC0065-expected.txt: * media/media-fragments/TC0066-expected.txt: * media/media-fragments/TC0067-expected.txt: * media/media-fragments/TC0068-expected.txt: * media/media-fragments/TC0069-expected.txt: * media/media-fragments/TC0070-expected.txt: * media/media-fragments/TC0071-expected.txt: * media/media-fragments/TC0072-expected.txt: * media/media-fragments/TC0073-expected.txt: * media/media-fragments/TC0074-expected.txt: * media/media-fragments/TC0075-expected.txt: * media/media-fragments/TC0076-expected.txt: * media/media-fragments/TC0077-expected.txt: * media/media-fragments/TC0078-expected.txt: * media/media-fragments/TC0079-expected.txt: * media/media-fragments/TC0080-expected.txt: * media/media-fragments/TC0081-expected.txt: * media/media-fragments/TC0082-expected.txt: * media/media-fragments/TC0083-expected.txt: * media/media-fragments/TC0084-expected.txt: * media/media-fragments/TC0085-expected.txt: * media/media-fragments/TC0086-expected.txt: * media/media-fragments/TC0087-expected.txt: * media/media-fragments/TC0088-expected.txt: * media/media-fragments/TC0089-expected.txt: * media/media-fragments/TC0090-expected.txt: * media/media-fragments/TC0091-expected.txt: * media/media-fragments/TC0092-expected.txt: * media/media-fragments/TC0093-expected.txt: * media/media-fragments/TC0094-expected.txt: * media/media-fullscreen-inline-expected.txt: * media/media-preload-no-delay-loadevent-expected.txt: * media/no-autoplay-with-user-gesture-requirement-expected.txt: * media/nodesFromRect-shadowContent-expected.txt: * media/restore-from-page-cache-expected.txt: * media/sources-fallback-codecs-expected.txt: * media/track/add-and-remove-track-expected.txt: * media/track/audio-track-expected.txt: * media/track/opera/interfaces/TextTrack/addCue-expected.txt: * media/track/opera/interfaces/TextTrack/removeCue-expected.txt: * media/track/opera/interfaces/TextTrackCue/align-expected.txt: * media/track/opera/interfaces/TextTrackCue/endTime-expected.txt: * media/track/opera/interfaces/TextTrackCue/id-expected.txt: * media/track/opera/interfaces/TextTrackCue/pauseOnExit-expected.txt: * media/track/opera/interfaces/TextTrackCue/startTime-expected.txt: * media/track/opera/interfaces/TextTrackCue/track-expected.txt: * media/track/opera/interfaces/TextTrackCueList/getCueById-expected.txt: * media/track/opera/interfaces/TextTrackCueList/length-expected.txt: * media/track/text-track-cue-is-reachable-expected.txt: * media/track/text-track-is-reachable-expected.txt: * media/track/track-active-cues-expected.txt: * media/track/track-add-remove-cue-expected.txt: * media/track/track-add-track-expected.txt: * media/track/track-addtrack-kind-expected.txt: * media/track/track-automatic-subtitles-expected.txt: * media/track/track-css-all-cues-expected.txt: * media/track/track-css-cue-lifetime-expected.txt: * media/track/track-css-matching-default-expected.txt: * media/track/track-css-matching-expected.txt: * media/track/track-css-matching-lang-expected.txt: * media/track/track-css-matching-timestamps-expected.txt: * media/track/track-css-property-whitelist-expected.txt: * media/track/track-css-user-override-expected.txt: * media/track/track-cue-container-rendering-position-expected.txt: * media/track/track-cue-empty-text-crash-expected.txt: * media/track/track-cue-inline-assertion-crash-expected.txt: * media/track/track-cue-mutable-expected.txt: * media/track/track-cue-mutable-fragment-expected.txt: * media/track/track-cue-negative-timestamp-expected.txt: * media/track/track-cue-nothing-to-render-expected.txt: * media/track/track-cue-overlap-snap-to-lines-not-set-expected.txt: * media/track/track-cue-rendering-empty-cue-crash-expected.txt: * media/track/track-cue-rendering-expected.txt: * media/track/track-cue-rendering-on-resize-expected.txt: * media/track/track-cue-rendering-rtl-expected.txt: * media/track/track-cue-rendering-snap-to-lines-not-set-expected.txt: * media/track/track-cue-rendering-tree-is-removed-properly-expected.txt: * media/track/track-cue-rendering-with-padding-expected.txt: * media/track/track-cues-cuechange-expected.txt: * media/track/track-cues-enter-exit-expected.txt: * media/track/track-cues-missed-expected.txt: * media/track/track-cues-pause-on-exit-expected.txt: * media/track/track-cues-seeking-expected.txt: * media/track/track-cues-sorted-before-dispatch-expected.txt: * media/track/track-default-attribute-expected.txt: * media/track/track-disabled-addcue-expected.txt: * media/track/track-disabled-expected.txt: * media/track/track-element-load-event-expected.txt: * media/track/track-in-band-cues-added-once-expected.txt: * media/track/track-in-band-duplicate-tracks-when-source-changes-expected.txt: * media/track/track-in-band-expected.txt: * media/track/track-in-band-legacy-api-expected.txt: * media/track/track-in-band-style-expected.txt: * media/track/track-kind-expected.txt: * media/track/track-large-timestamp-expected.txt: * media/track/track-legacyapi-with-automatic-mode-expected.txt: * media/track/track-load-from-element-readyState-expected.txt: * media/track/track-load-from-src-readyState-expected.txt: * media/track/track-long-captions-file-expected.txt: * media/track/track-mode-disabled-crash-expected.txt: * media/track/track-mode-expected.txt: * media/track/track-mode-not-changed-by-new-track-expected.txt: * media/track/track-mode-triggers-loading-expected.txt: * media/track/track-remove-active-cue-crash-expected.txt: * media/track/track-remove-by-setting-innerHTML-expected.txt: * media/track/track-remove-quickly-expected.txt: * media/track/track-text-track-cue-list-expected.txt: * media/track/track-texttracks-expected.txt: * media/track/track-webvtt-tc000-empty-expected.txt: * media/track/track-webvtt-tc001-utf8-expected.txt: * media/track/track-webvtt-tc002-bom-expected.txt: * media/track/track-webvtt-tc003-newlines-expected.txt: * media/track/track-webvtt-tc004-magic-header-expected.txt: * media/track/track-webvtt-tc005-header-comment-expected.txt: * media/track/track-webvtt-tc006-cue-identifiers-expected.txt: * media/track/track-webvtt-tc007-cue-no-id-expected.txt: * media/track/track-webvtt-tc008-timings-no-hours-expected.txt: * media/track/track-webvtt-tc009-timings-hour-expected.txt: * media/track/track-webvtt-tc010-no-timings-expected.txt: * media/track/track-webvtt-tc011-blank-lines-expected.txt: * media/track/track-webvtt-tc013-settings-expected.txt: * media/track/track-webvtt-tc014-alignment-expected.txt: * media/track/track-webvtt-tc015-positioning-expected.txt: * media/track/track-webvtt-tc016-align-positioning-expected.txt: * media/track/track-webvtt-tc017-line-position-expected.txt: * media/track/track-webvtt-tc018-align-text-line-position-expected.txt: * media/track/track-webvtt-tc019-cue-size-expected.txt: * media/track/track-webvtt-tc020-cue-size-align-expected.txt: * media/track/track-webvtt-tc021-valign-expected.txt: * media/track/track-webvtt-tc022-entities-expected.txt: * media/track/track-webvtt-tc023-markup-expected.txt: * media/track/track-webvtt-tc024-timestamp-expected.txt: * media/track/track-webvtt-tc025-class-markup-expected.txt: * media/track/track-webvtt-tc026-voice-expected.txt: * media/track/track-webvtt-tc027-empty-cue-expected.txt: * media/track/track-webvtt-tc028-unsupported-markup-expected.txt: * media/track/track-word-breaking-expected.txt: * media/track/tracklist-is-reachable-expected.txt: * media/track/video-track-expected.txt: * media/unsupported-rtsp-expected.txt: * media/unsupported-tracks-expected.txt: * media/video-append-source-expected.txt: * media/video-autoplay-expected.txt: * media/video-beforeload-remove-source-expected.txt: * media/video-buffered-expected.txt: * media/video-canvas-drawing-expected.txt: * media/video-canvas-drawing-output-expected.txt: * media/video-controls-captions-trackmenu-hide-on-click-outside-expected.txt: * media/video-controls-captions-trackmenu-includes-enabled-track-expected.txt: * media/video-controls-expected.txt: * media/video-controls-transformed-expected.txt: * media/video-controls-with-mutation-event-handler-expected.txt: * media/video-controls-zoomed-expected.txt: * media/video-currentTime-delay-expected.txt: * media/video-currentTime-expected.txt: * media/video-currentTime-set-expected.txt: * media/video-currentTime-set2-expected.txt: * media/video-delay-load-event-expected.txt: * media/video-display-aspect-ratio-expected.txt: * media/video-dom-autoplay-expected.txt: * media/video-dom-preload-expected.txt: * media/video-dom-src-expected.txt: * media/video-duration-known-after-eos-expected.txt: * media/video-error-does-not-exist-expected.txt: * media/video-load-networkState-expected.txt: * media/video-load-preload-metadata-expected.txt: * media/video-load-preload-none-expected.txt: * media/video-load-readyState-expected.txt: * media/video-load-require-user-gesture-expected.txt: * media/video-loop-expected.txt: * media/video-mouse-focus-expected.txt: * media/video-muted-expected.txt: * media/video-no-autoplay-expected.txt: * media/video-pause-empty-events-expected.txt: * media/video-pause-immediately-expected.txt: * media/video-play-empty-events-expected.txt: * media/video-play-pause-events-expected.txt: * media/video-play-pause-exception-expected.txt: * media/video-play-require-user-gesture-expected.txt: * media/video-playbackrate-expected.txt: * media/video-played-collapse-expected.txt: * media/video-played-ranges-1-expected.txt: * media/video-played-reset-expected.txt: * media/video-plays-past-end-of-test-expected.txt: * media/video-poster-blocked-by-willsendrequest-expected.txt: * media/video-poster-delayed-expected.txt: * media/video-poster-expected.txt: * media/video-poster-scale-expected.txt: * media/video-preload-expected.txt: * media/video-replaces-poster-expected.txt: * media/video-reverse-play-duration-expected.txt: * media/video-seek-after-end-expected.txt: * media/video-seek-by-small-increment-expected.txt: * media/video-seek-multiple-expected.txt: * media/video-seek-no-src-exception-expected.txt: * media/video-seek-past-end-playing-expected.txt: * media/video-seekable-expected.txt: * media/video-seeking-expected.txt: * media/video-set-rate-from-pause-expected.txt: * media/video-single-valid-source-expected.txt: * media/video-size-expected.txt: * media/video-source-error-expected.txt: * media/video-source-error-no-candidate-expected.txt: * media/video-source-expected.txt: * media/video-source-inserted-expected.txt: * media/video-source-load-expected.txt: * media/video-source-none-supported-expected.txt: * media/video-source-type-expected.txt: * media/video-src-blob-expected.txt: * media/video-src-change-expected.txt: * media/video-src-empty-expected.txt: * media/video-src-expected.txt: * media/video-src-invalid-poster-expected.txt: * media/video-src-invalid-remove-expected.txt: * media/video-src-none-expected.txt: * media/video-src-plus-source-expected.txt: * media/video-src-remove-expected.txt: * media/video-src-set-expected.txt: * media/video-src-source-expected.txt: * media/video-timeupdate-during-playback-expected.txt: * media/video-timeupdate-reverse-play-expected.txt: * media/video-volume-expected.txt: * media/video-width-height-expected.txt: * platform/mac/accessibility/media-element-expected.txt: * platform/mac/accessibility/media-emits-object-replacement-expected.txt: Added. * platform/mac/accessibility/media-emits-object-replacement.html: Added. * platform/mac/accessibility/media-role-descriptions-expected.txt: Added. * platform/mac/accessibility/media-role-descriptions.html: Added. * platform/mac/compositing/video/video-object-fit-expected.txt: * platform/mac/fullscreen/video-controls-override-expected.txt: * platform/mac/media/media-can-play-wav-audio-expected.txt: * platform/mac/media/media-can-play-webm-expected.txt: * platform/mac/media/video-seek-past-end-paused-expected.txt: Canonical link: https://commits.webkit.org/142070@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@158743 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-11-06 14:15:42 +00:00
Test that pause() from EMPTY network state triggers load()
2010-08-11 Eric Carlson <eric.carlson@apple.com> Reviewed by Darin Adler. Inserting a <source> element should immediately set networkState to NETWORK_NO_SOURCE. https://bugs.webkit.org/show_bug.cgi?id=42897 A <source> element inserted as a child of a media element with a networkState of NETWORK_EMPTY should cause the networkState to immediately change to NETWORK_NO_SOURCE. * WebCore.xcodeproj/project.pbxproj: * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::HTMLMediaElement): Remove unused variable m_processingLoad. (WebCore::HTMLMediaElement::prepareForLoad): Set m_networkState to NETWORK_NO_SOURCE. (WebCore::HTMLMediaElement::loadInternal): Remove unused variable m_processingLoad. (WebCore::HTMLMediaElement::selectMediaResource): No need to change m_networkState, it was done in prepareForLoad. * html/HTMLMediaElement.h: * html/HTMLSourceElement.cpp: (WebCore::HTMLSourceElement::insertedIntoTree): Renamed from insertedIntoDocument because we want to do this setup whether or not the parent media element is in the document. * html/HTMLSourceElement.h: 2010-08-11 Eric Carlson <eric.carlson@apple.com> Reviewed by Darin Adler. Inserting a <source> element should immediately set networkState to NETWORK_NO_SOURCE. https://bugs.webkit.org/show_bug.cgi?id=42897 * media/remove-from-document-no-load-expected.txt: * media/remove-from-document-no-load.html: * media/video-pause-empty-events-expected.txt: * media/video-pause-empty-events.html: * media/video-source-inserted-expected.txt: Added. * media/video-source-inserted.html: Added. Canonical link: https://commits.webkit.org/55972@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@65170 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2010-08-11 18:56:50 +00:00
EXPECTED (video.networkState == '3') OK
RUN(video.pause())
2009-03-23 Eric Carlson <eric.carlson@apple.com> Reviewed by Adele Peterson. https://bugs.webkit.org/show_bug.cgi?id=24588 Update media element implementation to current HTML5 spec New tests: media/media-constants.html media/video-seek-no-src-exception.html media/video-source-add-src.html media/video-src-invalid-remove.html media/video-src-plus-source.html media/video-timeupdate-during-playback.html * dom/EventNames.h: Remove obsolute events, add new ones. * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize new member vars. (WebCore::HTMLMediaElement::attributeChanged): Trigger load() only when we don't have a source. (WebCore::HTMLMediaElement::removedFromDocument): Deal with state name changes. (WebCore::HTMLMediaElement::scheduleProgressEvent): New, create a progress event and add it to the event queue to be dispatch when the timer fires. (WebCore::HTMLMediaElement::scheduleEvent): New, create a generic event and add it to the event queue to be dispatch when the timer fires. (WebCore::HTMLMediaElement::enqueueEvent): Add an event to the queue and ticke the asynch event timer. (WebCore::HTMLMediaElement::asyncEventTimerFired): Dispatch all pending events. (WebCore::HTMLMediaElement::loadTimerFired): Either trigger the initial load or try to load the next <source> url. (WebCore::HTMLMediaElement::load): Minor style change. (WebCore::HTMLMediaElement::loadInternal): The first part of the spec load algorithm, cleanup the current load (if any) and set up state for a new load. (WebCore::HTMLMediaElement::selectMediaResource): Deal with no 'src' or <source>, post 'loadstart' event, and initiate load from 'src' if present. (WebCore::HTMLMediaElement::loadNextSourceChild): Initiate load from next <source> url, or trigger noneSupported() if no more to consider. (WebCore::HTMLMediaElement::loadResource): Instantiate a new MediaPlayer and ask it to load a url. (WebCore::HTMLMediaElement::startProgressEventTimer): Start the repeating progress event timer. (WebCore::HTMLMediaElement::noneSupported): Post error event and set up state when no valid media url was found. (WebCore::HTMLMediaElement::mediaEngineError): Post error event and set up state when no valid media engine failed with a decode error or a network error. (WebCore::HTMLMediaElement::mediaPlayerNetworkStateChanged): (WebCore::HTMLMediaElement::setNetworkState): Updated for new spec network states. (WebCore::HTMLMediaElement::mediaPlayerReadyStateChanged): (WebCore::HTMLMediaElement::setReadyState): Updated for new spec ready state. (WebCore::HTMLMediaElement::progressEventTimerFired): Bail if the network is not active. (WebCore::HTMLMediaElement::seek): Return INVALID_STATE_ERR exception if state is too low or if player hasn't been set up yet. This is necessary becase load() is async. Clear the flag we use to guard against sending 'ended' more than once. (WebCore::HTMLMediaElement::duration): Don't bother calling media engine before it has metadata. (WebCore::HTMLMediaElement::setDefaultPlaybackRate): Remove exception param, 0 is no longer an invalid rate. (WebCore::HTMLMediaElement::setPlaybackRate): Remove exception param, 0 is no longer an invalid rate. Cache rate being set so we can use it later if media engine isn't ready now. (WebCore::HTMLMediaElement::play): Remove exception param, play() before load() now just starts loading asynchronously. (WebCore::HTMLMediaElement::playInternal): Remove exception param. Fire 'waiting' or 'playing' event depending on current state. (WebCore::HTMLMediaElement::pause): Remove exception param, pause() before load() now just starts loading asynchronously. (WebCore::HTMLMediaElement::pauseInternal): Remove exception param. (WebCore::HTMLMediaElement::setVolume): dispatchEventAsync -> scheduleEvent (WebCore::HTMLMediaElement::setMuted): dispatchEventAsync -> scheduleEvent (WebCore::HTMLMediaElement::togglePlayState): Remove exception param. (WebCore::HTMLMediaElement::beginScrubbing): pause() doesn't take an exception param. (WebCore::HTMLMediaElement::startPlaybackProgressTimer): New, starts timer that fires 4 times per second when the movie is playing to timeupdate so we can post 'timeupdate' events. (WebCore::HTMLMediaElement::playbackProgressTimerFired): Timer proc. (WebCore::HTMLMediaElement::scheduleTimeupdateEvent): Bottleneck around scheduling a 'timeupdate' event because we both fire them them when the spec says we should and when the media engine says that time has jumped, but we don't want to fire more than one at a given movie time. We also use this bottleneck to keep track of the last time one was posted so we won't fire too often during playback. (WebCore::HTMLMediaElement::canPlay): readyState now tracks whether or not we have metadata. (WebCore::HTMLMediaElement::havePotentialSourceChild): New, checks to see if there are a <source> element with a 'src' attribute that we have not tried to load yet. (WebCore::HTMLMediaElement::nextSourceChild): New, returns the url and content type of the next <source> element that we haven't tried to load. (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Schedule 'seeked' event when seeking completes. Set a flag when we post the 'ended' event, clear it when time changed and we aren't at the end since some media engines call this proc more than once when playback reaches the end and stops, but we don't want to post 'ended' more than once. (WebCore::HTMLMediaElement::mediaPlayerDurationChanged): New, added so media engine can inform when the movie duration changes and we can post 'durationchanged' event. (WebCore::HTMLMediaElement::mediaPlayerRateChanged): New, added so media engine can inform when the rate changed and we can updated our cached rate. This is useful because we only want to know post periodic 'timeupdate' events when the movie is actually playing, and because we want to know the actual playback rate when it differs from what we tried to set. (WebCore::HTMLMediaElement::mediaPlayerSizeChanged): New, added so media engine can inform when a movie's intrinsic size changes and we can inform the renderer. (WebCore::HTMLMediaElement::potentiallyPlaying): Renamed from activelyPlaying since the spec now uses "actively playing" for this concept. Update logic for new state names and un-comment calls to stoppedDueToErrors() and pausedForUserInteraction() since the spec says those condiditons are part of the answer. (WebCore::HTMLMediaElement::endedPlayback): Update logic for new state names. (WebCore::HTMLMediaElement::stoppedDueToErrors): New, spec says this logic should be part of the determination of "potentially playing". (WebCore::HTMLMediaElement::pausedForUserInteraction): New, placeholder for when (if) user agent supports this spec concept. (WebCore::HTMLMediaElement::updatePlayState): Stop timer used to fire periodic 'timeupdate' events when we pauses the movie. Set the media engine rate before calling play() in case it wasn't set up when the rate was changed. (WebCore::HTMLMediaElement::stopPeriodicTimers): New, stop the progress event and 'timeupate' event timers. (WebCore::HTMLMediaElement::userCancelledLoad): New, logic pulled out of documentWillBecomeInactive and updated for the current spec. (WebCore::HTMLMediaElement::documentWillBecomeInactive): Moved some logic to userCancelledLoad. (WebCore::HTMLMediaElement::documentDidBecomeActive): Update comments. (WebCore::HTMLMediaElement::initialURL): Update for refactoring of code that determines the initial url. * html/HTMLMediaElement.h: Change ReadyState and NetworkState enums to match names in the spec, update for changes in .cpp. (WebCore::HTMLMediaElement::): * html/HTMLMediaElement.idl: Update ready state and network state constants for spec changes. defaultPlaybackRate, playbackRate, play(), and pause() no longer raise exceptions. * html/HTMLSourceElement.cpp: (WebCore::HTMLSourceElement::insertedIntoDocument): Update for network state name changes. * html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::updatePosterImage): Update for ready state name changes. * html/MediaError.h: (WebCore::MediaError::): add MEDIA_ERR_NONE_SUPPORTED. * html/MediaError.idl: add MEDIA_ERR_NONE_SUPPORTED. * loader/MediaDocument.cpp: (WebCore::MediaDocument::defaultEventHandler): play() and pause() don't take an exception. * platform/graphics/MediaPlayer.cpp: (WebCore::NullMediaPlayerPrivate::readyState): Update for newtork state name changes. (WebCore::MediaPlayer::sizeChanged): New, so engine can report intrinsic size changes. (WebCore::MediaPlayer::rateChanged): New, so engine can report rate changes. (WebCore::MediaPlayer::durationChanged): New, so engine can report duration changes. * platform/graphics/MediaPlayer.h: Update NetworkState and ReadyState enum names to match spec states. (WebCore::MediaPlayerClient::mediaPlayerDurationChanged): New. (WebCore::MediaPlayerClient::mediaPlayerRateChanged): New. (WebCore::MediaPlayerClient::mediaPlayerSizeChanged): New. (WebCore::MediaPlayer::): * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::load): Ditto. (WebCore::MediaPlayerPrivate::updateStates): Ditto. (WebCore::MediaPlayerPrivate::loadingFailed): Ditto. * platform/graphics/mac/MediaPlayerPrivateQTKit.h: Update for network/ready state name changes. Remove endPointTimer, it is no longer necessary. Add m_enabledTrackCount and m_duration. (WebCore::MediaPlayerPrivate::metaDataAvailable): * platform/graphics/mac/MediaPlayerPrivateQTKit.mm: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): No more m_endPointTimer or m_endTime. Initialize m_enabledTrackCount and m_duration. Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::load): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::play): No more m_endPointTimer. (WebCore::MediaPlayerPrivate::pause): Ditto. (WebCore::MediaPlayerPrivate::currentTime): No more m_endTime. (WebCore::MediaPlayerPrivate::seek): Ditto. (WebCore::MediaPlayerPrivate::doSeek): Ditto, plus don't call setRate(0) when the rate is already zero. (WebCore::MediaPlayerPrivate::setEndTime): No more m_endTime. (WebCore::MediaPlayerPrivate::updateStates): Update for network/ready state name changes. Return different errors depending on what causes a failure. Watch for and report duration changes. (WebCore::MediaPlayerPrivate::rateChanged): Report rate changes. (WebCore::MediaPlayerPrivate::sizeChanged): Report size changes. (WebCore::MediaPlayerPrivate::didEnd): No more endpoint timer. (WebCore::MediaPlayerPrivate::setVisible): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::disableUnsupportedTracks): Don't return number of unsupported tracks, store in m_enabledTrackCount so we can use it to help determine causes of failure. * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::load): Ditto. (WebCore::MediaPlayerPrivate::duration): Ditto. (WebCore::MediaPlayerPrivate::updateStates): Ditto. (WebCore::MediaPlayerPrivate::naturalSize): Ditto. * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): No more m_endPointTimer. Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::load): Update for network/ready state name changes. No more m_endPointTimer. (WebCore::MediaPlayerPrivate::play): No more m_endPointTimer. (WebCore::MediaPlayerPrivate::pause): Ditto. (WebCore::MediaPlayerPrivate::setEndTime): Ditto. (WebCore::MediaPlayerPrivate::updateStates): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::didEnd): No more m_endPointTimer. * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h: * rendering/MediaControlElements.cpp: (WebCore::MediaControlPlayButtonElement::defaultEventHandler): Update for network/ready state name changes. (WebCore::MediaControlSeekButtonElement::defaultEventHandler): Ditto. 2009-03-23 Eric Carlson <eric.carlson@apple.com> Reviewed by Adele Peterson. https://bugs.webkit.org/show_bug.cgi?id=24588 Bug 24588: Update media element implementation to current spec * media/media-constants-expected.txt: Test all media constants. * media/media-constants.html: Ditto. * media/remove-from-document-expected.txt: Updated for spec changes. * media/remove-from-document-no-load.html: Ditto. * media/remove-from-document.html: Ditto. * media/unsupported-rtsp-expected.txt: Ditto. * media/unsupported-rtsp.html: Ditto. * media/video-currentTime-set-expected.txt: Ditto. * media/video-currentTime-set.html: Ditto. * media/video-error-does-not-exist-expected.txt: Ditto. * media/video-error-does-not-exist.html: Ditto. * media/video-load-networkState-expected.txt: Ditto. * media/video-load-networkState.html: Ditto. * media/video-load-readyState-expected.txt: Ditto. * media/video-load-readyState.html: Ditto. * media/video-loop-expected.txt: Ditto. * media/video-loop.html: Ditto. * media/video-pause-empty-events-expected.txt: Ditto. * media/video-pause-empty-events.html: Ditto. * media/video-play-empty-events-expected.txt: Ditto. * media/video-play-empty-events.html: Ditto. * media/video-play-pause-events-expected.txt: Ditto. * media/video-play-pause-events.html: Ditto. * media/video-play-pause-exception-expected.txt: Ditto. * media/video-play-pause-exception.html: Ditto. * media/video-seek-no-src-exception-expected.txt: Test that seeking whene there is no 'src' attribute throws an INVALID_STATE_ERR exception. * media/video-seek-no-src-exception.html: * media/video-seek-past-end-playing-expected.txt: Ditto. * media/video-seek-past-end-playing.html: Ditto. * media/video-seeking-expected.txt: Ditto. * media/video-seeking.html: Ditto. * media/video-source-add-src-expected.txt: Test that adding a 'src' attribute does nothing when a <source> element has already been chosen. * media/video-source-add-src.html: * media/video-src-change-expected.txt: Ditto. * media/video-src-change.html: Ditto. * media/video-src-invalid-remove-expected.txt: Test that removing invalid 'src' attribute triggers <source> elements loading. * media/video-src-invalid-remove.html: * media/video-src-plus-source-expected.txt: Test that a <source> element is not used when a bogus 'src' attribute is present. * media/video-src-plus-source.html: * media/video-src-remove-expected.txt: Ditto. * media/video-src-remove.html: Ditto. * media/video-test.js: (findMediaElement): (testExpected): (waitForEvent): (failTest): * media/video-timeupdate-during-playback-expected.txt: Test that 'timeupdate' events are posted while an element is playing but not while paused. * media/video-timeupdate-during-playback.html: * platform/mac/Skipped: Skip media/video-error-abort.html for now, need to figure out how to test now that the 'loadstart' event is now fired asynchronously. * platform/win/Skipped Canonical link: https://commits.webkit.org/33964@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@41907 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2009-03-23 15:02:34 +00:00
SCRIPT DONE
2008-09-25 Eric Carlson <eric.carlson@apple.com> Reviewed by Eric Seidel. <rdar://problem/6171047> HTMLMediaElement "begin" event is now "loadstart" https://bugs.webkit.org/show_bug.cgi?id=21003 * dom/EventNames.h: remove "begin" event * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::load): Post "loadstart" event instead of "begin" 2008-09-25 Eric Carlson <eric.carlson@apple.com> Reviewed by Eric Seidel. <rdar://problem/6171047> HTMLMediaElement "begin" event is now "loadstart" https://bugs.webkit.org/show_bug.cgi?id=21003 Update media layout test results for progress event name change from "begin" to "loadstart" * media/audio-constructor-expected.txt: * media/audio-constructor-src-expected.txt: * media/audio-constructor-src.html: * media/audio-constructor.html: * media/progress-event-expected.txt: * media/progress-event-total-expected.txt: * media/progress-event-total.html: * media/progress-event.html: * media/video-error-abort-expected.txt: * media/video-error-abort.html: * media/video-load-networkState-expected.txt: * media/video-load-networkState.html: * media/video-load-readyState-expected.txt: * media/video-load-readyState.html: * media/video-pause-empty-events-expected.txt: * media/video-pause-empty-events.html: * media/video-play-empty-events-expected.txt: * media/video-play-empty-events.html: * media/video-source-expected.txt: * media/video-source-media-expected.txt: * media/video-source-media.html: * media/video-source-type-expected.txt: * media/video-source-type-params-expected.txt: * media/video-source-type-params.html: * media/video-source-type.html: * media/video-source.html: * media/video-src-change-expected.txt: * media/video-src-change.html: * media/video-src-expected.txt: * media/video-src-remove-expected.txt: * media/video-src-remove.html: * media/video-src-set-expected.txt: * media/video-src-set.html: * media/video-src-source-expected.txt: * media/video-src-source.html: * media/video-src.html: Canonical link: https://commits.webkit.org/29165@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@36893 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2008-09-25 15:33:02 +00:00
EVENT(loadstart)
2009-03-23 Eric Carlson <eric.carlson@apple.com> Reviewed by Adele Peterson. https://bugs.webkit.org/show_bug.cgi?id=24588 Update media element implementation to current HTML5 spec New tests: media/media-constants.html media/video-seek-no-src-exception.html media/video-source-add-src.html media/video-src-invalid-remove.html media/video-src-plus-source.html media/video-timeupdate-during-playback.html * dom/EventNames.h: Remove obsolute events, add new ones. * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize new member vars. (WebCore::HTMLMediaElement::attributeChanged): Trigger load() only when we don't have a source. (WebCore::HTMLMediaElement::removedFromDocument): Deal with state name changes. (WebCore::HTMLMediaElement::scheduleProgressEvent): New, create a progress event and add it to the event queue to be dispatch when the timer fires. (WebCore::HTMLMediaElement::scheduleEvent): New, create a generic event and add it to the event queue to be dispatch when the timer fires. (WebCore::HTMLMediaElement::enqueueEvent): Add an event to the queue and ticke the asynch event timer. (WebCore::HTMLMediaElement::asyncEventTimerFired): Dispatch all pending events. (WebCore::HTMLMediaElement::loadTimerFired): Either trigger the initial load or try to load the next <source> url. (WebCore::HTMLMediaElement::load): Minor style change. (WebCore::HTMLMediaElement::loadInternal): The first part of the spec load algorithm, cleanup the current load (if any) and set up state for a new load. (WebCore::HTMLMediaElement::selectMediaResource): Deal with no 'src' or <source>, post 'loadstart' event, and initiate load from 'src' if present. (WebCore::HTMLMediaElement::loadNextSourceChild): Initiate load from next <source> url, or trigger noneSupported() if no more to consider. (WebCore::HTMLMediaElement::loadResource): Instantiate a new MediaPlayer and ask it to load a url. (WebCore::HTMLMediaElement::startProgressEventTimer): Start the repeating progress event timer. (WebCore::HTMLMediaElement::noneSupported): Post error event and set up state when no valid media url was found. (WebCore::HTMLMediaElement::mediaEngineError): Post error event and set up state when no valid media engine failed with a decode error or a network error. (WebCore::HTMLMediaElement::mediaPlayerNetworkStateChanged): (WebCore::HTMLMediaElement::setNetworkState): Updated for new spec network states. (WebCore::HTMLMediaElement::mediaPlayerReadyStateChanged): (WebCore::HTMLMediaElement::setReadyState): Updated for new spec ready state. (WebCore::HTMLMediaElement::progressEventTimerFired): Bail if the network is not active. (WebCore::HTMLMediaElement::seek): Return INVALID_STATE_ERR exception if state is too low or if player hasn't been set up yet. This is necessary becase load() is async. Clear the flag we use to guard against sending 'ended' more than once. (WebCore::HTMLMediaElement::duration): Don't bother calling media engine before it has metadata. (WebCore::HTMLMediaElement::setDefaultPlaybackRate): Remove exception param, 0 is no longer an invalid rate. (WebCore::HTMLMediaElement::setPlaybackRate): Remove exception param, 0 is no longer an invalid rate. Cache rate being set so we can use it later if media engine isn't ready now. (WebCore::HTMLMediaElement::play): Remove exception param, play() before load() now just starts loading asynchronously. (WebCore::HTMLMediaElement::playInternal): Remove exception param. Fire 'waiting' or 'playing' event depending on current state. (WebCore::HTMLMediaElement::pause): Remove exception param, pause() before load() now just starts loading asynchronously. (WebCore::HTMLMediaElement::pauseInternal): Remove exception param. (WebCore::HTMLMediaElement::setVolume): dispatchEventAsync -> scheduleEvent (WebCore::HTMLMediaElement::setMuted): dispatchEventAsync -> scheduleEvent (WebCore::HTMLMediaElement::togglePlayState): Remove exception param. (WebCore::HTMLMediaElement::beginScrubbing): pause() doesn't take an exception param. (WebCore::HTMLMediaElement::startPlaybackProgressTimer): New, starts timer that fires 4 times per second when the movie is playing to timeupdate so we can post 'timeupdate' events. (WebCore::HTMLMediaElement::playbackProgressTimerFired): Timer proc. (WebCore::HTMLMediaElement::scheduleTimeupdateEvent): Bottleneck around scheduling a 'timeupdate' event because we both fire them them when the spec says we should and when the media engine says that time has jumped, but we don't want to fire more than one at a given movie time. We also use this bottleneck to keep track of the last time one was posted so we won't fire too often during playback. (WebCore::HTMLMediaElement::canPlay): readyState now tracks whether or not we have metadata. (WebCore::HTMLMediaElement::havePotentialSourceChild): New, checks to see if there are a <source> element with a 'src' attribute that we have not tried to load yet. (WebCore::HTMLMediaElement::nextSourceChild): New, returns the url and content type of the next <source> element that we haven't tried to load. (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Schedule 'seeked' event when seeking completes. Set a flag when we post the 'ended' event, clear it when time changed and we aren't at the end since some media engines call this proc more than once when playback reaches the end and stops, but we don't want to post 'ended' more than once. (WebCore::HTMLMediaElement::mediaPlayerDurationChanged): New, added so media engine can inform when the movie duration changes and we can post 'durationchanged' event. (WebCore::HTMLMediaElement::mediaPlayerRateChanged): New, added so media engine can inform when the rate changed and we can updated our cached rate. This is useful because we only want to know post periodic 'timeupdate' events when the movie is actually playing, and because we want to know the actual playback rate when it differs from what we tried to set. (WebCore::HTMLMediaElement::mediaPlayerSizeChanged): New, added so media engine can inform when a movie's intrinsic size changes and we can inform the renderer. (WebCore::HTMLMediaElement::potentiallyPlaying): Renamed from activelyPlaying since the spec now uses "actively playing" for this concept. Update logic for new state names and un-comment calls to stoppedDueToErrors() and pausedForUserInteraction() since the spec says those condiditons are part of the answer. (WebCore::HTMLMediaElement::endedPlayback): Update logic for new state names. (WebCore::HTMLMediaElement::stoppedDueToErrors): New, spec says this logic should be part of the determination of "potentially playing". (WebCore::HTMLMediaElement::pausedForUserInteraction): New, placeholder for when (if) user agent supports this spec concept. (WebCore::HTMLMediaElement::updatePlayState): Stop timer used to fire periodic 'timeupdate' events when we pauses the movie. Set the media engine rate before calling play() in case it wasn't set up when the rate was changed. (WebCore::HTMLMediaElement::stopPeriodicTimers): New, stop the progress event and 'timeupate' event timers. (WebCore::HTMLMediaElement::userCancelledLoad): New, logic pulled out of documentWillBecomeInactive and updated for the current spec. (WebCore::HTMLMediaElement::documentWillBecomeInactive): Moved some logic to userCancelledLoad. (WebCore::HTMLMediaElement::documentDidBecomeActive): Update comments. (WebCore::HTMLMediaElement::initialURL): Update for refactoring of code that determines the initial url. * html/HTMLMediaElement.h: Change ReadyState and NetworkState enums to match names in the spec, update for changes in .cpp. (WebCore::HTMLMediaElement::): * html/HTMLMediaElement.idl: Update ready state and network state constants for spec changes. defaultPlaybackRate, playbackRate, play(), and pause() no longer raise exceptions. * html/HTMLSourceElement.cpp: (WebCore::HTMLSourceElement::insertedIntoDocument): Update for network state name changes. * html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::updatePosterImage): Update for ready state name changes. * html/MediaError.h: (WebCore::MediaError::): add MEDIA_ERR_NONE_SUPPORTED. * html/MediaError.idl: add MEDIA_ERR_NONE_SUPPORTED. * loader/MediaDocument.cpp: (WebCore::MediaDocument::defaultEventHandler): play() and pause() don't take an exception. * platform/graphics/MediaPlayer.cpp: (WebCore::NullMediaPlayerPrivate::readyState): Update for newtork state name changes. (WebCore::MediaPlayer::sizeChanged): New, so engine can report intrinsic size changes. (WebCore::MediaPlayer::rateChanged): New, so engine can report rate changes. (WebCore::MediaPlayer::durationChanged): New, so engine can report duration changes. * platform/graphics/MediaPlayer.h: Update NetworkState and ReadyState enum names to match spec states. (WebCore::MediaPlayerClient::mediaPlayerDurationChanged): New. (WebCore::MediaPlayerClient::mediaPlayerRateChanged): New. (WebCore::MediaPlayerClient::mediaPlayerSizeChanged): New. (WebCore::MediaPlayer::): * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::load): Ditto. (WebCore::MediaPlayerPrivate::updateStates): Ditto. (WebCore::MediaPlayerPrivate::loadingFailed): Ditto. * platform/graphics/mac/MediaPlayerPrivateQTKit.h: Update for network/ready state name changes. Remove endPointTimer, it is no longer necessary. Add m_enabledTrackCount and m_duration. (WebCore::MediaPlayerPrivate::metaDataAvailable): * platform/graphics/mac/MediaPlayerPrivateQTKit.mm: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): No more m_endPointTimer or m_endTime. Initialize m_enabledTrackCount and m_duration. Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::load): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::play): No more m_endPointTimer. (WebCore::MediaPlayerPrivate::pause): Ditto. (WebCore::MediaPlayerPrivate::currentTime): No more m_endTime. (WebCore::MediaPlayerPrivate::seek): Ditto. (WebCore::MediaPlayerPrivate::doSeek): Ditto, plus don't call setRate(0) when the rate is already zero. (WebCore::MediaPlayerPrivate::setEndTime): No more m_endTime. (WebCore::MediaPlayerPrivate::updateStates): Update for network/ready state name changes. Return different errors depending on what causes a failure. Watch for and report duration changes. (WebCore::MediaPlayerPrivate::rateChanged): Report rate changes. (WebCore::MediaPlayerPrivate::sizeChanged): Report size changes. (WebCore::MediaPlayerPrivate::didEnd): No more endpoint timer. (WebCore::MediaPlayerPrivate::setVisible): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::disableUnsupportedTracks): Don't return number of unsupported tracks, store in m_enabledTrackCount so we can use it to help determine causes of failure. * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::load): Ditto. (WebCore::MediaPlayerPrivate::duration): Ditto. (WebCore::MediaPlayerPrivate::updateStates): Ditto. (WebCore::MediaPlayerPrivate::naturalSize): Ditto. * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): No more m_endPointTimer. Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::load): Update for network/ready state name changes. No more m_endPointTimer. (WebCore::MediaPlayerPrivate::play): No more m_endPointTimer. (WebCore::MediaPlayerPrivate::pause): Ditto. (WebCore::MediaPlayerPrivate::setEndTime): Ditto. (WebCore::MediaPlayerPrivate::updateStates): Update for network/ready state name changes. (WebCore::MediaPlayerPrivate::didEnd): No more m_endPointTimer. * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h: * rendering/MediaControlElements.cpp: (WebCore::MediaControlPlayButtonElement::defaultEventHandler): Update for network/ready state name changes. (WebCore::MediaControlSeekButtonElement::defaultEventHandler): Ditto. 2009-03-23 Eric Carlson <eric.carlson@apple.com> Reviewed by Adele Peterson. https://bugs.webkit.org/show_bug.cgi?id=24588 Bug 24588: Update media element implementation to current spec * media/media-constants-expected.txt: Test all media constants. * media/media-constants.html: Ditto. * media/remove-from-document-expected.txt: Updated for spec changes. * media/remove-from-document-no-load.html: Ditto. * media/remove-from-document.html: Ditto. * media/unsupported-rtsp-expected.txt: Ditto. * media/unsupported-rtsp.html: Ditto. * media/video-currentTime-set-expected.txt: Ditto. * media/video-currentTime-set.html: Ditto. * media/video-error-does-not-exist-expected.txt: Ditto. * media/video-error-does-not-exist.html: Ditto. * media/video-load-networkState-expected.txt: Ditto. * media/video-load-networkState.html: Ditto. * media/video-load-readyState-expected.txt: Ditto. * media/video-load-readyState.html: Ditto. * media/video-loop-expected.txt: Ditto. * media/video-loop.html: Ditto. * media/video-pause-empty-events-expected.txt: Ditto. * media/video-pause-empty-events.html: Ditto. * media/video-play-empty-events-expected.txt: Ditto. * media/video-play-empty-events.html: Ditto. * media/video-play-pause-events-expected.txt: Ditto. * media/video-play-pause-events.html: Ditto. * media/video-play-pause-exception-expected.txt: Ditto. * media/video-play-pause-exception.html: Ditto. * media/video-seek-no-src-exception-expected.txt: Test that seeking whene there is no 'src' attribute throws an INVALID_STATE_ERR exception. * media/video-seek-no-src-exception.html: * media/video-seek-past-end-playing-expected.txt: Ditto. * media/video-seek-past-end-playing.html: Ditto. * media/video-seeking-expected.txt: Ditto. * media/video-seeking.html: Ditto. * media/video-source-add-src-expected.txt: Test that adding a 'src' attribute does nothing when a <source> element has already been chosen. * media/video-source-add-src.html: * media/video-src-change-expected.txt: Ditto. * media/video-src-change.html: Ditto. * media/video-src-invalid-remove-expected.txt: Test that removing invalid 'src' attribute triggers <source> elements loading. * media/video-src-invalid-remove.html: * media/video-src-plus-source-expected.txt: Test that a <source> element is not used when a bogus 'src' attribute is present. * media/video-src-plus-source.html: * media/video-src-remove-expected.txt: Ditto. * media/video-src-remove.html: Ditto. * media/video-test.js: (findMediaElement): (testExpected): (waitForEvent): (failTest): * media/video-timeupdate-during-playback-expected.txt: Test that 'timeupdate' events are posted while an element is playing but not while paused. * media/video-timeupdate-during-playback.html: * platform/mac/Skipped: Skip media/video-error-abort.html for now, need to figure out how to test now that the 'loadstart' event is now fired asynchronously. * platform/win/Skipped Canonical link: https://commits.webkit.org/33964@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@41907 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2009-03-23 15:02:34 +00:00
EVENT(durationchange)
EVENT(loadedmetadata)
EVENT(loadeddata)
EVENT(canplay)
EVENT(canplaythrough)
END OF TEST