aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2015-11-08 09:25:59 -0500
committerJosh Matthews <josh@joshmatthews.net>2016-05-03 18:05:26 -0400
commitf78d88acbe6693235380bea49f2f4fad16433fd3 (patch)
treea8e142617770acb3a781a3dd6e8059b5c0c85b57 /components/script/dom
parentef10393ba6262ca6408581da800462c80955c6cc (diff)
downloadservo-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.rs20
-rw-r--r--components/script/dom/webidls/HTMLMediaElement.webidl2
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);