Skip to content

Commit

Permalink
feat:Chromium support for Linux, Darwin and Windows
Browse files Browse the repository at this point in the history
Add support for Chromium for Linux, Darwin and Windows platforms
Remove linux chromium binary lookup in Google Chrome
Closes karma-runner#45
  • Loading branch information
haifengkao committed Apr 12, 2016
1 parent 7a3d127 commit 02bcf8f
Showing 1 changed file with 66 additions and 1 deletion.
67 changes: 66 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,55 @@ function getChromeExe (chromeDirName) {
return windowsChromeDirectory
}

var ChromiumBrowser = function(baseBrowserDecorator, args) {
baseBrowserDecorator(this)

var flags = args.flags || []

this._getOptions = function (url) {
// Chromium CLI options
// http://peter.sh/experiments/chromium-command-line-switches/
flags.forEach(function (flag, i) {
if (isJSFlags(flag)) {
flags[i] = sanitizeJSFlags(flag)
}
})

return [
'--user-data-dir=' + this._tempDir,
'--no-default-browser-check',
'--no-first-run',
'--disable-default-apps',
'--disable-popup-blocking',
'--disable-translate',
'--disable-background-timer-throttling'
].concat(flags, [url])
}
};

// Return location of Chromium's chrome.exe file.
function getChromiumExe(chromeDirName) {
// Only run these checks on win32
if (process.platform !== 'win32') {
return null
}
var windowsChromiumDirectory, i, prefix
var suffix = '\\Chromium\\Application\\chrome.exe'
var prefixes = [process.env.LOCALAPPDATA, process.env.PROGRAMFILES, process.env['PROGRAMFILES(X86)']]

for (i = 0; i < prefixes.length; i++) {
prefix = prefixes[i]
try {
windowsChromiumDirectory = path.join(prefix, suffix)
fsAccess.sync(windowsChromeDirectory)
return windowsChromeDirectory
} catch (e) {}
}

return windowsChromiumDirectory
}


function getBin (commands) {
// Don't run these checks on win32
if (process.platform !== 'linux') {
Expand Down Expand Up @@ -103,7 +152,7 @@ ChromeBrowser.prototype = {
DEFAULT_CMD: {
// Try chromium-browser before chromium to avoid conflict with the legacy
// chromium-bsu package previously known as 'chromium' in Debian and Ubuntu.
linux: getBin(['chromium-browser', 'chromium', 'google-chrome', 'google-chrome-stable']),
linux: getBin(['google-chrome', 'google-chrome-stable']),
darwin: getChromeDarwin('/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'),
win32: getChromeExe('Chrome')
},
Expand Down Expand Up @@ -149,6 +198,21 @@ ChromeCanaryBrowser.prototype = {

ChromeCanaryBrowser.$inject = ['baseBrowserDecorator', 'args']

ChromiumBrowser.prototype = {
name: 'Chromium',

DEFAULT_CMD: {
// Try chromium-browser before chromium to avoid conflict with the legacy
// chromium-bsu package previously known as 'chromium' in Debian and Ubuntu.
linux: getBin(['chromium-browser', 'chromium']),
darwin: '/Applications/Chromium.app/Contents/MacOS/Chromium',
win32: getChromiumExe()
},
ENV_CMD: 'CHROMIUM_BIN'
};

ChromiumBrowser.$inject = ['baseBrowserDecorator', 'args']

var DartiumBrowser = function () {
ChromeBrowser.apply(this, arguments)

Expand All @@ -173,6 +237,7 @@ DartiumBrowser.$inject = ['baseBrowserDecorator', 'args']
module.exports = {
'launcher:Chrome': ['type', ChromeBrowser],
'launcher:ChromeCanary': ['type', ChromeCanaryBrowser],
'launcher:Chromium': ['type', ChromiumBrowser],
'launcher:Dartium': ['type', DartiumBrowser]
}

Expand Down

0 comments on commit 02bcf8f

Please sign in to comment.