diff --git a/ports/cef/window.rs b/ports/cef/window.rs index bab2d5bbac0..a5a70cb19d2 100644 --- a/ports/cef/window.rs +++ b/ports/cef/window.rs @@ -361,6 +361,9 @@ impl WindowMethods for Window { } fn set_page_url(&self, url: Url) { + // it seems to be the case that load start is always called + // IMMEDIATELY before address change, so just stick it here + on_load_start(self); let browser = self.cef_browser.borrow(); let browser = match *browser { None => return, @@ -455,6 +458,21 @@ impl CompositorProxy for CefCompositorProxy { } } +fn on_load_start(window: &Window) { + let browser = window.cef_browser.borrow(); + let browser = match *browser { + None => return, + Some(ref browser) => browser, + }; + if check_ptr_exist!(browser.get_host().get_client(), get_load_handler) && + check_ptr_exist!(browser.get_host().get_client().get_load_handler(), on_load_start) { + browser.get_host() + .get_client() + .get_load_handler() + .on_load_start((*browser).clone(), browser.get_main_frame()); + } +} + #[cfg(target_os="linux")] pub fn init_window() { unsafe {