blob: 2b96260fae4b70f1161fa3876e9dc36673904885 [file] [log] [blame]
importScripts('/resources/testharness.js');
async function importModuleDeps() {
const {kTestReply, TestHelperImpl} = await import('./helpers.js');
const {MojoWebTestHelper, MojoWebTestHelperRemote} = await import(
'/gen/content/test/data/mojo_web_test_helper_test.mojom.m.js');
Object.assign(
self,
{kTestReply, TestHelperImpl, MojoWebTestHelper, MojoWebTestHelperRemote});
}
const imports = importModuleDeps();
promise_test(async () => {
await imports;
let helperImpl = new TestHelperImpl();
let interceptor =
new MojoInterfaceInterceptor(MojoWebTestHelper.$interfaceName);
interceptor.oninterfacerequest = e => {
helperImpl.bindRequest(e.handle);
};
interceptor.start();
let helper = new MojoWebTestHelperRemote();
helper.$.bindNewPipeAndPassReceiver().bindInBrowser();
const {reversed} = await helper.reverse('the string');
assert_equals(reversed, kTestReply);
assert_equals(helperImpl.getLastString(), 'the string');
}, 'Can implement a Mojo service and intercept it from a worker');
promise_test(async () => {
await imports;
assert_throws_dom('NotSupportedError', () => {
new MojoInterfaceInterceptor(
MojoWebTestHelper.$interfaceName, 'process');
});
}, 'Cannot create a MojoInterfaceInterceptor with process scope');
// done() is needed because the testharness is running as if explicit_done
// was specified.
done();