@@ -29,7 +29,7 @@ use crate::metadata::{
2929} ;
3030use crate :: {
3131 SeleniumManager , BETA , DASH_DASH_VERSION , DEV , ENV_LOCALAPPDATA , ENV_PROGRAM_FILES ,
32- ENV_PROGRAM_FILES_X86 , FALLBACK_RETRIES , NIGHTLY , REG_QUERY , STABLE , WMIC_COMMAND ,
32+ ENV_PROGRAM_FILES_X86 , FALLBACK_RETRIES , NIGHTLY , REG_QUERY , STABLE , WMIC_COMMAND , WMIC_COMMAND_ENV ,
3333} ;
3434
3535const BROWSER_NAME : & str = "chrome" ;
@@ -99,33 +99,41 @@ impl SeleniumManager for ChromeManager {
9999 }
100100
101101 fn discover_browser_version ( & self ) -> Option < String > {
102- match self . get_browser_path ( ) {
103- Some ( browser_path) => {
104- let ( shell, flag, args) =
105- if WINDOWS . is ( self . get_os ( ) ) {
106- let mut commands = vec ! [
107- self . format_two_args( WMIC_COMMAND , ENV_PROGRAM_FILES , browser_path) ,
108- self . format_two_args( WMIC_COMMAND , ENV_PROGRAM_FILES_X86 , browser_path) ,
109- self . format_two_args( WMIC_COMMAND , ENV_LOCALAPPDATA , browser_path) ,
110- ] ;
111- if !self . is_browser_version_unstable ( ) {
112- commands. push ( self . format_one_arg (
102+ let mut commands;
103+ let mut browser_path = self . get_browser_path ( ) ;
104+ if browser_path. is_empty ( ) {
105+ match self . detect_browser_path ( ) {
106+ Some ( path) => {
107+ browser_path = path;
108+ commands = vec ! [
109+ self . format_two_args( WMIC_COMMAND_ENV , ENV_PROGRAM_FILES , browser_path) ,
110+ self . format_two_args( WMIC_COMMAND_ENV , ENV_PROGRAM_FILES_X86 , browser_path) ,
111+ self . format_two_args( WMIC_COMMAND_ENV , ENV_LOCALAPPDATA , browser_path) ,
112+ ] ;
113+ if !self . is_browser_version_unstable ( ) {
114+ commands. push (
115+ self . format_one_arg (
113116 REG_QUERY ,
114117 r#"HKCU\Software\Google\Chrome\BLBeacon"# ,
115- ) ) ;
116- }
117- ( "cmd" , "/C" , commands)
118- } else {
119- (
120- "sh" ,
121- "-c" ,
122- vec ! [ self . format_one_arg( DASH_DASH_VERSION , browser_path) ] ,
123- )
124- } ;
125- self . detect_browser_version ( shell, flag, args)
118+ ) ,
119+ ) ;
120+ }
121+ }
122+ _ => return None ,
126123 }
127- _ => None ,
124+ } else {
125+ commands = vec ! [ self . format_one_arg( WMIC_COMMAND , browser_path) ] ;
128126 }
127+ let ( shell, flag, args) = if WINDOWS . is ( self . get_os ( ) ) {
128+ ( "cmd" , "/C" , commands)
129+ } else {
130+ (
131+ "sh" ,
132+ "-c" ,
133+ vec ! [ self . format_one_arg( DASH_DASH_VERSION , browser_path) ] ,
134+ )
135+ } ;
136+ self . detect_browser_version ( shell, flag, args)
129137 }
130138
131139 fn get_driver_name ( & self ) -> & str {
0 commit comments