diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/htmlmediaelement.rs | 11 | ||||
-rw-r--r-- | components/script/dom/timeranges.rs | 7 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLMediaElement.webidl | 2 |
3 files changed, 14 insertions, 6 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index b38c0e9255f..6faa718a0a9 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -1657,6 +1657,17 @@ impl HTMLMediaElementMethods for HTMLMediaElement { TimeRanges::new(self.global().as_window(), self.played.clone()) } + // https://html.spec.whatwg.org/multipage/#dom-media-buffered + fn Buffered(&self) -> DomRoot<TimeRanges> { + let mut buffered = TimeRangesContainer::new(); + if let Ok(ranges) = self.player.buffered() { + for range in ranges { + let _ = buffered.add(range.start as f64, range.end as f64); + } + } + TimeRanges::new(self.global().as_window(), Rc::new(DomRefCell::new(buffered))) + } + // https://html.spec.whatwg.org/multipage/#dom-media-texttracks fn TextTracks(&self) -> DomRoot<TextTrackList> { let window = window_from_node(self); diff --git a/components/script/dom/timeranges.rs b/components/script/dom/timeranges.rs index c82daac23a7..645de7b5799 100644 --- a/components/script/dom/timeranges.rs +++ b/components/script/dom/timeranges.rs @@ -14,7 +14,7 @@ use dom_struct::dom_struct; use std::fmt; use std::rc::Rc; -#[derive(JSTraceable, MallocSizeOf)] +#[derive(Clone, JSTraceable, MallocSizeOf)] struct TimeRange { start: f64, end: f64, @@ -57,7 +57,7 @@ pub enum TimeRangesError { OutOfRange, } -#[derive(Debug, JSTraceable, MallocSizeOf)] +#[derive(Clone, Debug, JSTraceable, MallocSizeOf)] pub struct TimeRangesContainer { ranges: Vec<TimeRange>, } @@ -132,9 +132,6 @@ pub struct TimeRanges { ranges: Rc<DomRefCell<TimeRangesContainer>>, } -//XXX(ferjm) We'll get warnings about unused methods until we use this -// on the media element implementation. -#[allow(dead_code)] impl TimeRanges { fn new_inherited(ranges: Rc<DomRefCell<TimeRangesContainer>>) -> TimeRanges { Self { diff --git a/components/script/dom/webidls/HTMLMediaElement.webidl b/components/script/dom/webidls/HTMLMediaElement.webidl index d083b80ffff..0acd2a2c9a6 100644 --- a/components/script/dom/webidls/HTMLMediaElement.webidl +++ b/components/script/dom/webidls/HTMLMediaElement.webidl @@ -23,7 +23,7 @@ interface HTMLMediaElement : HTMLElement { const unsigned short NETWORK_NO_SOURCE = 3; readonly attribute unsigned short networkState; [CEReactions] attribute DOMString preload; - // readonly attribute TimeRanges buffered; + readonly attribute TimeRanges buffered; void load(); CanPlayTypeResult canPlayType(DOMString type); |