diff options
author | Patrick Shaughnessy <pshaughn@comcast.net> | 2019-12-23 11:35:32 -0500 |
---|---|---|
committer | Patrick Shaughnessy <pshaughn@comcast.net> | 2019-12-23 11:35:32 -0500 |
commit | 8184a25c17a2a19b239597932a5d8dde980bc937 (patch) | |
tree | 53dba8139dca2c98f6ff5e68d5d869831b8e815f /components | |
parent | 3e77a0ae09daf28c0a102add5a198bff08befe31 (diff) | |
download | servo-8184a25c17a2a19b239597932a5d8dde980bc937.tar.gz servo-8184a25c17a2a19b239597932a5d8dde980bc937.zip |
createElement can now take an ignored string for options
Diffstat (limited to 'components')
-rw-r--r-- | components/script/dom/document.rs | 21 | ||||
-rw-r--r-- | components/script/dom/domimplementation.rs | 8 | ||||
-rw-r--r-- | components/script/dom/webidls/Document.webidl | 5 |
3 files changed, 24 insertions, 10 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 94c9c8603c4..6f0e2620db4 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -11,7 +11,6 @@ use crate::dom::bindings::callback::ExceptionHandling; use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::BeforeUnloadEventBinding::BeforeUnloadEventBinding::BeforeUnloadEventMethods; use crate::dom::bindings::codegen::Bindings::DocumentBinding; -use crate::dom::bindings::codegen::Bindings::DocumentBinding::ElementCreationOptions; use crate::dom::bindings::codegen::Bindings::DocumentBinding::{ DocumentMethods, DocumentReadyState, }; @@ -25,7 +24,7 @@ use crate::dom::bindings::codegen::Bindings::TouchBinding::TouchMethods; use crate::dom::bindings::codegen::Bindings::WindowBinding::{ FrameRequestCallback, ScrollBehavior, WindowMethods, }; -use crate::dom::bindings::codegen::UnionTypes::NodeOrString; +use crate::dom::bindings::codegen::UnionTypes::{NodeOrString, StringOrElementCreationOptions}; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; use crate::dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId}; use crate::dom::bindings::num::Finite; @@ -3622,7 +3621,7 @@ impl DocumentMethods for Document { fn CreateElement( &self, mut local_name: DOMString, - options: &ElementCreationOptions, + options: StringOrElementCreationOptions, ) -> Fallible<DomRoot<Element>> { if xml_name_type(&local_name) == InvalidXMLName { debug!("Not a valid element name"); @@ -3643,7 +3642,12 @@ impl DocumentMethods for Document { }; let name = QualName::new(None, ns, LocalName::from(local_name)); - let is = options.is.as_ref().map(|is| LocalName::from(&**is)); + let is = match options { + StringOrElementCreationOptions::String(_) => None, + StringOrElementCreationOptions::ElementCreationOptions(options) => { + options.is.as_ref().map(|is| LocalName::from(&**is)) + }, + }; Ok(Element::create( name, is, @@ -3658,11 +3662,16 @@ impl DocumentMethods for Document { &self, namespace: Option<DOMString>, qualified_name: DOMString, - options: &ElementCreationOptions, + options: StringOrElementCreationOptions, ) -> Fallible<DomRoot<Element>> { let (namespace, prefix, local_name) = validate_and_extract(namespace, &qualified_name)?; let name = QualName::new(prefix, namespace, local_name); - let is = options.is.as_ref().map(|is| LocalName::from(&**is)); + let is = match options { + StringOrElementCreationOptions::String(_) => None, + StringOrElementCreationOptions::ElementCreationOptions(options) => { + options.is.as_ref().map(|is| LocalName::from(&**is)) + }, + }; Ok(Element::create( name, is, diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index e86e7472a95..d12b18168f8 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::codegen::Bindings::DocumentBinding::{ DocumentMethods, ElementCreationOptions, }; use crate::dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; +use crate::dom::bindings::codegen::UnionTypes::StringOrElementCreationOptions; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; @@ -105,10 +106,13 @@ impl DOMImplementationMethods for DOMImplementation { let maybe_elem = if qname.is_empty() { None } else { - let options = ElementCreationOptions { is: None }; + let options = + StringOrElementCreationOptions::ElementCreationOptions(ElementCreationOptions { + is: None, + }); match doc .upcast::<Document>() - .CreateElementNS(maybe_namespace, qname, &options) + .CreateElementNS(maybe_namespace, qname, options) { Err(error) => return Err(error), Ok(elem) => Some(elem), diff --git a/components/script/dom/webidls/Document.webidl b/components/script/dom/webidls/Document.webidl index 9476b9c2d6d..7d92ddbd137 100644 --- a/components/script/dom/webidls/Document.webidl +++ b/components/script/dom/webidls/Document.webidl @@ -34,9 +34,10 @@ interface Document : Node { HTMLCollection getElementsByClassName(DOMString classNames); [CEReactions, NewObject, Throws] - Element createElement(DOMString localName, optional ElementCreationOptions options = {}); + Element createElement(DOMString localName, optional (DOMString or ElementCreationOptions) options = {}); [CEReactions, NewObject, Throws] - Element createElementNS(DOMString? namespace, DOMString qualifiedName, optional ElementCreationOptions options = {}); + Element createElementNS(DOMString? namespace, DOMString qualifiedName, + optional (DOMString or ElementCreationOptions) options = {}); [NewObject] DocumentFragment createDocumentFragment(); [NewObject] |