From 3d9e44a8c497acd52b428dd02062a9c55a2efafc Mon Sep 17 00:00:00 2001 From: mrnayak Date: Fri, 13 Jan 2017 23:35:00 +0530 Subject: Handle crossorigin in link and refactor crossorigin handling Implemented Step three and handled step four of obtain the resource part of 4.2.4 The link element. Link to spec : https://html.spec.whatwg.org/multipage/semantics.html#concept-link-obtain Refactored crossOrigin handling in HTMLScriptElement, HTMLImageElement --- components/script/dom/htmlscriptelement.rs | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) (limited to 'components/script/dom/htmlscriptelement.rs') diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index cf0d3c6cf94..1a946871f32 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -4,7 +4,6 @@ use document_loader::LoadType; use dom::attr::Attr; -use dom::bindings::codegen::Bindings::AttrBinding::AttrMethods; use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::codegen::Bindings::HTMLScriptElementBinding; use dom::bindings::codegen::Bindings::HTMLScriptElementBinding::HTMLScriptElementMethods; @@ -17,6 +16,7 @@ use dom::bindings::reflector::DomObject; use dom::bindings::str::DOMString; use dom::document::Document; use dom::element::{AttributeMutation, Element, ElementCreator}; +use dom::element::{cors_setting_for_element, reflect_cross_origin_attribute, set_cross_origin_attribute}; use dom::event::{Event, EventBubbles, EventCancelable}; use dom::eventdispatcher::EventStatus; use dom::globalscope::GlobalScope; @@ -369,12 +369,7 @@ impl HTMLScriptElement { .unwrap_or_else(|| doc.encoding()); // Step 14. - let cors_setting = match self.GetCrossOrigin() { - Some(ref s) if *s == "anonymous" => Some(CorsSettings::Anonymous), - Some(ref s) if *s == "use-credentials" => Some(CorsSettings::UseCredentials), - None => None, - _ => unreachable!() - }; + let cors_setting = cors_setting_for_element(element); // TODO: Step 15: Module script credentials mode. @@ -707,28 +702,12 @@ impl HTMLScriptElementMethods for HTMLScriptElement { // https://html.spec.whatwg.org/multipage/#dom-script-crossorigin fn GetCrossOrigin(&self) -> Option { - let element = self.upcast::(); - let attr = element.get_attribute(&ns!(), &local_name!("crossorigin")); - - if let Some(mut val) = attr.map(|v| v.Value()) { - val.make_ascii_lowercase(); - if val == "anonymous" || val == "use-credentials" { - return Some(val); - } - return Some(DOMString::from("anonymous")); - } - None + reflect_cross_origin_attribute(self.upcast::()) } // https://html.spec.whatwg.org/multipage/#dom-script-crossorigin fn SetCrossOrigin(&self, value: Option) { - let element = self.upcast::(); - match value { - Some(val) => element.set_string_attribute(&local_name!("crossorigin"), val), - None => { - element.remove_attribute(&ns!(), &local_name!("crossorigin")); - } - } + set_cross_origin_attribute(self.upcast::(), value); } // https://html.spec.whatwg.org/multipage/#dom-script-text -- cgit v1.2.3