blob: f24ffe8103aa80861ed39833697e5518da5a4e7a [file] [log] [blame]
// Load in our dependencies
var ContextKarma = require('./karma')
// Resolve our parent window
var parentWindow = window.opener || window.parent
// Define a remote call method for Karma
var callParentKarmaMethod = ContextKarma.getDirectCallParentKarmaMethod(parentWindow)
// If we don't have access to the window, then use `postMessage`
// DEV: In Electron, we don't have access to the parent window due to it being in a separate process
// DEV: We avoid using this in Internet Explorer as they only support strings
// https://caniuse.com/?search=postmessage
var haveParentAccess = false
try { haveParentAccess = !!parentWindow.window } catch (err) { /* Ignore errors (likely permisison errors) */ }
if (!haveParentAccess) {
callParentKarmaMethod = ContextKarma.getPostMessageCallParentKarmaMethod(parentWindow)
}
// Define a window-scoped Karma
window.__karma__ = new ContextKarma(callParentKarmaMethod)