summaryrefslogtreecommitdiffstats
path: root/js/xpconnect/tests/unit/test_classesByID_instanceof.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /js/xpconnect/tests/unit/test_classesByID_instanceof.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/xpconnect/tests/unit/test_classesByID_instanceof.js')
-rw-r--r--js/xpconnect/tests/unit/test_classesByID_instanceof.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/js/xpconnect/tests/unit/test_classesByID_instanceof.js b/js/xpconnect/tests/unit/test_classesByID_instanceof.js
new file mode 100644
index 000000000..b0acf8016
--- /dev/null
+++ b/js/xpconnect/tests/unit/test_classesByID_instanceof.js
@@ -0,0 +1,79 @@
+function testActual(SimpleURIClassByID)
+{
+ var simpleURI =
+ Components.classes["@mozilla.org/network/simple-uri;1"].createInstance();
+
+ do_check_eq(simpleURI instanceof SimpleURIClassByID, true);
+}
+
+function testInherited(SimpleURIClassByID)
+{
+ var simpleURI =
+ Components.classes["@mozilla.org/network/simple-uri;1"].createInstance();
+
+ var inherited = Object.create(simpleURI);
+
+ do_check_eq(inherited instanceof SimpleURIClassByID, true);
+}
+
+function testInheritedCrossGlobal(SimpleURIClassByID)
+{
+ var simpleURI =
+ Components.classes["@mozilla.org/network/simple-uri;1"].createInstance();
+
+ var sb = new Components.utils.Sandbox(this, { wantComponents: true });
+ var inheritedCross = sb.Object.create(simpleURI);
+
+ do_check_eq(inheritedCross instanceof SimpleURIClassByID, true);
+}
+
+function testCrossGlobalArbitraryGetPrototype(SimpleURIClassByID)
+{
+ var simpleURI =
+ Components.classes["@mozilla.org/network/simple-uri;1"].createInstance();
+
+ var sb = new Components.utils.Sandbox(this, { wantComponents: true });
+ var firstLevel = Object.create(simpleURI);
+
+ var obj = { shouldThrow: false };
+ var secondLevel =
+ new sb.Proxy(Object.create(firstLevel),
+ {
+ getPrototypeOf: new sb.Function("obj", `return function(t) {
+ if (obj.shouldThrow)
+ throw 42;
+ return Reflect.getPrototypeOf(t);
+ };`)(obj)
+ });
+ var thirdLevel = Object.create(secondLevel);
+
+ obj.shouldThrow = true;
+
+ var threw = false;
+ var err;
+ try
+ {
+ void (thirdLevel instanceof SimpleURIClassByID);
+ }
+ catch (e)
+ {
+ threw = true;
+ err = e;
+ }
+
+ do_check_eq(threw, true);
+ do_check_eq(err, 42);
+
+ obj.shouldThrow = false;
+
+ do_check_eq(thirdLevel instanceof SimpleURIClassByID, true);
+}
+
+function run_test() {
+ var SimpleURIClassByID = Components.classesByID["{e0da1d70-2f7b-11d3-8cd0-0060b0fc14a3}"];
+
+ testActual(SimpleURIClassByID);
+ testInherited(SimpleURIClassByID);
+ testInheritedCrossGlobal(SimpleURIClassByID);
+ testCrossGlobalArbitraryGetPrototype(SimpleURIClassByID);
+}