| <!DOCTYPE html> | |
| <title>Historical DOM features must be removed</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <div id=log></div> | |
| <script> | |
| function isInterfaceRemoved(name) { | |
| test(function() { | |
| assert_false(name in window) | |
| assert_equals(window[name], undefined) | |
| }, "Historical DOM features must be removed: " + name) | |
| } | |
| var removedInterfaces = [ | |
| "DOMConfiguration", | |
| "DOMCursor", | |
| "DOMError", | |
| "DOMErrorHandler", | |
| "DOMImplementationList", | |
| "DOMImplementationSource", | |
| "DOMLocator", | |
| "DOMObject", | |
| "DOMRequest", | |
| "DOMSettableTokenList", | |
| "DOMUserData", | |
| "Entity", | |
| "EntityReference", | |
| "EventException", // DOM Events | |
| "NameList", | |
| "Notation", | |
| "TypeInfo", | |
| "UserDataHandler", | |
| "RangeException", // DOM Range | |
| "SVGPathSegList" | |
| ] | |
| removedInterfaces.forEach(isInterfaceRemoved) | |
| function isRemovedFromDocument(name) { | |
| test(function() { | |
| var doc = document.implementation.createDocument(null,null,null) | |
| assert_false(name in document) | |
| assert_equals(document[name], undefined) | |
| assert_false(name in doc) | |
| assert_equals(doc[name], undefined) | |
| }, "Historical DOM features must be removed: " + name) | |
| } | |
| var documentRemoved = [ | |
| "createEntityReference", | |
| "xmlEncoding", | |
| "xmlStandalone", | |
| "xmlVersion", | |
| "strictErrorChecking", | |
| "domConfig", | |
| "normalizeDocument", | |
| "renameNode", | |
| "defaultCharset", | |
| "height", | |
| "width", | |
| // https://github.com/whatwg/html/commit/a64aea7fdb221bba027d95dc3cabda09e0b3e5dc | |
| "commands", | |
| // https://github.com/whatwg/html/commit/797b4d273955a0fe3cc2e2d0ca5d578f37c0f126 | |
| "cssElementMap", | |
| // https://github.com/whatwg/html/commit/e236f46820b93d6fe2e2caae0363331075c6c4fb | |
| "async", | |
| // https://github.com/whatwg/dom/pull/815 | |
| "origin", | |
| ] | |
| documentRemoved.forEach(isRemovedFromDocument) | |
| test(function() { | |
| // https://github.com/whatwg/html/commit/e236f46820b93d6fe2e2caae0363331075c6c4fb | |
| assert_false("load" in document); | |
| assert_equals(document["load"], undefined) | |
| }, "document.load"); | |
| test(function() { | |
| // https://github.com/whatwg/html/commit/523f7a8773d2ab8a1eb0da6510651e8c5d2a7531 | |
| var doc = document.implementation.createDocument(null, null, null); | |
| assert_false("load" in doc); | |
| assert_equals(doc["load"], undefined) | |
| }, "XMLDocument.load"); | |
| test(function() { | |
| assert_false("getFeature" in document.implementation) | |
| assert_equals(document.implementation["getFeature"], undefined) | |
| }, "DOMImplementation.getFeature() must be removed.") | |
| function isRemovedFromElement(name) { | |
| test(function() { | |
| var ele = document.createElementNS("test", "test") | |
| assert_false(name in document.body) | |
| assert_equals(document.body[name], undefined) | |
| assert_false(name in ele) | |
| assert_equals(ele[name], undefined) | |
| }, "Historical DOM features must be removed: " + name) | |
| } | |
| var elementRemoved = [ | |
| "schemaTypeInfo", | |
| "setIdAttribute", | |
| "setIdAttributeNS", | |
| "setIdAttributeNode" | |
| ] | |
| elementRemoved.forEach(isRemovedFromElement) | |
| function isRemovedFromAttr(name) { | |
| test(function() { | |
| var attr = document.createAttribute("test") | |
| assert_false(name in attr) | |
| assert_equals(attr[name], undefined) | |
| }, "Attr member must be removed: " + name) | |
| } | |
| var attrRemoved = [ | |
| "schemaTypeInfo", | |
| "isId" | |
| ] | |
| attrRemoved.forEach(isRemovedFromAttr) | |
| function isRemovedFromDoctype(name) { | |
| test(function() { | |
| var doctype = document.implementation.createDocumentType("test", "", "") | |
| assert_false(name in doctype) | |
| assert_equals(doctype[name], undefined) | |
| }, "DocumentType member must be removed: " + name) | |
| } | |
| var doctypeRemoved = [ | |
| "entities", | |
| "notations", | |
| "internalSubset" | |
| ] | |
| doctypeRemoved.forEach(isRemovedFromDoctype) | |
| function isRemovedFromText(name) { | |
| test(function() { | |
| var text = document.createTextNode("test") | |
| assert_false(name in text) | |
| assert_equals(text[name], undefined) | |
| }, "Text member must be removed: " + name) | |
| } | |
| var textRemoved = [ | |
| "isElementContentWhitespace", | |
| "replaceWholeText" | |
| ] | |
| textRemoved.forEach(isRemovedFromText) | |
| function isRemovedFromNode(name) { | |
| test(function() { | |
| var doc = document.implementation.createDocument(null,null,null) | |
| var doctype = document.implementation.createDocumentType("test", "", "") | |
| var text = document.createTextNode("test") | |
| assert_false(name in doc) | |
| assert_equals(doc[name], undefined) | |
| assert_false(name in doctype) | |
| assert_equals(doctype[name], undefined) | |
| assert_false(name in text) | |
| assert_equals(text[name], undefined) | |
| }, "Node member must be removed: " + name) | |
| } | |
| var nodeRemoved = [ | |
| "hasAttributes", | |
| "attributes", | |
| "namespaceURI", | |
| "prefix", | |
| "localName", | |
| "isSupported", | |
| "getFeature", | |
| "getUserData", | |
| "setUserData", | |
| "rootNode", | |
| ] | |
| nodeRemoved.forEach(isRemovedFromNode) | |
| function isRemovedFromWindow(name) { | |
| test(function() { | |
| assert_false(name in window) | |
| assert_equals(window[name], undefined) | |
| }, "Window member must be removed: " + name) | |
| } | |
| var windowRemoved = [ | |
| "attachEvent" | |
| ] | |
| windowRemoved.forEach(isRemovedFromWindow) | |
| function isRemovedFromEvent(name) { | |
| test(() => { | |
| assert_false(name in Event) | |
| assert_equals(Event[name], undefined) | |
| }, "Event should not have this constant: " + name) | |
| } | |
| var EventRemoved = [ | |
| "MOUSEDOWN", | |
| "MOUSEUP", | |
| "MOUSEOVER", | |
| "MOUSEOUT", | |
| "MOUSEMOVE", | |
| "MOUSEDRAG", | |
| "CLICK", | |
| "DBLCLICK", | |
| "KEYDOWN", | |
| "KEYUP", | |
| "KEYPRESS", | |
| "DRAGDROP", | |
| "FOCUS", | |
| "BLUR", | |
| "SELECT", | |
| "CHANGE" | |
| ] | |
| EventRemoved.forEach(isRemovedFromEvent) | |
| var EventPrototypeRemoved = [ | |
| "getPreventDefault", | |
| "path" | |
| ] | |
| EventPrototypeRemoved.forEach(name => { | |
| test(() => { | |
| assert_false(name in Event.prototype) | |
| assert_equals(Event.prototype[name], undefined) | |
| assert_false(name in new Event("test")) | |
| assert_equals((new Event("test"))[name], undefined) | |
| }, "Event.prototype should not have this property: " + name) | |
| }) | |
| </script> |