diff options
author | Moonchild <moonchild@palemoon.org> | 2020-06-08 18:12:08 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-06-08 18:12:08 +0000 |
commit | b0901eb0990191e1f063bfa13cb11701571612fd (patch) | |
tree | a2bf352e4f2cb73fc2000636ea8c2aec0130e82a /dom/bindings/test/test_dom_xrays.html | |
parent | e8bdf27ac712ffca8fd680100f3c7d4b33241e49 (diff) | |
download | UXP-b0901eb0990191e1f063bfa13cb11701571612fd.tar UXP-b0901eb0990191e1f063bfa13cb11701571612fd.tar.gz UXP-b0901eb0990191e1f063bfa13cb11701571612fd.tar.lz UXP-b0901eb0990191e1f063bfa13cb11701571612fd.tar.xz UXP-b0901eb0990191e1f063bfa13cb11701571612fd.zip |
Issue #439 - Remove, fix and clean up automated tests
With the big amount of code churn around DOM a lot of tests
broke severely enough that they caused build bustage.
This commit cleans up, removes or otherwise fixes tests
that are broken, no longer relevant or obsolete.
Diffstat (limited to 'dom/bindings/test/test_dom_xrays.html')
-rw-r--r-- | dom/bindings/test/test_dom_xrays.html | 231 |
1 files changed, 0 insertions, 231 deletions
diff --git a/dom/bindings/test/test_dom_xrays.html b/dom/bindings/test/test_dom_xrays.html deleted file mode 100644 index 15d7013ad..000000000 --- a/dom/bindings/test/test_dom_xrays.html +++ /dev/null @@ -1,231 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- -https://bugzilla.mozilla.org/show_bug.cgi?id=787070 ---> -<head> - <meta charset="utf-8"> - <title>Test for Bug 787070</title> - <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=787070">Mozilla Bug 787070</a> -<p id="display"></p> -<div id="content" style="display: none"> -<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_dom_xrays.html"></iframe> -</div> -<pre id="test"> -<script type="application/javascript"> - -/** Test for Bug 1021066 **/ - -var Cu = Components.utils; - -// values should contain the values that the property should have on each of -// the objects on the prototype chain of obj. A value of undefined signals -// that the value should not be present on that prototype. -function checkXrayProperty(obj, name, values) -{ - var instance = obj; - do { - var value = values.shift(); - if (typeof value == "undefined") { - ok(!obj.hasOwnProperty(name), "hasOwnProperty shouldn't see \"" + name + "\" through Xrays"); - is(Object.getOwnPropertyDescriptor(obj, name), undefined, "getOwnPropertyDescriptor shouldn't see \"" + name + "\" through Xrays"); - ok(Object.keys(obj).indexOf(name) == -1, "Enumerating the Xray should not return \"" + name + "\""); - } else { - ok(obj.hasOwnProperty(name), "hasOwnProperty should see \"" + name + "\" through Xrays"); - var pd = Object.getOwnPropertyDescriptor(obj, name); - ok(pd, "getOwnPropertyDescriptor should see \"" + name + "\" through Xrays"); - if (pd && pd.get) { - is(pd.get.call(instance), value, "Should get the right value for \"" + name + "\" through Xrays"); - } else { - is(obj[name], value, "Should get the right value for \"" + name + "\" through Xrays"); - } - if (pd && pd.enumerable) { - ok(Object.keys(obj).indexOf("" + name) > -1, "Enumerating the Xray should return \"" + name + "\""); - } - } - } while ((obj = Object.getPrototypeOf(obj))); -} - -function checkWindowXrayProperty(obj, name, windowValue, windowPrototypeValue, namedPropertiesValue, eventTargetValue) -{ - checkXrayProperty(obj, name, [ windowValue, windowPrototypeValue, namedPropertiesValue, eventTargetValue ]); -} - -function test() -{ - // Window - var win = document.getElementById("t").contentWindow; - var doc = document.getElementById("t").contentDocument; - - var winProto = Object.getPrototypeOf(win); - is(winProto, win.Window.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object"); - - var namedPropertiesObject = Object.getPrototypeOf(winProto); - is(Cu.getClassName(namedPropertiesObject, /* unwrap = */ true), "WindowProperties", "The proto chain of the Xray should mirror the prototype chain of the Xrayed object"); - - var eventTargetProto = Object.getPrototypeOf(namedPropertiesObject); - is(eventTargetProto, win.EventTarget.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object"); - - // Xrays need to filter expandos. - checkWindowXrayProperty(win, "expando", undefined); - ok(!("expando" in win), "Xrays should filter expandos"); - - checkWindowXrayProperty(win, "shadowedIframe", undefined, undefined, doc.getElementById("shadowedIframe").contentWindow); - ok("shadowedIframe" in win, "Named properties should be exposed through Xrays"); - - // Named properties live on the named properties object for global objects. - checkWindowXrayProperty(win, "iframe", undefined, undefined, doc.getElementById("iframe").contentWindow); - ok("iframe" in win, "Named properties should be exposed through Xrays"); - - // Window properties live on the instance, shadowing the properties of the named property object. - checkWindowXrayProperty(win, "document", doc, undefined, doc.getElementById("document").contentWindow); - ok("document" in win, "WebIDL properties should be exposed through Xrays"); - - // Unforgeable properties live on the instance, shadowing the properties of the named property object. - checkWindowXrayProperty(win, "self", win, undefined, doc.getElementById("self").contentWindow); - ok("self" in win, "WebIDL properties should be exposed through Xrays"); - - // Object.prototype is at the end of the prototype chain. - var obj = win; - while ((proto = Object.getPrototypeOf(obj))) { - obj = proto; - } - is(obj, win.Object.prototype, "Object.prototype should be at the end of the prototype chain"); - - // Named properties shouldn't shadow WebIDL- or ECMAScript-defined properties. - checkWindowXrayProperty(win, "addEventListener", undefined, undefined, undefined, eventTargetProto.addEventListener); - is(win.addEventListener, eventTargetProto.addEventListener, "Named properties shouldn't shadow WebIDL-defined properties"); - - is(win.toString, win.Object.prototype.toString, "Named properties shouldn't shadow ECMAScript-defined properties"); - - // HTMLDocument - // Unforgeable properties live on the instance. - checkXrayProperty(doc, "location", [ win.location ]); - is(String(win.location), document.getElementById("t").src, - "Should have the right stringification"); - - // HTMLHtmlElement - var elem = doc.documentElement; - - var elemProto = Object.getPrototypeOf(elem); - is(elemProto, win.HTMLHtmlElement.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object"); - - elemProto = Object.getPrototypeOf(elemProto); - is(elemProto, win.HTMLElement.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object"); - - elemProto = Object.getPrototypeOf(elemProto); - is(elemProto, win.Element.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object"); - - elemProto = Object.getPrototypeOf(elemProto); - is(elemProto, win.Node.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object"); - - elemProto = Object.getPrototypeOf(elemProto); - is(elemProto, win.EventTarget.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object"); - - // Xrays need to filter expandos. - ok(!("expando" in elem), "Xrays should filter expandos"); - - // WebIDL-defined properties live on the prototype. - checkXrayProperty(elem, "version", [ undefined, "" ]); - is(elem.version, "", "WebIDL properties should be exposed through Xrays"); - - // HTMLCollection - var coll = doc.getElementsByTagName("iframe"); - - // Named properties live on the instance for non-global objects. - checkXrayProperty(coll, "iframe", [ doc.getElementById("iframe") ]); - - // Indexed properties live on the instance. - checkXrayProperty(coll, 0, [ doc.getElementById("shadowedIframe") ]); - - // WebIDL-defined properties live on the prototype, overriding any named properties. - checkXrayProperty(coll, "item", [ undefined, win.HTMLCollection.prototype.item ]); - - // ECMAScript-defined properties live on the prototype, overriding any named properties. - checkXrayProperty(coll, "toString", [ undefined, undefined, win.Object.prototype.toString ]); - - // Frozen arrays should come from our compartment, not the target one. - var languages1 = win.navigator.languages; - isnot(languages1, undefined, "Must have .languages"); - ok(Array.isArray(languages1), ".languages should be an array"); - ok(Object.isFrozen(languages1), ".languages should be a frozen array"); - ok(!Cu.isXrayWrapper(languages1), "Should have our own version of array"); - is(Cu.getGlobalForObject(languages1), window, - "languages1 should come from our window"); - // We want to get .languages in the content compartment, but without waiving - // Xrays altogether. - var languages2 = win.eval("navigator.languages"); - isnot(languages2, undefined, "Must still have .languages"); - ok(Array.isArray(languages2), ".languages should still be an array"); - ok(Cu.isXrayWrapper(languages2), "Should have xray for content version of array"); - is(Cu.getGlobalForObject(languages2), win, - "languages2 come from the underlying window"); - ok(Object.isFrozen(languages2.wrappedJSObject), - ".languages should still be a frozen array underneath"); - isnot(languages1, languages2, "Must have distinct arrays"); - isnot(languages1, languages2.wrappedJSObject, - "Must have distinct arrays no matter how we slice it"); - - // Check that DataTransfer's .types has the hack to alias contains() - // to includes(). - var dataTransfer = new win.DataTransfer(); - is(dataTransfer.types.contains, dataTransfer.types.includes, - "Should have contains() set up as an alias to includes()"); - // Waive Xrays on the dataTransfer itself, since the .types we get is - // different over Xrays vs not. - is(dataTransfer.wrappedJSObject.types.contains, undefined, - "Underlying object should not have contains() set up as an alias to " + - "includes()"); - - // Check that deleters work correctly in the [OverrideBuiltins] case. - var elem = win.document.documentElement; - var dataset = elem.dataset; - is(dataset.foo, undefined, "Should not have a 'foo' property"); - ok(!('foo' in dataset), "Really should not have a 'foo' property"); - is(elem.getAttribute("data-foo"), null, - "Should not have a 'data-foo' attribute"); - ok(!elem.hasAttribute("data-foo"), - "Really should not have a 'data-foo' attribute"); - dataset.foo = "bar"; - is(dataset.foo, "bar", "Should now have a 'foo' property"); - ok('foo' in dataset, "Really should have a 'foo' property"); - is(elem.getAttribute("data-foo"), "bar", - "Should have a 'data-foo' attribute"); - ok(elem.hasAttribute("data-foo"), - "Really should have a 'data-foo' attribute"); - delete dataset.foo; - is(dataset.foo, undefined, "Should not have a 'foo' property again"); - ok(!('foo' in dataset), "Really should not have a 'foo' property again"); - is(elem.getAttribute("data-foo"), null, - "Should not have a 'data-foo' attribute again"); - ok(!elem.hasAttribute("data-foo"), - "Really should not have a 'data-foo' attribute again"); - - // Check that deleters work correctly in the non-[OverrideBuiltins] case. - var storage = win.sessionStorage; - is(storage.foo, undefined, "Should not have a 'foo' property"); - ok(!('foo' in storage), "Really should not have a 'foo' property"); - is(storage.getItem("foo"), null, "Should not have an item named 'foo'"); - storage.foo = "bar"; - is(storage.foo, "bar", "Should have a 'foo' property"); - ok('foo' in storage, "Really should have a 'foo' property"); - is(storage.getItem("foo"), "bar", "Should have an item named 'foo'"); - delete storage.foo - is(storage.foo, undefined, "Should not have a 'foo' property again"); - ok(!('foo' in storage), "Really should not have a 'foo' property again"); - is(storage.getItem("foo"), null, "Should not have an item named 'foo' again"); - - SimpleTest.finish(); -} - -SimpleTest.waitForExplicitFinish(); -addLoadEvent(test); - -</script> -</pre> -</body> -</html> |