forked from mirrors/gecko-dev
MozReview-Commit-ID: 7E7LPorrEje --HG-- extra : rebase_source : 0572a35415a766a3f31d266760ecd07f0dcc3f72
52 lines
1.5 KiB
JavaScript
52 lines
1.5 KiB
JavaScript
// Listen for messages from the test.
|
|
addEventListener("TestEvent", event => {
|
|
let type = event.detail.type;
|
|
dump("urlbarAddonIframe.js got TestEvent, type=" + type +
|
|
" messageID=" + event.detail.messageID + "\n");
|
|
switch (type) {
|
|
case "function":
|
|
callUrlbarFunction(event.detail);
|
|
break;
|
|
case "event":
|
|
expectEvent(event.detail);
|
|
break;
|
|
}
|
|
});
|
|
|
|
// Calls a urlbar API function.
|
|
function callUrlbarFunction(detail) {
|
|
let args = detail.data;
|
|
let methodName = args.shift();
|
|
dump("urlbarAddonIframe.js calling urlbar." + methodName + "\n");
|
|
let rv = urlbar[methodName](...args);
|
|
ack(detail, rv);
|
|
}
|
|
|
|
// Waits for an event of a specified type to happen.
|
|
function expectEvent(detail) {
|
|
let type = detail.data;
|
|
dump("urlbarAddonIframe.js expecting event of type " + type + "\n");
|
|
// Ack that the message was received and an event listener was added.
|
|
ack(detail, null, 0);
|
|
addEventListener(type, function onEvent(event) {
|
|
dump("urlbarAddonIframe.js got event of type " + type + "\n");
|
|
if (event.type != type) {
|
|
return;
|
|
}
|
|
dump("urlbarAddonIframe.js got expected event\n");
|
|
removeEventListener(type, onEvent);
|
|
// Ack that the event was received.
|
|
ack(detail, event.detail, 1);
|
|
});
|
|
}
|
|
|
|
// Sends an ack to the test.
|
|
function ack(originalEventDetail, ackData = null, ackIndex = 0) {
|
|
dispatchEvent(new CustomEvent("TestEventAck", {
|
|
detail: {
|
|
messageID: originalEventDetail.messageID,
|
|
ackIndex,
|
|
data: ackData,
|
|
},
|
|
}));
|
|
}
|