mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +00:00
ab0b38e5c0
This moves the assertions related to the well-formedness of the method from the TabSession consumer to Domains.splitMethod. Following the introduction of TabSession, this was missing from the superclass Session. This also fixes the "Foo.bar.baz" test case in remote/test/unit/test_Domains.js by removing the split() function and instead relying on String#split() inside Domains.splitMethod. Thanks-to: Alexandre Poirot <ochameau@mozilla.com> Differential Revision: https://phabricator.services.mozilla.com/D25947 --HG-- extra : moz-landing-system : lando
136 lines
3.0 KiB
JavaScript
136 lines
3.0 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const {Domain} = ChromeUtils.import("chrome://remote/content/domains/Domain.jsm");
|
|
const {Domains} = ChromeUtils.import("chrome://remote/content/domains/Domains.jsm");
|
|
|
|
class MockSession {
|
|
onEvent() {}
|
|
}
|
|
|
|
const noopSession = new MockSession();
|
|
|
|
add_test(function test_Domains_constructor() {
|
|
new Domains(noopSession, {});
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_Domains_domainSupportsMethod() {
|
|
const modules = {
|
|
"Foo": class extends Domain {
|
|
bar() {}
|
|
},
|
|
};
|
|
const domains = new Domains(noopSession, modules);
|
|
|
|
ok(domains.domainSupportsMethod("Foo", "bar"));
|
|
ok(!domains.domainSupportsMethod("Foo", "baz"));
|
|
ok(!domains.domainSupportsMethod("foo", "bar"));
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_Domains_get_invalidModule() {
|
|
Assert.throws(() => {
|
|
const domains = new Domains(noopSession, {Foo: undefined});
|
|
domains.get("Foo");
|
|
}, /UnknownMethodError/);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_Domains_get_missingConstructor() {
|
|
Assert.throws(() => {
|
|
const domains = new Domains(noopSession, {Foo: {}});
|
|
domains.get("Foo");
|
|
}, /TypeError/);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_Domain_get_superClassNotDomain() {
|
|
Assert.throws(() => {
|
|
const domains = new Domain(noopSession, {Foo: class {}});
|
|
domains.get("Foo");
|
|
}, /TypeError/);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_Domains_get_constructs() {
|
|
let eventFired;
|
|
class Session {
|
|
onEvent(event) {
|
|
eventFired = event;
|
|
}
|
|
}
|
|
|
|
let constructed = false;
|
|
class Foo extends Domain {
|
|
constructor() {
|
|
super();
|
|
constructed = true;
|
|
}
|
|
}
|
|
|
|
const session = new Session();
|
|
const domains = new Domains(session, {Foo});
|
|
|
|
const foo = domains.get("Foo");
|
|
ok(constructed);
|
|
ok(foo instanceof Foo);
|
|
|
|
const event = {};
|
|
foo.emit(event);
|
|
equal(event, eventFired);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_Domains_size() {
|
|
class Foo extends Domain {}
|
|
const domains = new Domains(noopSession, {Foo});
|
|
|
|
equal(domains.size, 0);
|
|
domains.get("Foo");
|
|
equal(domains.size, 1);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_Domains_clear() {
|
|
let dtorCalled = false;
|
|
class Foo extends Domain {
|
|
destructor() {
|
|
dtorCalled = true;
|
|
}
|
|
}
|
|
|
|
const domains = new Domains(noopSession, {Foo});
|
|
|
|
equal(domains.size, 0);
|
|
domains.get("Foo");
|
|
equal(domains.size, 1);
|
|
|
|
domains.clear();
|
|
equal(domains.size, 0);
|
|
ok(dtorCalled);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_Domains_splitMethod() {
|
|
for (const t of [42, null, true, {}, [], undefined]) {
|
|
Assert.throws(() => Domains.splitMethod(t), /TypeError/, `${typeof t} throws`);
|
|
}
|
|
for (const s of ["", ".", "foo.", ".bar", "foo.bar.baz"]) {
|
|
Assert.throws(() => Domains.splitMethod(s), /Invalid method format: ".*"/, `"${s}" throws`);
|
|
}
|
|
deepEqual(Domains.splitMethod("foo.bar"), {domain: "foo", command: "bar"});
|
|
|
|
run_next_test();
|
|
});
|