aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/document.rs21
-rw-r--r--components/script/dom/domimplementation.rs8
-rw-r--r--components/script/dom/webidls/Document.webidl5
-rw-r--r--tests/wpt/metadata/custom-elements/Document-createElement.html.ini4
-rw-r--r--tests/wpt/metadata/custom-elements/Document-createElementNS.html.ini4
5 files changed, 24 insertions, 18 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]
diff --git a/tests/wpt/metadata/custom-elements/Document-createElement.html.ini b/tests/wpt/metadata/custom-elements/Document-createElement.html.ini
index 174f0d03891..ef2a2e288c1 100644
--- a/tests/wpt/metadata/custom-elements/Document-createElement.html.ini
+++ b/tests/wpt/metadata/custom-elements/Document-createElement.html.ini
@@ -1,7 +1,3 @@
[Document-createElement.html]
[document.createElement must create an instance of autonomous custom elements when it has is attribute]
expected: FAIL
-
- [document.createElement()'s second argument is to be ignored when it's a string]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/custom-elements/Document-createElementNS.html.ini b/tests/wpt/metadata/custom-elements/Document-createElementNS.html.ini
deleted file mode 100644
index eca647d1fac..00000000000
--- a/tests/wpt/metadata/custom-elements/Document-createElementNS.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[Document-createElementNS.html]
- [document.createElementNS()'s third argument is to be ignored when it's a string]
- expected: FAIL
-