mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
support seekable attribute in `htmlmediaelement`, modify `seek` algorithm to use `seekable` attribute. related [specs](https://html.spec.whatwg.org/multipage/media.html#dom-media-seekable) Testing: Run WPT Test Fixes: https://github.com/servo/servo/issues/22297 Will wait for https://github.com/servo/media/pull/435 before turning this to ready for review. cc @jdm @xiaochengh Signed-off-by: rayguo17 <rayguo17@gmail.com>
66 lines
2.4 KiB
Text
66 lines
2.4 KiB
Text
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
// https://html.spec.whatwg.org/multipage/#htmlmediaelement
|
|
|
|
enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" };
|
|
typedef (MediaStream /*or MediaSource */ or Blob) MediaProvider;
|
|
|
|
[Exposed=Window, Abstract]
|
|
interface HTMLMediaElement : HTMLElement {
|
|
// error state
|
|
readonly attribute MediaError? error;
|
|
|
|
// network state
|
|
[CEReactions] attribute USVString src;
|
|
attribute MediaProvider? srcObject;
|
|
readonly attribute USVString currentSrc;
|
|
[CEReactions] attribute DOMString? crossOrigin;
|
|
const unsigned short NETWORK_EMPTY = 0;
|
|
const unsigned short NETWORK_IDLE = 1;
|
|
const unsigned short NETWORK_LOADING = 2;
|
|
const unsigned short NETWORK_NO_SOURCE = 3;
|
|
readonly attribute unsigned short networkState;
|
|
[CEReactions] attribute DOMString preload;
|
|
readonly attribute TimeRanges buffered;
|
|
undefined load();
|
|
CanPlayTypeResult canPlayType(DOMString type);
|
|
|
|
// ready state
|
|
const unsigned short HAVE_NOTHING = 0;
|
|
const unsigned short HAVE_METADATA = 1;
|
|
const unsigned short HAVE_CURRENT_DATA = 2;
|
|
const unsigned short HAVE_FUTURE_DATA = 3;
|
|
const unsigned short HAVE_ENOUGH_DATA = 4;
|
|
readonly attribute unsigned short readyState;
|
|
readonly attribute boolean seeking;
|
|
|
|
// playback state
|
|
attribute double currentTime;
|
|
undefined fastSeek(double time);
|
|
readonly attribute unrestricted double duration;
|
|
// Date getStartDate();
|
|
readonly attribute boolean paused;
|
|
[Throws] attribute double defaultPlaybackRate;
|
|
[Throws] attribute double playbackRate;
|
|
readonly attribute TimeRanges played;
|
|
readonly attribute TimeRanges seekable;
|
|
readonly attribute boolean ended;
|
|
[CEReactions] attribute boolean autoplay;
|
|
[CEReactions] attribute boolean loop;
|
|
Promise<undefined> play();
|
|
undefined pause();
|
|
|
|
// controls
|
|
[CEReactions] attribute boolean controls;
|
|
[Throws] attribute double volume;
|
|
attribute boolean muted;
|
|
[CEReactions] attribute boolean defaultMuted;
|
|
|
|
// tracks
|
|
readonly attribute AudioTrackList audioTracks;
|
|
readonly attribute VideoTrackList videoTracks;
|
|
readonly attribute TextTrackList textTracks;
|
|
TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = "");
|
|
};
|