diff options
author | Jack Britton <jack.britton@whiteops.com> | 2019-04-10 17:28:13 -0400 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-05-22 12:23:51 +0200 |
commit | ade697b782bd00b3168f39ab1a32b3be074e89ed (patch) | |
tree | 631166ce252bdf88cbf7df74e63e53ef282d7e06 /components/script/dom | |
parent | 415b26e4f11b25b317a37c406c1d6f1fc3709561 (diff) | |
download | servo-ade697b782bd00b3168f39ab1a32b3be074e89ed.tar.gz servo-ade697b782bd00b3168f39ab1a32b3be074e89ed.zip |
Implement HTMLMediaElement.crossorigin attribute logic.
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, 19 insertions, 3 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 66fb85b6732..c816494fb70 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -30,6 +30,9 @@ use crate::dom::bindings::root::{Dom, DomRoot, LayoutDom, MutNullableDom}; use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::blob::Blob; use crate::dom::document::Document; +use crate::dom::element::{ + cors_setting_for_element, reflect_cross_origin_attribute, set_cross_origin_attribute, +}; use crate::dom::element::{AttributeMutation, Element}; use crate::dom::event::Event; use crate::dom::eventtarget::EventTarget; @@ -64,7 +67,7 @@ use ipc_channel::ipc; use ipc_channel::router::ROUTER; use net_traits::image::base::Image; use net_traits::image_cache::ImageResponse; -use net_traits::request::{CredentialsMode, Destination, Referrer, RequestBuilder}; +use net_traits::request::{CredentialsMode, Destination, Referrer, RequestBuilder, RequestMode}; use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata, FetchResponseListener, Metadata}; use net_traits::{NetworkError, ResourceFetchTiming, ResourceTimingType}; use script_layout_interface::HTMLMediaData; @@ -707,7 +710,6 @@ impl HTMLMediaElement { return; } - // FIXME(nox): Handle CORS setting from crossorigin attribute. let document = document_from_node(self); let destination = match self.media_type_id() { HTMLMediaElementTypeId::HTMLAudioElement => Destination::Audio, @@ -728,6 +730,11 @@ impl HTMLMediaElement { .headers(headers) .destination(destination) .credentials_mode(CredentialsMode::Include) + // https://html.spec.whatwg.org/multipage/#create-a-potential-cors-request + .mode(match cors_setting_for_element(self.upcast::<Element>()) { + Some(_) => RequestMode::CorsMode, + None => RequestMode::NoCors, + }) .use_url_credentials(true) .origin(document.origin().immutable().clone()) .pipeline_id(Some(self.global().pipeline_id())) @@ -1614,6 +1621,15 @@ impl HTMLMediaElementMethods for HTMLMediaElement { // https://html.spec.whatwg.org/multipage/#dom-media-src make_url_setter!(SetSrc, "src"); + // https://html.spec.whatwg.org/multipage/#dom-media-crossOrigin + fn GetCrossOrigin(&self) -> Option<DOMString> { + reflect_cross_origin_attribute(self.upcast::<Element>()) + } + // https://html.spec.whatwg.org/multipage/#dom-media-crossOrigin + fn SetCrossOrigin(&self, value: Option<DOMString>) { + set_cross_origin_attribute(self.upcast::<Element>(), value); + } + // https://html.spec.whatwg.org/multipage/#dom-media-muted fn Muted(&self) -> bool { self.muted.get() diff --git a/components/script/dom/webidls/HTMLMediaElement.webidl b/components/script/dom/webidls/HTMLMediaElement.webidl index 71f6120abaf..21ac720fd06 100644 --- a/components/script/dom/webidls/HTMLMediaElement.webidl +++ b/components/script/dom/webidls/HTMLMediaElement.webidl @@ -16,7 +16,7 @@ interface HTMLMediaElement : HTMLElement { [CEReactions] attribute USVString src; attribute MediaProvider? srcObject; readonly attribute USVString currentSrc; - // [CEReactions] attribute DOMString crossOrigin; + [CEReactions] attribute DOMString? crossOrigin; const unsigned short NETWORK_EMPTY = 0; const unsigned short NETWORK_IDLE = 1; const unsigned short NETWORK_LOADING = 2; |