1616// under the License.
1717
1818use crate :: config:: ManagerConfig ;
19+ use reqwest:: Client ;
1920use std:: collections:: HashMap ;
2021use std:: error:: Error ;
2122use std:: path:: PathBuf ;
@@ -28,8 +29,9 @@ use crate::metadata::{
2829 create_driver_metadata, get_driver_version_from_metadata, get_metadata, write_metadata,
2930} ;
3031use crate :: {
31- SeleniumManager , BETA , DASH_DASH_VERSION , DEV , ENV_LOCALAPPDATA , ENV_PROGRAM_FILES ,
32- ENV_PROGRAM_FILES_X86 , FALLBACK_RETRIES , NIGHTLY , REG_QUERY , STABLE , WMIC_COMMAND , WMIC_COMMAND_ENV ,
32+ create_default_http_client, SeleniumManager , BETA , DASH_DASH_VERSION , DEV , ENV_LOCALAPPDATA ,
33+ ENV_PROGRAM_FILES , ENV_PROGRAM_FILES_X86 , FALLBACK_RETRIES , NIGHTLY , REG_QUERY , STABLE ,
34+ WMIC_COMMAND , WMIC_COMMAND_ENV ,
3335} ;
3436
3537const BROWSER_NAME : & str = "chrome" ;
@@ -41,6 +43,7 @@ pub struct ChromeManager {
4143 pub browser_name : & ' static str ,
4244 pub driver_name : & ' static str ,
4345 pub config : ManagerConfig ,
46+ pub http_client : Client ,
4447}
4548
4649impl ChromeManager {
@@ -49,6 +52,7 @@ impl ChromeManager {
4952 browser_name : BROWSER_NAME ,
5053 driver_name : DRIVER_NAME ,
5154 config : ManagerConfig :: default ( ) ,
55+ http_client : create_default_http_client ( ) ,
5256 } )
5357 }
5458}
@@ -58,6 +62,10 @@ impl SeleniumManager for ChromeManager {
5862 self . browser_name
5963 }
6064
65+ fn get_http_client ( & self ) -> & Client {
66+ & self . http_client
67+ }
68+
6169 fn get_browser_path_map ( & self ) -> HashMap < BrowserPath , & str > {
6270 HashMap :: from ( [
6371 (
@@ -156,31 +164,32 @@ impl SeleniumManager for ChromeManager {
156164 _ => {
157165 let mut driver_version = "" . to_string ( ) ;
158166 let mut browser_version_int = browser_version. parse :: < i32 > ( ) . unwrap_or_default ( ) ;
159- if browser_version_int > 0 {
160- for i in 0 ..FALLBACK_RETRIES {
161- let driver_url = if browser_version. is_empty ( ) {
162- format ! ( "{}{}" , DRIVER_URL , LATEST_RELEASE )
163- } else {
164- format ! ( "{}{}_{}" , DRIVER_URL , LATEST_RELEASE , browser_version_int)
165- } ;
166- log:: debug!( "Reading {} version from {}" , & self . driver_name, driver_url) ;
167- let content = read_content_from_link ( driver_url) ;
168- match content {
169- Ok ( version) => {
170- driver_version = version;
171- break ;
172- }
173- _ => {
174- log:: warn!(
167+ for i in 0 ..FALLBACK_RETRIES {
168+ let driver_url = if browser_version. is_empty ( ) {
169+ format ! ( "{}{}" , DRIVER_URL , LATEST_RELEASE )
170+ } else {
171+ format ! ( "{}{}_{}" , DRIVER_URL , LATEST_RELEASE , browser_version_int)
172+ } ;
173+ if !browser_version. is_empty ( ) && browser_version_int <= 0 {
174+ break ;
175+ }
176+ log:: debug!( "Reading {} version from {}" , & self . driver_name, driver_url) ;
177+ let content = read_content_from_link ( self . get_http_client ( ) , driver_url) ;
178+ match content {
179+ Ok ( version) => {
180+ driver_version = version;
181+ break ;
182+ }
183+ _ => {
184+ log:: warn!(
175185 "Error getting version of {} {}. Retrying with {} {} (attempt {}/{})" ,
176186 & self . driver_name,
177187 browser_version_int,
178188 & self . driver_name,
179189 browser_version_int - 1 ,
180190 i + 1 , FALLBACK_RETRIES
181191 ) ;
182- browser_version_int -= 1 ;
183- }
192+ browser_version_int -= 1 ;
184193 }
185194 }
186195 }
0 commit comments