gecko-dev/dom/base/test/mozbrowser_api_utils.js
Victor Porof 0a8ff0ad85 Bug 1561435 - Format dom/, a=automatic-formatting
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D35951

--HG--
extra : source : 62f3501af4bc1c0bd1ee1977a28aee04706a6663
2019-07-05 10:44:55 +02:00

54 lines
1.3 KiB
JavaScript

const FRAME_URL = "http://example.org/";
const METHODS = {
sendMouseEvent: {},
goBack: {},
goForward: {},
reload: {},
stop: {},
getCanGoBack: {},
getCanGoForward: {},
};
const ATTRIBUTES = [];
function once(target, eventName, useCapture = false) {
info(
"Waiting for event: '" + JSON.stringify(eventName) + "' on " + target + "."
);
return new Promise(resolve => {
for (let [add, remove] of [
["addEventListener", "removeEventListener"],
["addMessageListener", "removeMessageListener"],
]) {
if (add in target && remove in target) {
eventName.forEach(evName => {
target[add](
evName,
function onEvent(...aArgs) {
info("Got event: '" + evName + "' on " + target + ".");
target[remove](evName, onEvent, useCapture);
resolve(aArgs);
},
useCapture
);
});
break;
}
}
});
}
async function loadFrame(attributes = {}) {
let iframe = document.createElement("iframe");
iframe.setAttribute("src", FRAME_URL);
for (let key in attributes) {
iframe.setAttribute(key, attributes[key]);
}
let loaded = once(iframe, ["load", "mozbrowserloadend"]);
document.body.appendChild(iframe);
await loaded;
return iframe;
}