mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 09:15:35 +00:00
Bug 1313980 Avoid listening on browser-specific MM with connectNative() r=kmag
MozReview-Commit-ID: Al57DUrys63 --HG-- extra : rebase_source : c12b8733ccc156fbc39cd7e57d61690a658e8f80
This commit is contained in:
parent
d73c1e3013
commit
19d6f8a342
@ -231,7 +231,7 @@ this.NativeApp = class extends EventEmitter {
|
||||
*/
|
||||
static onConnectNative(context, messageManager, portId, sender, application) {
|
||||
let app = new NativeApp(context, application);
|
||||
let port = new ExtensionUtils.Port(context, messageManager, [messageManager], "", portId, sender, sender);
|
||||
let port = new ExtensionUtils.Port(context, messageManager, [Services.mm], "", portId, sender, sender);
|
||||
app.once("disconnect", (what, err) => port.disconnect(err));
|
||||
|
||||
/* eslint-disable mozilla/balanced-listeners */
|
||||
|
@ -476,3 +476,39 @@ add_task(function* test_stderr() {
|
||||
notEqual(lines[1], -1, "Saw second line of stderr output on the console");
|
||||
notEqual(lines[0], lines[1], "Stderr output lines are separated in the console");
|
||||
});
|
||||
|
||||
// Test that calling connectNative() multiple times works
|
||||
// (bug 1313980 was a previous regression in this area)
|
||||
add_task(function* test_multiple_connects() {
|
||||
async function background() {
|
||||
function once() {
|
||||
return new Promise(resolve => {
|
||||
let MSG = "hello";
|
||||
let port = browser.runtime.connectNative("echo");
|
||||
|
||||
port.onMessage.addListener(msg => {
|
||||
browser.test.assertEq(MSG, msg, "Got expected message back");
|
||||
port.disconnect();
|
||||
resolve();
|
||||
});
|
||||
port.postMessage(MSG);
|
||||
});
|
||||
}
|
||||
|
||||
await once();
|
||||
await once();
|
||||
browser.test.notifyPass("multiple-connect");
|
||||
}
|
||||
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
background,
|
||||
manifest: {
|
||||
applications: {gecko: {id: ID}},
|
||||
permissions: ["nativeMessaging"],
|
||||
},
|
||||
});
|
||||
|
||||
yield extension.startup();
|
||||
yield extension.awaitFinish("multiple-connect");
|
||||
yield extension.unload();
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user