tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

historical.html (5900B)


      1 <!DOCTYPE html>
      2 <title>Historical DOM features must be removed</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <div id=log></div>
      6 <script>
      7 function isInterfaceRemoved(name) {
      8  test(function() {
      9    assert_false(name in window)
     10    assert_equals(window[name], undefined)
     11  }, "Historical DOM features must be removed: " + name)
     12 }
     13 var removedInterfaces = [
     14  "DOMConfiguration",
     15  "DOMCursor",
     16  "DOMError",
     17  "DOMErrorHandler",
     18  "DOMImplementationList",
     19  "DOMImplementationSource",
     20  "DOMLocator",
     21  "DOMObject",
     22  "DOMRequest",
     23  "DOMSettableTokenList",
     24  "DOMUserData",
     25  "Entity",
     26  "EntityReference",
     27  "EventException", // DOM Events
     28  "NameList",
     29  "Notation",
     30  "TypeInfo",
     31  "UserDataHandler",
     32  "RangeException", // DOM Range
     33  "SVGPathSegList"
     34 ]
     35 removedInterfaces.forEach(isInterfaceRemoved)
     36 
     37 function isRemovedFromDocument(name) {
     38  test(function() {
     39    var doc = document.implementation.createDocument(null,null,null)
     40    assert_false(name in document)
     41    assert_equals(document[name], undefined)
     42    assert_false(name in doc)
     43    assert_equals(doc[name], undefined)
     44  }, "Historical DOM features must be removed: " + name)
     45 }
     46 var documentRemoved = [
     47  "createEntityReference",
     48  "xmlEncoding",
     49  "xmlStandalone",
     50  "xmlVersion",
     51  "strictErrorChecking",
     52  "domConfig",
     53  "normalizeDocument",
     54  "renameNode",
     55  "defaultCharset",
     56  "height",
     57  "width",
     58  // https://github.com/whatwg/html/commit/a64aea7fdb221bba027d95dc3cabda09e0b3e5dc
     59  "commands",
     60  // https://github.com/whatwg/html/commit/797b4d273955a0fe3cc2e2d0ca5d578f37c0f126
     61  "cssElementMap",
     62  // https://github.com/whatwg/html/commit/e236f46820b93d6fe2e2caae0363331075c6c4fb
     63  "async",
     64  // https://github.com/whatwg/dom/pull/815
     65  "origin",
     66 ]
     67 documentRemoved.forEach(isRemovedFromDocument)
     68 
     69 test(function() {
     70  // https://github.com/whatwg/html/commit/e236f46820b93d6fe2e2caae0363331075c6c4fb
     71  assert_false("load" in document);
     72  assert_equals(document["load"], undefined)
     73 }, "document.load");
     74 
     75 test(function() {
     76  // https://github.com/whatwg/html/commit/523f7a8773d2ab8a1eb0da6510651e8c5d2a7531
     77  var doc = document.implementation.createDocument(null, null, null);
     78  assert_false("load" in doc);
     79  assert_equals(doc["load"], undefined)
     80 }, "XMLDocument.load");
     81 
     82 test(function() {
     83  assert_false("getFeature" in document.implementation)
     84  assert_equals(document.implementation["getFeature"], undefined)
     85 }, "DOMImplementation.getFeature() must be removed.")
     86 
     87 function isRemovedFromElement(name) {
     88  test(function() {
     89    var ele = document.createElementNS("test", "test")
     90    assert_false(name in document.body)
     91    assert_equals(document.body[name], undefined)
     92    assert_false(name in ele)
     93    assert_equals(ele[name], undefined)
     94  }, "Historical DOM features must be removed: " + name)
     95 }
     96 var elementRemoved = [
     97  "schemaTypeInfo",
     98  "setIdAttribute",
     99  "setIdAttributeNS",
    100  "setIdAttributeNode"
    101 ]
    102 elementRemoved.forEach(isRemovedFromElement)
    103 
    104 function isRemovedFromAttr(name) {
    105  test(function() {
    106    var attr = document.createAttribute("test")
    107    assert_false(name in attr)
    108    assert_equals(attr[name], undefined)
    109  }, "Attr member must be removed: " + name)
    110 }
    111 var attrRemoved = [
    112  "schemaTypeInfo",
    113  "isId"
    114 ]
    115 attrRemoved.forEach(isRemovedFromAttr)
    116 
    117 function isRemovedFromDoctype(name) {
    118  test(function() {
    119    var doctype = document.implementation.createDocumentType("test", "", "")
    120    assert_false(name in doctype)
    121    assert_equals(doctype[name], undefined)
    122  }, "DocumentType member must be removed: " + name)
    123 }
    124 var doctypeRemoved = [
    125  "entities",
    126  "notations",
    127  "internalSubset"
    128 ]
    129 doctypeRemoved.forEach(isRemovedFromDoctype)
    130 
    131 function isRemovedFromText(name) {
    132  test(function() {
    133    var text = document.createTextNode("test")
    134    assert_false(name in text)
    135    assert_equals(text[name], undefined)
    136  }, "Text member must be removed: " + name)
    137 }
    138 var textRemoved = [
    139  "isElementContentWhitespace",
    140  "replaceWholeText"
    141 ]
    142 textRemoved.forEach(isRemovedFromText)
    143 
    144 function isRemovedFromNode(name) {
    145  test(function() {
    146    var doc = document.implementation.createDocument(null,null,null)
    147    var doctype = document.implementation.createDocumentType("test", "", "")
    148    var text = document.createTextNode("test")
    149    assert_false(name in doc)
    150    assert_equals(doc[name], undefined)
    151    assert_false(name in doctype)
    152    assert_equals(doctype[name], undefined)
    153    assert_false(name in text)
    154    assert_equals(text[name], undefined)
    155  }, "Node member must be removed: " + name)
    156 }
    157 var nodeRemoved = [
    158  "hasAttributes",
    159  "attributes",
    160  "namespaceURI",
    161  "prefix",
    162  "localName",
    163  "isSupported",
    164  "getFeature",
    165  "getUserData",
    166  "setUserData",
    167  "rootNode",
    168 ]
    169 nodeRemoved.forEach(isRemovedFromNode)
    170 
    171 function isRemovedFromWindow(name) {
    172  test(function() {
    173    assert_false(name in window)
    174    assert_equals(window[name], undefined)
    175  }, "Window member must be removed: " + name)
    176 }
    177 var windowRemoved = [
    178  "attachEvent",
    179  "content",
    180  "sidebar",
    181 ]
    182 windowRemoved.forEach(isRemovedFromWindow)
    183 
    184 function isRemovedFromEvent(name) {
    185  test(() => {
    186    assert_false(name in Event)
    187    assert_equals(Event[name], undefined)
    188  }, "Event should not have this constant: " + name)
    189 }
    190 var EventRemoved = [
    191  "MOUSEDOWN",
    192  "MOUSEUP",
    193  "MOUSEOVER",
    194  "MOUSEOUT",
    195  "MOUSEMOVE",
    196  "MOUSEDRAG",
    197  "CLICK",
    198  "DBLCLICK",
    199  "KEYDOWN",
    200  "KEYUP",
    201  "KEYPRESS",
    202  "DRAGDROP",
    203  "FOCUS",
    204  "BLUR",
    205  "SELECT",
    206  "CHANGE"
    207 ]
    208 EventRemoved.forEach(isRemovedFromEvent)
    209 
    210 var EventPrototypeRemoved = [
    211  "getPreventDefault",
    212  "path"
    213 ]
    214 EventPrototypeRemoved.forEach(name => {
    215  test(() => {
    216    assert_false(name in Event.prototype)
    217    assert_equals(Event.prototype[name], undefined)
    218    assert_false(name in new Event("test"))
    219    assert_equals((new Event("test"))[name], undefined)
    220  }, "Event.prototype should not have this property: " + name)
    221 })
    222 </script>