@@ -27,7 +27,7 @@ use servo::webrender_api::ScrollLocation;
27
27
use servo:: webrender_api:: units:: DeviceIntSize ;
28
28
use servo:: {
29
29
EventLoopWaker , InputEvent , KeyboardEvent , MouseButtonEvent , MouseMoveEvent ,
30
- WebDriverCommandMsg , WheelDelta , WheelEvent , WheelMode ,
30
+ WebDriverCommandMsg , WebDriverLoadStatus , WheelDelta , WheelEvent , WheelMode ,
31
31
} ;
32
32
use url:: Url ;
33
33
use winit:: application:: ApplicationHandler ;
@@ -454,23 +454,45 @@ impl App {
454
454
} ,
455
455
WebDriverCommandMsg :: LoadUrl ( webview_id, url, load_status_sender) => {
456
456
if let Some ( webview) = running_state. webview_by_id ( webview_id) {
457
- webview. load ( url. into_url ( ) ) ;
458
457
running_state. set_load_status_sender ( webview_id, load_status_sender) ;
458
+ webview. load ( url. into_url ( ) ) ;
459
459
}
460
460
} ,
461
461
WebDriverCommandMsg :: Refresh ( webview_id, load_status_sender) => {
462
462
if let Some ( webview) = running_state. webview_by_id ( webview_id) {
463
- webview. reload ( ) ;
464
463
running_state. set_load_status_sender ( webview_id, load_status_sender) ;
464
+ webview. reload ( ) ;
465
465
}
466
466
} ,
467
- WebDriverCommandMsg :: GoBack ( webview_id) => {
467
+ WebDriverCommandMsg :: GoBack ( webview_id, load_status_sender) => {
468
+ let ignore = match running_state. url_history_for_webview ( webview_id) {
469
+ Some ( url_history) => url_history. current_index == 0 ,
470
+ None => true ,
471
+ } ;
472
+
473
+ if ignore {
474
+ let _ = load_status_sender. send ( WebDriverLoadStatus :: Complete ) ;
475
+ }
476
+
468
477
if let Some ( webview) = running_state. webview_by_id ( webview_id) {
478
+ running_state. set_load_status_sender ( webview_id, load_status_sender) ;
469
479
webview. go_back ( 1 ) ;
470
480
}
471
481
} ,
472
- WebDriverCommandMsg :: GoForward ( webview_id) => {
482
+ WebDriverCommandMsg :: GoForward ( webview_id, load_status_sender) => {
483
+ let ignore = match running_state. url_history_for_webview ( webview_id) {
484
+ Some ( url_history) => {
485
+ url_history. current_index == url_history. urls . len ( ) - 1
486
+ } ,
487
+ None => true ,
488
+ } ;
489
+
490
+ if ignore {
491
+ let _ = load_status_sender. send ( WebDriverLoadStatus :: Complete ) ;
492
+ }
493
+
473
494
if let Some ( webview) = running_state. webview_by_id ( webview_id) {
495
+ running_state. set_load_status_sender ( webview_id, load_status_sender) ;
474
496
webview. go_forward ( 1 ) ;
475
497
}
476
498
} ,
0 commit comments