@@ -19,7 +19,9 @@ use crate::config::ManagerConfig;
19
19
use reqwest:: Client ;
20
20
use serde:: { Deserialize , Serialize } ;
21
21
use std:: collections:: HashMap ;
22
- use std:: error:: Error ;
22
+
23
+ use anyhow:: anyhow;
24
+ use anyhow:: Error ;
23
25
use std:: option:: Option ;
24
26
use std:: path:: PathBuf ;
25
27
@@ -60,7 +62,7 @@ pub struct ChromeManager {
60
62
}
61
63
62
64
impl ChromeManager {
63
- pub fn new ( ) -> Result < Box < Self > , Box < dyn Error > > {
65
+ pub fn new ( ) -> Result < Box < Self > , Error > {
64
66
let browser_name = CHROME_NAME ;
65
67
let driver_name = CHROMEDRIVER_NAME ;
66
68
let config = ManagerConfig :: default ( browser_name, driver_name) ;
@@ -94,18 +96,15 @@ impl ChromeManager {
94
96
format ! ( "{}{}" , CFT_URL , endpoint)
95
97
}
96
98
97
- fn request_driver_version_from_latest (
98
- & self ,
99
- driver_url : String ,
100
- ) -> Result < String , Box < dyn Error > > {
99
+ fn request_driver_version_from_latest ( & self , driver_url : String ) -> Result < String , Error > {
101
100
self . log . debug ( format ! (
102
101
"Reading {} version from {}" ,
103
102
& self . driver_name, driver_url
104
103
) ) ;
105
104
read_version_from_link ( self . get_http_client ( ) , driver_url, self . get_logger ( ) )
106
105
}
107
106
108
- fn request_versions_from_online < T > ( & self , driver_url : String ) -> Result < T , Box < dyn Error > >
107
+ fn request_versions_from_online < T > ( & self , driver_url : String ) -> Result < T , Error >
109
108
where
110
109
T : Serialize + for < ' a > Deserialize < ' a > ,
111
110
{
@@ -114,7 +113,7 @@ impl ChromeManager {
114
113
parse_json_from_url :: < T > ( self . get_http_client ( ) , driver_url)
115
114
}
116
115
117
- fn request_latest_driver_version_from_online ( & mut self ) -> Result < String , Box < dyn Error > > {
116
+ fn request_latest_driver_version_from_online ( & mut self ) -> Result < String , Error > {
118
117
let driver_name = self . driver_name ;
119
118
self . get_logger ( ) . trace ( format ! (
120
119
"Using Chrome for Testing (CfT) endpoints to find out latest stable {} version" ,
@@ -150,7 +149,7 @@ impl ChromeManager {
150
149
Ok ( stable_channel. version )
151
150
}
152
151
153
- fn request_good_driver_version_from_online ( & mut self ) -> Result < String , Box < dyn Error > > {
152
+ fn request_good_driver_version_from_online ( & mut self ) -> Result < String , Error > {
154
153
let browser_or_driver_version = if self . get_driver_version ( ) . is_empty ( ) {
155
154
self . get_browser_version ( )
156
155
} else {
@@ -170,13 +169,12 @@ impl ChromeManager {
170
169
. filter ( |r| r. version . starts_with ( version_for_filtering. as_str ( ) ) )
171
170
. collect ( ) ;
172
171
if filtered_versions. is_empty ( ) {
173
- return Err ( format_three_args (
172
+ return Err ( anyhow ! ( format_three_args(
174
173
UNAVAILABLE_DOWNLOAD_WITH_MIN_VERSION_ERR_MSG ,
175
174
self . get_driver_name( ) ,
176
175
& version_for_filtering,
177
176
& MIN_CHROMEDRIVER_VERSION_CFT . to_string( ) ,
178
- )
179
- . into ( ) ) ;
177
+ ) ) ) ;
180
178
}
181
179
182
180
let driver_version = filtered_versions. last ( ) . unwrap ( ) ;
@@ -255,7 +253,7 @@ impl SeleniumManager for ChromeManager {
255
253
] )
256
254
}
257
255
258
- fn discover_browser_version ( & mut self ) -> Result < Option < String > , Box < dyn Error > > {
256
+ fn discover_browser_version ( & mut self ) -> Result < Option < String > , Error > {
259
257
self . general_discover_browser_version (
260
258
r#"HKCU\Software\Google\Chrome\BLBeacon"# ,
261
259
REG_VERSION_ARG ,
@@ -267,7 +265,7 @@ impl SeleniumManager for ChromeManager {
267
265
self . driver_name
268
266
}
269
267
270
- fn request_driver_version ( & mut self ) -> Result < String , Box < dyn Error > > {
268
+ fn request_driver_version ( & mut self ) -> Result < String , Error > {
271
269
let major_browser_version_binding = self . get_major_browser_version ( ) ;
272
270
let major_browser_version = major_browser_version_binding. as_str ( ) ;
273
271
let cache_path = self . get_cache_path ( ) ?;
@@ -327,11 +325,11 @@ impl SeleniumManager for ChromeManager {
327
325
}
328
326
}
329
327
330
- fn request_browser_version ( & mut self ) -> Result < Option < String > , Box < dyn Error > > {
328
+ fn request_browser_version ( & mut self ) -> Result < Option < String > , Error > {
331
329
self . general_request_browser_version ( self . browser_name )
332
330
}
333
331
334
- fn get_driver_url ( & mut self ) -> Result < String , Box < dyn Error > > {
332
+ fn get_driver_url ( & mut self ) -> Result < String , Error > {
335
333
let major_driver_version = self
336
334
. get_major_driver_version ( )
337
335
. parse :: < i32 > ( )
@@ -373,7 +371,7 @@ impl SeleniumManager for ChromeManager {
373
371
) )
374
372
}
375
373
376
- fn get_driver_path_in_cache ( & self ) -> Result < PathBuf , Box < dyn Error > > {
374
+ fn get_driver_path_in_cache ( & self ) -> Result < PathBuf , Error > {
377
375
Ok ( compose_driver_path_in_cache (
378
376
self . get_cache_path ( ) ?. unwrap_or_default ( ) ,
379
377
self . driver_name ,
@@ -426,7 +424,7 @@ impl SeleniumManager for ChromeManager {
426
424
fn request_latest_browser_version_from_online (
427
425
& mut self ,
428
426
_browser_version : & str ,
429
- ) -> Result < String , Box < dyn Error > > {
427
+ ) -> Result < String , Error > {
430
428
let browser_name = self . browser_name ;
431
429
self . get_logger ( ) . trace ( format ! (
432
430
"Using Chrome for Testing (CfT) endpoints to find out latest stable {} version" ,
@@ -457,7 +455,7 @@ impl SeleniumManager for ChromeManager {
457
455
fn request_fixed_browser_version_from_online (
458
456
& mut self ,
459
457
_browser_version : & str ,
460
- ) -> Result < String , Box < dyn Error > > {
458
+ ) -> Result < String , Error > {
461
459
let browser_name = self . browser_name ;
462
460
let mut browser_version = self . get_browser_version ( ) . to_string ( ) ;
463
461
let major_browser_version = self . get_major_browser_version ( ) ;
@@ -497,13 +495,12 @@ impl SeleniumManager for ChromeManager {
497
495
. filter ( |r| r. version . starts_with ( major_browser_version. as_str ( ) ) )
498
496
. collect ( ) ;
499
497
if filtered_versions. is_empty ( ) {
500
- return Err ( format_three_args (
498
+ return Err ( anyhow ! ( format_three_args(
501
499
UNAVAILABLE_DOWNLOAD_WITH_MIN_VERSION_ERR_MSG ,
502
500
browser_name,
503
501
& major_browser_version,
504
502
& MIN_CHROME_VERSION_CFT . to_string( ) ,
505
- )
506
- . into ( ) ) ;
503
+ ) ) ) ;
507
504
}
508
505
let last_browser = filtered_versions. last ( ) . unwrap ( ) ;
509
506
let platform_url: Vec < & PlatformUrl > = last_browser
@@ -518,14 +515,11 @@ impl SeleniumManager for ChromeManager {
518
515
}
519
516
}
520
517
521
- fn get_min_browser_version_for_download ( & self ) -> Result < i32 , Box < dyn Error > > {
518
+ fn get_min_browser_version_for_download ( & self ) -> Result < i32 , Error > {
522
519
Ok ( MIN_CHROME_VERSION_CFT )
523
520
}
524
521
525
- fn get_browser_binary_path (
526
- & mut self ,
527
- _browser_version : & str ,
528
- ) -> Result < PathBuf , Box < dyn Error > > {
522
+ fn get_browser_binary_path ( & mut self , _browser_version : & str ) -> Result < PathBuf , Error > {
529
523
let browser_in_cache = self . get_browser_path_in_cache ( ) ?;
530
524
if MACOS . is ( self . get_os ( ) ) {
531
525
Ok ( browser_in_cache. join ( CFT_MACOS_APP_NAME ) )
@@ -534,10 +528,7 @@ impl SeleniumManager for ChromeManager {
534
528
}
535
529
}
536
530
537
- fn get_browser_url_for_download (
538
- & mut self ,
539
- browser_version : & str ,
540
- ) -> Result < String , Box < dyn Error > > {
531
+ fn get_browser_url_for_download ( & mut self , browser_version : & str ) -> Result < String , Error > {
541
532
if let Some ( browser_url) = self . browser_url . clone ( ) {
542
533
Ok ( browser_url)
543
534
} else {
@@ -553,7 +544,7 @@ impl SeleniumManager for ChromeManager {
553
544
fn get_browser_label_for_download (
554
545
& self ,
555
546
_browser_version : & str ,
556
- ) -> Result < Option < & str > , Box < dyn Error > > {
547
+ ) -> Result < Option < & str > , Error > {
557
548
Ok ( None )
558
549
}
559
550
}
0 commit comments