1 |
|
2 |
|
3 | var electronPrebuilt;
|
4 | try {
|
5 | electronPrebuilt = require('electron');
|
6 | } catch (electronNotFoundErr) {
|
7 | try {
|
8 | electronPrebuilt = require('electron-prebuilt');
|
9 |
|
10 | console.warn('WARN: `electron-prebuilt` has been deprecated as of `electron-prebuilt@1.3.1`. ' +
|
11 | 'Please move to `electron` instead');
|
12 | } catch (electronPrebuiltNotFoundErr) {
|
13 | console.error('Expected `electron` to be installed but it was not. Please install it.');
|
14 | throw electronNotFoundErr;
|
15 | }
|
16 | }
|
17 |
|
18 |
|
19 |
|
20 | var $inject = ['baseBrowserDecorator', 'args', 'config.basePath', 'config.urlRoot'];
|
21 | function ElectronBrowser(baseBrowserDecorator, args, karmaBasePath, karmaUrlRoot) {
|
22 |
|
23 | baseBrowserDecorator(this);
|
24 |
|
25 |
|
26 | var flags = args.flags || [];
|
27 | var userDataDir = args.userDataDir || this._tempDir;
|
28 |
|
29 |
|
30 | if (flags.indexOf('--show') !== -1) {
|
31 | console.log('karma-electron: `--show` is now deprecated. Please use `browserWindowOptions.show` instead');
|
32 | }
|
33 |
|
34 |
|
35 | this._getOptions = function (url) {
|
36 | this._stdinOptions = {};
|
37 | var retArr = [__dirname + '/electron-launcher.js'].concat(flags, [
|
38 | '--user-data-dir', userDataDir,
|
39 | '--url', url,
|
40 | '--stdin-options'
|
41 | ]);
|
42 | if (args.require) { retArr = retArr.concat(['--require', args.require]); }
|
43 | if (args.browserWindowOptions) { this._stdinOptions.browserWindowOptions = args.browserWindowOptions; }
|
44 | if (args.loadURLOptions) { this._stdinOptions.loadURLOptions = args.loadURLOptions; }
|
45 | return retArr;
|
46 | };
|
47 |
|
48 |
|
49 | var originalExecCommand = this._execCommand;
|
50 | this._execCommand = function (/*cmd, args*/) {
|
51 | var retArr = originalExecCommand.apply(this, arguments);
|
52 | this._process.stdin.end(JSON.stringify(this._stdinOptions));
|
53 | return retArr;
|
54 | };
|
55 | }
|
56 | ElectronBrowser.prototype = {
|
57 | name: 'Electron',
|
58 | DEFAULT_CMD: {
|
59 | linux: electronPrebuilt,
|
60 | darwin: electronPrebuilt,
|
61 | win32: electronPrebuilt
|
62 | },
|
63 | ENV_CMD: 'ELECTRON_BIN'
|
64 | };
|
65 |
|
66 |
|
67 | ElectronBrowser.$inject = $inject;
|
68 |
|
69 |
|
70 | module.exports = {
|
71 | 'launcher:Electron': ['type', ElectronBrowser]
|
72 | };
|