diff options
author | Josh Matthews <josh@joshmatthews.net> | 2015-11-08 09:25:59 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2016-05-03 18:05:26 -0400 |
commit | f78d88acbe6693235380bea49f2f4fad16433fd3 (patch) | |
tree | a8e142617770acb3a781a3dd6e8059b5c0c85b57 /components/script/dom | |
parent | ef10393ba6262ca6408581da800462c80955c6cc (diff) | |
download | servo-f78d88acbe6693235380bea49f2f4fad16433fd3.tar.gz servo-f78d88acbe6693235380bea49f2f4fad16433fd3.zip |
Implement partial spec-recommended preload=none support.
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/htmlmediaelement.rs | 20 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLMediaElement.webidl | 2 |
2 files changed, 20 insertions, 2 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 951f6e47b70..fcb192cd250 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -387,7 +387,19 @@ impl HTMLMediaElement { // Step 4 if let Resource::Url(url) = resource { - // TODO 4.1 (preload=none) + // 4.1 + if self.Preload() == "none" && !self.autoplaying.get(){ + // 4.1.1 + self.network_state.set(NETWORK_IDLE); + + // 4.1.2 + self.queue_fire_simple_event("suspend"); + + // TODO 4.1.3 (delay load flag) + + // TODO 4.1.5-7 (state for load that initiates later) + return; + } // 4.2 let context = Arc::new(Mutex::new(HTMLMediaElementContext::new(self, url.clone()))); @@ -509,6 +521,12 @@ impl HTMLMediaElementMethods for HTMLMediaElement { // https://html.spec.whatwg.org/multipage/#dom-media-src make_setter!(SetSrc, "src"); + // https://html.spec.whatwg.org/multipage/#attr-media-preload + // Missing value default is user-agent defined. + make_enumerated_getter!(Preload, "preload", "", ("none") | ("metadata") | ("auto")); + // https://html.spec.whatwg.org/multipage/#attr-media-preload + make_setter!(SetPreload, "preload"); + // https://html.spec.whatwg.org/multipage/#dom-media-currentsrc fn CurrentSrc(&self) -> DOMString { DOMString::from(self.current_src.borrow().clone()) diff --git a/components/script/dom/webidls/HTMLMediaElement.webidl b/components/script/dom/webidls/HTMLMediaElement.webidl index ba81478be46..ce952c9b539 100644 --- a/components/script/dom/webidls/HTMLMediaElement.webidl +++ b/components/script/dom/webidls/HTMLMediaElement.webidl @@ -19,7 +19,7 @@ interface HTMLMediaElement : HTMLElement { const unsigned short NETWORK_LOADING = 2; const unsigned short NETWORK_NO_SOURCE = 3; readonly attribute unsigned short networkState; - // attribute DOMString preload; + attribute DOMString preload; //readonly attribute TimeRanges buffered; void load(); CanPlayTypeResult canPlayType(DOMString type); |