mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Add media cache and implement HTMLMediaElement.buffering
This commit is contained in:
parent
c558db9737
commit
f5581a78ab
5 changed files with 83 additions and 71 deletions
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue