@@ -67,6 +67,54 @@ function getChromeExe (chromeDirName) {
6767 return windowsChromeDirectory
6868}
6969
70+ var ChromiumBrowser = function ( baseBrowserDecorator , args ) {
71+ baseBrowserDecorator ( this )
72+
73+ var flags = args . flags || [ ]
74+
75+ this . _getOptions = function ( url ) {
76+ // Chromium CLI options
77+ // http://peter.sh/experiments/chromium-command-line-switches/
78+ flags . forEach ( function ( flag , i ) {
79+ if ( isJSFlags ( flag ) ) {
80+ flags [ i ] = sanitizeJSFlags ( flag )
81+ }
82+ } )
83+
84+ return [
85+ '--user-data-dir=' + this . _tempDir ,
86+ '--no-default-browser-check' ,
87+ '--no-first-run' ,
88+ '--disable-default-apps' ,
89+ '--disable-popup-blocking' ,
90+ '--disable-translate' ,
91+ '--disable-background-timer-throttling'
92+ ] . concat ( flags , [ url ] )
93+ }
94+ }
95+
96+ // Return location of Chromium's chrome.exe file.
97+ function getChromiumExe ( chromeDirName ) {
98+ // Only run these checks on win32
99+ if ( process . platform !== 'win32' ) {
100+ return null
101+ }
102+ var windowsChromiumDirectory , i , prefix
103+ var suffix = '\\Chromium\\Application\\chrome.exe'
104+ var prefixes = [ process . env . LOCALAPPDATA , process . env . PROGRAMFILES , process . env [ 'PROGRAMFILES(X86)' ] ]
105+
106+ for ( i = 0 ; i < prefixes . length ; i ++ ) {
107+ prefix = prefixes [ i ]
108+ try {
109+ windowsChromiumDirectory = path . join ( prefix , suffix )
110+ fsAccess . sync ( windowsChromiumDirectory )
111+ return windowsChromiumDirectory
112+ } catch ( e ) { }
113+ }
114+
115+ return windowsChromiumDirectory
116+ }
117+
70118function getBin ( commands ) {
71119 // Don't run these checks on win32
72120 if ( process . platform !== 'linux' ) {
@@ -104,7 +152,7 @@ ChromeBrowser.prototype = {
104152 DEFAULT_CMD : {
105153 // Try chromium-browser before chromium to avoid conflict with the legacy
106154 // chromium-bsu package previously known as 'chromium' in Debian and Ubuntu.
107- linux : getBin ( [ 'chromium-browser' , 'chromium' , ' google-chrome', 'google-chrome-stable' ] ) ,
155+ linux : getBin ( [ 'google-chrome' , 'google-chrome-stable' ] ) ,
108156 darwin : getChromeDarwin ( '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' ) ,
109157 win32 : getChromeExe ( 'Chrome' )
110158 } ,
@@ -150,6 +198,21 @@ ChromeCanaryBrowser.prototype = {
150198
151199ChromeCanaryBrowser . $inject = [ 'baseBrowserDecorator' , 'args' ]
152200
201+ ChromiumBrowser . prototype = {
202+ name : 'Chromium' ,
203+
204+ DEFAULT_CMD : {
205+ // Try chromium-browser before chromium to avoid conflict with the legacy
206+ // chromium-bsu package previously known as 'chromium' in Debian and Ubuntu.
207+ linux : getBin ( [ 'chromium-browser' , 'chromium' ] ) ,
208+ darwin : '/Applications/Chromium.app/Contents/MacOS/Chromium' ,
209+ win32 : getChromiumExe ( )
210+ } ,
211+ ENV_CMD : 'CHROMIUM_BIN'
212+ }
213+
214+ ChromiumBrowser . $inject = [ 'baseBrowserDecorator' , 'args' ]
215+
153216var DartiumBrowser = function ( ) {
154217 ChromeBrowser . apply ( this , arguments )
155218
@@ -174,6 +237,7 @@ DartiumBrowser.$inject = ['baseBrowserDecorator', 'args']
174237module . exports = {
175238 'launcher:Chrome' : [ 'type' , ChromeBrowser ] ,
176239 'launcher:ChromeCanary' : [ 'type' , ChromeCanaryBrowser ] ,
240+ 'launcher:Chromium' : [ 'type' , ChromiumBrowser ] ,
177241 'launcher:Dartium' : [ 'type' , DartiumBrowser ]
178242}
179243
0 commit comments