| <!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 isInterfaceNuked(name) { | |
| test(function() { | |
| assert_equals(window[name], undefined) | |
| }, "Historical DOM features must be removed: " + name) | |
| } | |
| var nukedInterfaces = [ | |
| "CDATASection", | |
| "DOMConfiguration", | |
| "DOMError", | |
| "DOMErrorHandler", | |
| "DOMImplementationList", | |
| "DOMImplementationSource", | |
| "DOMLocator", | |
| "DOMObject", | |
| "DOMUserData", | |
| "Entity", | |
| "EntityReference", | |
| "EventException", // DOM Events | |
| "NameList", | |
| "Notation", | |
| "TypeInfo", | |
| "UserDataHandler", | |
| "RangeException" // DOM Range | |
| ] | |
| nukedInterfaces.forEach(isInterfaceNuked) | |
| function isNukedFromDocument(name) { | |
| test(function() { | |
| var doc = document.implementation.createDocument(null,null,null) | |
| assert_equals(document[name], undefined) | |
| assert_equals(doc[name], undefined) | |
| }, "Historical DOM features must be removed: " + name) | |
| } | |
| var documentNuked = [ | |
| "createCDATASection", | |
| "createEntityReference", | |
| "xmlEncoding", | |
| "xmlStandalone", | |
| "xmlVersion", | |
| "strictErrorChecking", | |
| "domConfig", | |
| "normalizeDocument", | |
| "renameNode", | |
| "defaultCharset", | |
| "height", | |
| "width" | |
| ] | |
| documentNuked.forEach(isNukedFromDocument) | |
| test(function() { | |
| assert_equals(document.implementation["getFeature"], undefined) | |
| }, "DOMImplementation.getFeature() must be nuked.") | |
| function isNukedFromElement(name) { | |
| test(function() { | |
| var ele = document.createElementNS("test", "test") | |
| assert_equals(document.body[name], undefined) | |
| assert_equals(ele[name], undefined) | |
| }, "Historical DOM features must be removed: " + name) | |
| } | |
| var elementNuked = [ | |
| "schemaTypeInfo", | |
| "setIdAttribute", | |
| "setIdAttributeNS", | |
| "setIdAttributeNode" | |
| ] | |
| elementNuked.forEach(isNukedFromElement) | |
| function isNukedFromDoctype(name) { | |
| test(function() { | |
| var doctype = document.implementation.createDocumentType("test", "", "") | |
| assert_equals(doctype[name], undefined) | |
| }, "DocumentType member must be nuked: " + name) | |
| } | |
| var doctypeNuked = [ | |
| "entities", | |
| "notations", | |
| "internalSubset" | |
| ] | |
| doctypeNuked.forEach(isNukedFromDoctype) | |
| function isNukedFromText(name) { | |
| test(function() { | |
| var text = document.createTextNode("test") | |
| assert_equals(text[name], undefined) | |
| }, "Text member must be nuked: " + name) | |
| } | |
| var textNuked = [ | |
| "isElementContentWhitespace", | |
| "replaceWholeText" | |
| ] | |
| textNuked.forEach(isNukedFromText) | |
| function isNukedFromNode(name) { | |
| test(function() { | |
| var doc = document.implementation.createDocument(null,null,null) | |
| var doctype = document.implementation.createDocumentType("test", "", "") | |
| var text = document.createTextNode("test") | |
| assert_equals(doc[name], undefined) | |
| assert_equals(doctype[name], undefined) | |
| assert_equals(text[name], undefined) | |
| }, "Node member must be nuked: " + name) | |
| } | |
| var nodeNuked = [ | |
| "hasAttributes", | |
| "attributes", | |
| "namespaceURI", | |
| "prefix", | |
| "localName", | |
| "isSupported", | |
| "getFeature", | |
| "getUserData", | |
| "setUserData" | |
| ] | |
| nodeNuked.forEach(isNukedFromNode) | |
| function isNukedFromWindow(name) { | |
| test(function() { | |
| assert_equals(window[name], undefined) | |
| }, "Window member must be nuked: " + name) | |
| } | |
| var windowNuked = [ | |
| "attachEvent" | |
| ] | |
| windowNuked.forEach(isNukedFromWindow) | |
| </script> |