Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / karma-firefox-launcher / index.js
1 var fs = require('fs');
2 var path = require('path');
3 var spawn = require('child_process').spawn;
4
5
6 var PREFS =
7     'user_pref("browser.shell.checkDefaultBrowser", false);\n' +
8     'user_pref("browser.bookmarks.restore_default_bookmarks", false);\n' +
9     'user_pref("dom.disable_open_during_load", false);\n' +
10     'user_pref("dom.max_script_run_time", 0);\n' +
11     'user_pref("dom.min_background_timeout_value", 10);\n' +
12     'user_pref("extensions.autoDisableScopes", 0);\n' +
13     'user_pref("extensions.enabledScopes", 15);\n';
14
15 // Return location of firefox.exe file for a given Firefox directory
16 // (available: "Mozilla Firefox", "Aurora", "Nightly").
17 var getFirefoxExe = function(firefoxDirName) {
18   if (process.platform !== 'win32') {
19     return null;
20   }
21
22
23   var prefix;
24   var prefixes = [process.env.PROGRAMFILES, process.env['PROGRAMFILES(X86)']];
25   var suffix = '\\'+ firefoxDirName + '\\firefox.exe';
26
27   for (var i = 0; i < prefixes.length; i++) {
28     prefix = prefixes[i];
29     if (fs.existsSync(prefix + suffix)) {
30       return prefix + suffix;
31     }
32   }
33
34   return 'C:\\Program Files' + suffix;
35 }
36
37 var getFirefoxWithFallbackOnOSX = function() {
38   if (process.platform !== 'darwin') {
39     return null;
40   }
41
42   var firefoxDirNames = Array.prototype.slice.call(arguments);
43   var prefix = '/Applications/';
44   var suffix = '.app/Contents/MacOS/firefox-bin';
45
46   var bin;
47   var homeBin;
48   for (var i = 0; i < firefoxDirNames.length; i++) {
49     bin = prefix + firefoxDirNames[i] + suffix;
50     homeBin = path.join(process.env.HOME, bin);
51
52     if (fs.existsSync(homeBin)) {
53       return homeBin;
54     }
55
56     if (fs.existsSync(bin)) {
57       return bin;
58     }
59   }
60 };
61
62 // https://developer.mozilla.org/en-US/docs/Command_Line_Options
63 var FirefoxBrowser = function(id, baseBrowserDecorator, args, logger) {
64   baseBrowserDecorator(this);
65
66   var log = logger.create('launcher');
67   this._getPrefs = function(prefs) {
68     if (typeof prefs !== 'object') {
69       return PREFS;
70     }
71     var result = PREFS;
72     for (var key in prefs) {
73       result += 'user_pref("' + key + '", ' + JSON.stringify(prefs[key]) + ');\n';
74     }
75     return result;
76   }
77
78   this._start = function(url) {
79     var self = this;
80     var command = this._getCommand();
81     var profilePath = args.profile || self._tempDir;
82     var flags = args.flags || [];
83     var extensionsDir;
84
85     if (Array.isArray(args.extensions)) {
86       extensionsDir = path.resolve(profilePath, 'extensions');
87       fs.mkdirSync(extensionsDir);
88       args.extensions.forEach(function (ext) {
89         var extBuffer = fs.readFileSync(ext);
90         var copyDestination = path.resolve(extensionsDir, path.basename(ext));
91         fs.writeFileSync(copyDestination, extBuffer);
92       });
93     }
94
95     fs.writeFileSync(profilePath + '/prefs.js', this._getPrefs(args.prefs));
96     self._execCommand(
97       command,
98       [url, '-profile', profilePath, '-no-remote'].concat(flags)
99     );
100   };
101 };
102
103
104 FirefoxBrowser.prototype = {
105   name: 'Firefox',
106
107   DEFAULT_CMD: {
108     linux: 'firefox',
109     freebsd: 'firefox',
110     darwin: getFirefoxWithFallbackOnOSX('Firefox'),
111     win32: getFirefoxExe('Mozilla Firefox')
112   },
113   ENV_CMD: 'FIREFOX_BIN'
114 };
115
116 FirefoxBrowser.$inject = ['id', 'baseBrowserDecorator', 'args', 'logger'];
117
118
119 var FirefoxDeveloperBrowser = function() {
120   FirefoxBrowser.apply(this, arguments);
121 };
122
123 FirefoxDeveloperBrowser.prototype = {
124   name: 'FirefoxDeveloper',
125   DEFAULT_CMD: {
126     linux: 'firefox',
127     darwin: getFirefoxWithFallbackOnOSX('FirefoxDeveloperEdition', 'FirefoxAurora'),
128     win32: getFirefoxExe('Firefox Developer Edition')
129   },
130   ENV_CMD: 'FIREFOX_DEVELOPER_BIN'
131 };
132
133 FirefoxDeveloperBrowser.$inject = ['id', 'baseBrowserDecorator', 'args', 'logger'];
134
135
136 var FirefoxAuroraBrowser = function() {
137   FirefoxBrowser.apply(this, arguments);
138 };
139
140 FirefoxAuroraBrowser.prototype = {
141   name: 'FirefoxAurora',
142   DEFAULT_CMD: {
143     linux: 'firefox',
144     darwin: getFirefoxWithFallbackOnOSX('FirefoxAurora'),
145     win32: getFirefoxExe('Aurora')
146   },
147   ENV_CMD: 'FIREFOX_AURORA_BIN'
148 };
149
150 FirefoxAuroraBrowser.$inject = ['id', 'baseBrowserDecorator', 'args', 'logger'];
151
152
153 var FirefoxNightlyBrowser = function() {
154   FirefoxBrowser.apply(this, arguments);
155 };
156
157 FirefoxNightlyBrowser.prototype = {
158   name: 'FirefoxNightly',
159
160   DEFAULT_CMD: {
161     linux: 'firefox',
162     darwin: getFirefoxWithFallbackOnOSX('FirefoxNightly'),
163     win32: getFirefoxExe('Nightly')
164   },
165   ENV_CMD: 'FIREFOX_NIGHTLY_BIN'
166 };
167
168 FirefoxNightlyBrowser.$inject = ['id', 'baseBrowserDecorator', 'args', 'logger'];
169
170
171 // PUBLISH DI MODULE
172 module.exports = {
173   'launcher:Firefox': ['type', FirefoxBrowser],
174   'launcher:FirefoxDeveloper': ['type', FirefoxDeveloperBrowser],
175   'launcher:FirefoxAurora': ['type', FirefoxAuroraBrowser],
176   'launcher:FirefoxNightly': ['type', FirefoxNightlyBrowser]
177 };