aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/htmlmediaelement.rs11
-rw-r--r--components/script/dom/timeranges.rs7
-rw-r--r--components/script/dom/webidls/HTMLMediaElement.webidl2
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);