You are on page 1of 2

// open a dialog and return promise which resolves on a message from the

// known popup window

var dialogUtils = (function () (

"use strict";

let dialogResolvers = new Map()

let dialogArgs = new Map ()

return {

setDialogResult(win_id, response) {

if (!dialogResolvers.has(win_id))

throw new Error("dialogUtils error: bad dialog id")

dialogResolvers.get(win_id)(response)

dialogResolvers.delete(win_id)

dialogArgs.delete(win_id)

),

getDialogArgs(win_id) {
if (!dialogArgs.has(win_id))
throw new Error("dialogUtils error: bad dialog id")

return dialogArgs.get(win_id)
),

openDialog(url, name, args = {}, pos) {

return new Promise(function(resolve, reject) {

chrome,windows.create({

url:url,

type: "popup",

width: pos && pos.width || undefined,

top: pos && pos.top || undefined

}, function(w) {

dialogArgs.set(w.id, args)
dialogResolvers.set(w.id, resolve)

})

})

}
})();

You might also like