| // 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) |