mirror of
https://github.com/servo/servo.git
synced 2025-06-21 15:49:04 +01:00
Generate bindings for HTMLMediaElement.
This commit is contained in:
parent
d3108a898d
commit
a76e46416a
7 changed files with 336 additions and 0 deletions
|
@ -585,6 +585,7 @@ addHTMLElement('HTMLLegendElement')
|
||||||
addHTMLElement('HTMLLIElement')
|
addHTMLElement('HTMLLIElement')
|
||||||
addHTMLElement('HTMLLinkElement')
|
addHTMLElement('HTMLLinkElement')
|
||||||
addHTMLElement('HTMLMapElement')
|
addHTMLElement('HTMLMapElement')
|
||||||
|
addHTMLElement('HTMLMediaElement')
|
||||||
addHTMLElement('HTMLMetaElement')
|
addHTMLElement('HTMLMetaElement')
|
||||||
addHTMLElement('HTMLMeterElement')
|
addHTMLElement('HTMLMeterElement')
|
||||||
addHTMLElement('HTMLModElement')
|
addHTMLElement('HTMLModElement')
|
||||||
|
|
|
@ -0,0 +1,188 @@
|
||||||
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* 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 http://mozilla.org/MPL/2.0/.
|
||||||
|
*
|
||||||
|
* The origin of this IDL file is
|
||||||
|
* http://www.whatwg.org/specs/web-apps/current-work/#media-elements
|
||||||
|
*
|
||||||
|
* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and
|
||||||
|
* Opera Software ASA. You are granted a license to use, reproduce
|
||||||
|
* and create derivative works of this document.
|
||||||
|
*/
|
||||||
|
|
||||||
|
interface HTMLMediaElement : HTMLElement {
|
||||||
|
/*
|
||||||
|
// error state
|
||||||
|
readonly attribute MediaError? error;
|
||||||
|
*/
|
||||||
|
// network state
|
||||||
|
[SetterThrows]
|
||||||
|
attribute DOMString src;
|
||||||
|
readonly attribute DOMString currentSrc;
|
||||||
|
|
||||||
|
[SetterThrows]
|
||||||
|
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;
|
||||||
|
/*
|
||||||
|
TODO:
|
||||||
|
readonly attribute unsigned short networkState;
|
||||||
|
*/
|
||||||
|
[SetterThrows]
|
||||||
|
attribute DOMString preload;
|
||||||
|
/*
|
||||||
|
[Creator]
|
||||||
|
readonly attribute TimeRanges buffered;
|
||||||
|
*/
|
||||||
|
void load();
|
||||||
|
DOMString 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
|
||||||
|
[SetterThrows]
|
||||||
|
attribute double currentTime;
|
||||||
|
// TODO: Bug 847375 - void fastSeek(double time);
|
||||||
|
/*
|
||||||
|
TODO:
|
||||||
|
readonly attribute unrestricted double duration;
|
||||||
|
*/
|
||||||
|
// TODO: Bug 847376 - readonly attribute any startDate;
|
||||||
|
readonly attribute boolean paused;
|
||||||
|
[SetterThrows]
|
||||||
|
attribute double defaultPlaybackRate;
|
||||||
|
[SetterThrows]
|
||||||
|
attribute double playbackRate;
|
||||||
|
/*
|
||||||
|
[Creator]
|
||||||
|
readonly attribute TimeRanges played;
|
||||||
|
[Creator]
|
||||||
|
readonly attribute TimeRanges seekable;
|
||||||
|
*/
|
||||||
|
readonly attribute boolean ended;
|
||||||
|
[SetterThrows]
|
||||||
|
attribute boolean autoplay;
|
||||||
|
[SetterThrows]
|
||||||
|
attribute boolean loop;
|
||||||
|
[Throws]
|
||||||
|
void play();
|
||||||
|
[Throws]
|
||||||
|
void pause();
|
||||||
|
|
||||||
|
// TODO: Bug 847377 - mediaGroup and MediaController
|
||||||
|
// media controller
|
||||||
|
// attribute DOMString mediaGroup;
|
||||||
|
// attribute MediaController? controller;
|
||||||
|
|
||||||
|
// controls
|
||||||
|
[SetterThrows]
|
||||||
|
attribute boolean controls;
|
||||||
|
[SetterThrows]
|
||||||
|
attribute double volume;
|
||||||
|
attribute boolean muted;
|
||||||
|
[SetterThrows]
|
||||||
|
attribute boolean defaultMuted;
|
||||||
|
|
||||||
|
// TODO: Bug 847379
|
||||||
|
// tracks
|
||||||
|
//readonly attribute AudioTrackList audioTracks;
|
||||||
|
//readonly attribute VideoTrackList videoTracks;
|
||||||
|
/*
|
||||||
|
[Pref="media.webvtt.enabled"]
|
||||||
|
readonly attribute TextTrackList textTracks;
|
||||||
|
[Pref="media.webvtt.enabled"]
|
||||||
|
TextTrack addTextTrack(TextTrackKind kind,
|
||||||
|
optional DOMString label = "",
|
||||||
|
optional DOMString language = "");
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Mozilla extensions:
|
||||||
|
partial interface HTMLMediaElement {
|
||||||
|
attribute MediaStream? mozSrcObject;
|
||||||
|
attribute boolean mozPreservesPitch;
|
||||||
|
readonly attribute boolean mozAutoplayEnabled;
|
||||||
|
|
||||||
|
// Mozilla extension: stream capture
|
||||||
|
[Throws]
|
||||||
|
MediaStream mozCaptureStream();
|
||||||
|
[Throws]
|
||||||
|
MediaStream mozCaptureStreamUntilEnded();
|
||||||
|
readonly attribute boolean mozAudioCaptured;
|
||||||
|
|
||||||
|
// Mozilla extension: extra stream metadata information, used as part
|
||||||
|
// of MozAudioAvailable events and the mozWriteAudio() method. The
|
||||||
|
// mozFrameBufferLength method allows for the size of the framebuffer
|
||||||
|
// used within MozAudioAvailable events to be changed. The new size must
|
||||||
|
// be between 512 and 16384. The default size, for a media element with
|
||||||
|
// audio is (mozChannels * 1024).
|
||||||
|
[GetterThrows]
|
||||||
|
readonly attribute unsigned long mozChannels;
|
||||||
|
[GetterThrows]
|
||||||
|
readonly attribute unsigned long mozSampleRate;
|
||||||
|
[Throws]
|
||||||
|
attribute unsigned long mozFrameBufferLength;
|
||||||
|
|
||||||
|
// Mozilla extension: return embedded metadata from the stream as a
|
||||||
|
// JSObject with key:value pairs for each tag. This can be used by
|
||||||
|
// player interfaces to display the song title, artist, etc.
|
||||||
|
[Throws]
|
||||||
|
object? mozGetMetadata();
|
||||||
|
|
||||||
|
// Mozilla extension: provides access to the fragment end time if
|
||||||
|
// the media element has a fragment URI for the currentSrc, otherwise
|
||||||
|
// it is equal to the media duration.
|
||||||
|
readonly attribute double mozFragmentEnd;
|
||||||
|
|
||||||
|
// Mozilla extension: an audio channel type for media elements.
|
||||||
|
// An exception is thrown if the app tries to change the audio channel type
|
||||||
|
// without the permission (manifest file for B2G apps).
|
||||||
|
// The supported values are:
|
||||||
|
// * normal (default value)
|
||||||
|
// Automatically paused if "notification" or higher priority channel
|
||||||
|
// is played
|
||||||
|
// Use case: normal applications
|
||||||
|
// * content
|
||||||
|
// Automatically paused if "notification" or higher priority channel
|
||||||
|
// is played. Also paused if another app starts using "content"
|
||||||
|
// channel. Using this channel never affects applications using
|
||||||
|
// the "normal" channel.
|
||||||
|
// Use case: video/audio players
|
||||||
|
// * notification
|
||||||
|
// Automatically paused if "alarm" or higher priority channel is played.
|
||||||
|
// Use case: New email, incoming SMS
|
||||||
|
// * alarm
|
||||||
|
// Automatically paused if "telephony" or higher priority channel is
|
||||||
|
// played.
|
||||||
|
// User case: Alarm clock, calendar alarms
|
||||||
|
// * telephony
|
||||||
|
// Automatically paused if "ringer" or higher priority
|
||||||
|
// channel is played.
|
||||||
|
// Use case: dialer, voip
|
||||||
|
// * ringer
|
||||||
|
// Automatically paused if "publicnotification" or higher priority
|
||||||
|
// channel is played.
|
||||||
|
// Use case: dialer, voip
|
||||||
|
// * publicnotification
|
||||||
|
// Always plays in speaker, even when headphones are plugged in.
|
||||||
|
// Use case: Camera shutter sound.
|
||||||
|
[SetterThrows]
|
||||||
|
attribute DOMString mozAudioChannelType;
|
||||||
|
|
||||||
|
// In addition the media element has this new events:
|
||||||
|
// * onmozinterruptbegin - called when the media element is interrupted
|
||||||
|
// because of the audiochannel manager.
|
||||||
|
// * onmozinterruptend - called when the interruption is concluded
|
||||||
|
};
|
||||||
|
*/
|
|
@ -102,6 +102,8 @@ generate_cacheable_wrapper!(HTMLLinkElement, HTMLLinkElementBinding::Wrap)
|
||||||
generate_binding_object!(HTMLLinkElement)
|
generate_binding_object!(HTMLLinkElement)
|
||||||
generate_cacheable_wrapper!(HTMLMapElement, HTMLMapElementBinding::Wrap)
|
generate_cacheable_wrapper!(HTMLMapElement, HTMLMapElementBinding::Wrap)
|
||||||
generate_binding_object!(HTMLMapElement)
|
generate_binding_object!(HTMLMapElement)
|
||||||
|
generate_cacheable_wrapper!(HTMLMediaElement, HTMLMediaElementBinding::Wrap)
|
||||||
|
generate_binding_object!(HTMLMediaElement)
|
||||||
generate_cacheable_wrapper!(HTMLMetaElement, HTMLMetaElementBinding::Wrap)
|
generate_cacheable_wrapper!(HTMLMetaElement, HTMLMetaElementBinding::Wrap)
|
||||||
generate_binding_object!(HTMLMetaElement)
|
generate_binding_object!(HTMLMetaElement)
|
||||||
generate_cacheable_wrapper!(HTMLMeterElement, HTMLMeterElementBinding::Wrap)
|
generate_cacheable_wrapper!(HTMLMeterElement, HTMLMeterElementBinding::Wrap)
|
||||||
|
|
|
@ -54,6 +54,7 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode<ScriptView>) -> *JSObject
|
||||||
ElementNodeTypeId(HTMLLIElementTypeId) => generate_element!(HTMLLIElement),
|
ElementNodeTypeId(HTMLLIElementTypeId) => generate_element!(HTMLLIElement),
|
||||||
ElementNodeTypeId(HTMLLinkElementTypeId) => generate_element!(HTMLLinkElement),
|
ElementNodeTypeId(HTMLLinkElementTypeId) => generate_element!(HTMLLinkElement),
|
||||||
ElementNodeTypeId(HTMLMapElementTypeId) => generate_element!(HTMLMapElement),
|
ElementNodeTypeId(HTMLMapElementTypeId) => generate_element!(HTMLMapElement),
|
||||||
|
ElementNodeTypeId(HTMLMediaElementTypeId) => generate_element!(HTMLMediaElement),
|
||||||
ElementNodeTypeId(HTMLMetaElementTypeId) => generate_element!(HTMLMetaElement),
|
ElementNodeTypeId(HTMLMetaElementTypeId) => generate_element!(HTMLMetaElement),
|
||||||
ElementNodeTypeId(HTMLMeterElementTypeId) => generate_element!(HTMLMeterElement),
|
ElementNodeTypeId(HTMLMeterElementTypeId) => generate_element!(HTMLMeterElement),
|
||||||
ElementNodeTypeId(HTMLModElementTypeId) => generate_element!(HTMLModElement),
|
ElementNodeTypeId(HTMLModElementTypeId) => generate_element!(HTMLModElement),
|
||||||
|
|
|
@ -78,6 +78,7 @@ pub enum ElementTypeId {
|
||||||
HTMLLinkElementTypeId,
|
HTMLLinkElementTypeId,
|
||||||
HTMLLIElementTypeId,
|
HTMLLIElementTypeId,
|
||||||
HTMLMapElementTypeId,
|
HTMLMapElementTypeId,
|
||||||
|
HTMLMediaElementTypeId,
|
||||||
HTMLMetaElementTypeId,
|
HTMLMetaElementTypeId,
|
||||||
HTMLMeterElementTypeId,
|
HTMLMeterElementTypeId,
|
||||||
HTMLModElementTypeId,
|
HTMLModElementTypeId,
|
||||||
|
|
142
src/components/script/dom/htmlmediaelement.rs
Normal file
142
src/components/script/dom/htmlmediaelement.rs
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
/* 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 http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
use dom::bindings::utils::{DOMString, null_string, ErrorResult};
|
||||||
|
use dom::element::ElementTypeId;
|
||||||
|
use dom::htmlelement::HTMLElement;
|
||||||
|
|
||||||
|
pub struct HTMLMediaElement {
|
||||||
|
parent: HTMLElement,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl HTMLMediaElement {
|
||||||
|
pub fn new(type_id: ElementTypeId, tag_name: ~str) -> HTMLMediaElement {
|
||||||
|
HTMLMediaElement {
|
||||||
|
parent: HTMLElement::new(type_id, tag_name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl HTMLMediaElement {
|
||||||
|
pub fn Src(&self) -> DOMString {
|
||||||
|
null_string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetSrc(&mut self, _src: &DOMString, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn CurrentSrc(&self) -> DOMString {
|
||||||
|
null_string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn CrossOrigin(&self) -> DOMString {
|
||||||
|
null_string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetCrossOrigin(&mut self, _cross_origin: &DOMString, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Preload(&self) -> DOMString {
|
||||||
|
null_string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetPreload(&mut self, _preload: &DOMString, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Load(&self) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn CanPlayType(&self, _type: &DOMString) -> DOMString {
|
||||||
|
null_string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn ReadyState(&self) -> u16 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Seeking(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn CurrentTime(&self) -> f64 {
|
||||||
|
0f64
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetCurrentTime(&mut self, _current_time: f64, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn GetDuration(&self) -> f64 {
|
||||||
|
0f64
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Paused(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn DefaultPlaybackRate(&self) -> f64 {
|
||||||
|
0f64
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetDefaultPlaybackRate(&mut self, _default_playback_rate: f64, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn PlaybackRate(&self) -> f64 {
|
||||||
|
0f64
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetPlaybackRate(&mut self, _playback_rate: f64, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Ended(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Autoplay(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetAutoplay(&mut self, _autoplay: bool, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Loop(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetLoop(&mut self, _loop: bool, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Play(&self, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Pause(&self, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Controls(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetControls(&mut self, _controls: bool, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Volume(&self) -> f64 {
|
||||||
|
0f64
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetVolume(&mut self, _volume: f64, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Muted(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetMuted(&mut self, _muted: bool) {
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn DefaultMuted(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetDefaultMuted(&mut self, _default_muted: bool, _rv: &mut ErrorResult) {
|
||||||
|
}
|
||||||
|
}
|
|
@ -89,6 +89,7 @@ pub mod dom {
|
||||||
pub mod htmllielement;
|
pub mod htmllielement;
|
||||||
pub mod htmllinkelement;
|
pub mod htmllinkelement;
|
||||||
pub mod htmlmapelement;
|
pub mod htmlmapelement;
|
||||||
|
pub mod htmlmediaelement;
|
||||||
pub mod htmlmetaelement;
|
pub mod htmlmetaelement;
|
||||||
pub mod htmlmeterelement;
|
pub mod htmlmeterelement;
|
||||||
pub mod htmlmodelement;
|
pub mod htmlmodelement;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue