diff --git a/content/base/src/DOMImplementation.cpp b/content/base/src/DOMImplementation.cpp index fb12d8d4a983..52c73e8a1429 100644 --- a/content/base/src/DOMImplementation.cpp +++ b/content/base/src/DOMImplementation.cpp @@ -211,20 +211,22 @@ DOMImplementation::CreateHTMLDocument(const nsAString& aTitle, rv = root->AppendChildTo(head, false); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr title; - rv = doc->CreateElem(NS_LITERAL_STRING("title"), nullptr, kNameSpaceID_XHTML, - getter_AddRefs(title)); - NS_ENSURE_SUCCESS(rv, rv); - rv = head->AppendChildTo(title, false); - NS_ENSURE_SUCCESS(rv, rv); + if (!DOMStringIsNull(aTitle)) { + nsCOMPtr title; + rv = doc->CreateElem(NS_LITERAL_STRING("title"), nullptr, + kNameSpaceID_XHTML, getter_AddRefs(title)); + NS_ENSURE_SUCCESS(rv, rv); + rv = head->AppendChildTo(title, false); + NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr titleText; - rv = NS_NewTextNode(getter_AddRefs(titleText), doc->NodeInfoManager()); - NS_ENSURE_SUCCESS(rv, rv); - rv = titleText->SetText(aTitle, false); - NS_ENSURE_SUCCESS(rv, rv); - rv = title->AppendChildTo(titleText, false); - NS_ENSURE_SUCCESS(rv, rv); + nsCOMPtr titleText; + rv = NS_NewTextNode(getter_AddRefs(titleText), doc->NodeInfoManager()); + NS_ENSURE_SUCCESS(rv, rv); + rv = titleText->SetText(aTitle, false); + NS_ENSURE_SUCCESS(rv, rv); + rv = title->AppendChildTo(titleText, false); + NS_ENSURE_SUCCESS(rv, rv); + } nsCOMPtr body; rv = doc->CreateElem(NS_LITERAL_STRING("body"), nullptr, kNameSpaceID_XHTML, @@ -241,12 +243,14 @@ DOMImplementation::CreateHTMLDocument(const nsAString& aTitle, } already_AddRefed -DOMImplementation::CreateHTMLDocument(const nsAString& aTitle, +DOMImplementation::CreateHTMLDocument(const Optional& aTitle, ErrorResult& aRv) { nsCOMPtr document; nsCOMPtr domDocument; - aRv = CreateHTMLDocument(aTitle, getter_AddRefs(document), + aRv = CreateHTMLDocument(aTitle.WasPassed() ? aTitle.Value() + : NullString(), + getter_AddRefs(document), getter_AddRefs(domDocument)); return document.forget(); } diff --git a/content/base/src/DOMImplementation.h b/content/base/src/DOMImplementation.h index 28b6673dd314..bf6b4ab3c6f6 100644 --- a/content/base/src/DOMImplementation.h +++ b/content/base/src/DOMImplementation.h @@ -73,7 +73,7 @@ public: ErrorResult& aRv); already_AddRefed - CreateHTMLDocument(const nsAString& aTitle, ErrorResult& aRv); + CreateHTMLDocument(const Optional& aTitle, ErrorResult& aRv); private: nsresult CreateDocument(const nsAString& aNamespaceURI, diff --git a/dom/imptests/failures/webapps/DOMCore/tests/approved/test_interfaces.html.json b/dom/imptests/failures/webapps/DOMCore/tests/approved/test_interfaces.html.json index fc7c5d1d4524..6961d4a9eba8 100644 --- a/dom/imptests/failures/webapps/DOMCore/tests/approved/test_interfaces.html.json +++ b/dom/imptests/failures/webapps/DOMCore/tests/approved/test_interfaces.html.json @@ -63,7 +63,6 @@ "Document interface: calling prepend(union) on xmlDoc with too few arguments must throw TypeError": true, "Document interface: xmlDoc must inherit property \"append\" with the proper type (29)": true, "Document interface: calling append(union) on xmlDoc with too few arguments must throw TypeError": true, - "DOMImplementation interface: operation createHTMLDocument(DOMString)": true, "DocumentFragment interface: attribute children": true, "DocumentFragment interface: attribute firstElementChild": true, "DocumentFragment interface: attribute lastElementChild": true, diff --git a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/Makefile.in b/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/Makefile.in index 324622368dc4..c54065605978 100644 --- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/Makefile.in +++ b/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/Makefile.in @@ -11,7 +11,6 @@ include $(DEPTH)/config/autoconf.mk MOCHITEST_FILES := \ test_CharacterData-remove.html.json \ - test_DOMImplementation-createHTMLDocument.html.json \ test_Document-createElementNS.html.json \ test_Document-getElementsByTagName.html.json \ test_DocumentType-remove.html.json \ diff --git a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-createHTMLDocument.html.json b/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-createHTMLDocument.html.json deleted file mode 100644 index 93ba2a326ab5..000000000000 --- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-createHTMLDocument.html.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Missing title argument": true -} diff --git a/dom/webidl/DOMImplementation.webidl b/dom/webidl/DOMImplementation.webidl index e3021a9233f9..f7fa91c422ad 100644 --- a/dom/webidl/DOMImplementation.webidl +++ b/dom/webidl/DOMImplementation.webidl @@ -23,5 +23,5 @@ interface DOMImplementation { [TreatNullAs=EmptyString] DOMString qualifiedName, DocumentType? doctype); [Throws] - Document createHTMLDocument(DOMString title); + Document createHTMLDocument(optional DOMString title); };