aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jsdom/lib/jsdom/living/dom-implementation.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/jsdom/lib/jsdom/living/dom-implementation.js')
-rw-r--r--node_modules/jsdom/lib/jsdom/living/dom-implementation.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/node_modules/jsdom/lib/jsdom/living/dom-implementation.js b/node_modules/jsdom/lib/jsdom/living/dom-implementation.js
new file mode 100644
index 0000000..5ca8989
--- /dev/null
+++ b/node_modules/jsdom/lib/jsdom/living/dom-implementation.js
@@ -0,0 +1,85 @@
+"use strict";
+var validateNames = require("./helpers/validate-names");
+
+module.exports = function (core) {
+ core.DOMImplementation.prototype.hasFeature = function () {
+ return true;
+ };
+
+ core.DOMImplementation.prototype.createDocumentType = function (qualifiedName, publicId, systemId) {
+ qualifiedName = String(qualifiedName);
+ publicId = String(publicId);
+ systemId = String(systemId);
+
+ validateNames.qname(qualifiedName, core);
+
+ return new core.DocumentType(this._ownerDocument, qualifiedName, publicId, systemId);
+ };
+
+ core.DOMImplementation.prototype.createDocument = function (namespace, qualifiedName, doctype) {
+ namespace = namespace !== null ? String(namespace) : namespace;
+ qualifiedName = qualifiedName === null ? "" : String(qualifiedName);
+ if (doctype === undefined) {
+ doctype = null;
+ }
+
+ var document = new core.Document({ parsingMode: "xml" });
+
+ var element = null;
+ if (qualifiedName !== "") {
+ element = document.createElementNS(namespace, qualifiedName);
+ }
+
+ if (doctype !== null) {
+ document.appendChild(doctype);
+ }
+
+ if (element !== null) {
+ document.appendChild(element);
+ }
+
+ return document;
+ };
+
+ core.DOMImplementation.prototype.createHTMLDocument = function (title) {
+ // Let doc be a new document that is an HTML document.
+ // Set doc's content type to "text/html".
+ var document = new core.HTMLDocument({ parsingMode: "html" });
+
+ // Create a doctype, with "html" as its name and with its node document set
+ // to doc. Append the newly created node to doc.
+ var doctype = this.createDocumentType("html", "", "");
+ document.appendChild(doctype);
+
+ // Create an html element in the HTML namespace, and append it to doc.
+ var htmlElement = document.createElementNS("http://www.w3.org/1999/xhtml", "html");
+ document.appendChild(htmlElement);
+
+ // Create a head element in the HTML namespace, and append it to the html
+ // element created in the previous step.
+ var headElement = document.createElement("head");
+ htmlElement.appendChild(headElement);
+
+ // If the title argument is not omitted:
+ if (title !== undefined) {
+ // Create a title element in the HTML namespace, and append it to the head
+ // element created in the previous step.
+ var titleElement = document.createElement("title");
+ headElement.appendChild(titleElement);
+
+ // Create a Text node, set its data to title (which could be the empty
+ // string), and append it to the title element created in the previous step.
+ titleElement.appendChild(document.createTextNode(title));
+ }
+
+ // Create a body element in the HTML namespace, and append it to the html
+ // element created in the earlier step.
+ htmlElement.appendChild(document.createElement("body"));
+
+ // doc's origin is an alias to the origin of the context object's associated
+ // document, and doc's effective script origin is an alias to the effective
+ // script origin of the context object's associated document.
+
+ return document;
+ };
+};