diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2015-05-26 21:20:33 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2015-05-27 14:45:58 -0400 |
commit | 81eb426b04ab6d68f542fb047bb9706795d0f3a5 (patch) | |
tree | a742573045d958a1e0b6f4b2620807d81f3b79cc | |
parent | b1ae5e7523461390d332e39a98a847b243afab3b (diff) | |
download | servo-81eb426b04ab6d68f542fb047bb9706795d0f3a5.tar.gz servo-81eb426b04ab6d68f542fb047bb9706795d0f3a5.zip |
when creating a cef browser, setup the url to load but don't load it
cef apps will expect to enter their main loops before this happens due to
various callbacks being hit, so it's necessary to punt this loading off until
a later time
-rw-r--r-- | ports/cef/browser.rs | 8 | ||||
-rw-r--r-- | ports/cef/frame.rs | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/ports/cef/browser.rs b/ports/cef/browser.rs index 2aaa926afa4..4da87e906ea 100644 --- a/ports/cef/browser.rs +++ b/ports/cef/browser.rs @@ -264,7 +264,7 @@ pub fn browser_callback_after_created(browser: CefBrowser) { life_span_handler.on_after_created(browser.clone()); } browser.downcast().callback_executed.set(true); - browser.downcast().host.was_resized(); + browser.downcast().frame.load(); } fn browser_host_create(window_info: &cef_window_info_t, @@ -274,12 +274,12 @@ fn browser_host_create(window_info: &cef_window_info_t, -> CefBrowser { let browser = ServoCefBrowser::new(window_info, client).as_cef_interface(); browser.init(window_info); + if url != ptr::null() { + unsafe { browser.downcast().frame.set_url(CefWrap::to_rust(url)); } + } if callback_executed { browser_callback_after_created(browser.clone()); } - if url != ptr::null() { - unsafe { browser.downcast().frame.load_url(CefWrap::to_rust(url)); } - } BROWSERS.with(|browsers| { browsers.borrow_mut().push(browser.clone()); }); diff --git a/ports/cef/frame.rs b/ports/cef/frame.rs index 61ae9de2821..e6a166be121 100644 --- a/ports/cef/frame.rs +++ b/ports/cef/frame.rs @@ -53,10 +53,20 @@ full_cef_class_impl! { pub trait ServoCefFrameExtensions { fn set_browser(&self, browser: CefBrowser); + fn set_url(&self, url: &[u16]); + fn load(&self); } impl ServoCefFrameExtensions for CefFrame { fn set_browser(&self, browser: CefBrowser) { *self.downcast().browser.borrow_mut() = Some(browser) } + fn set_url(&self, url: &[u16]) { + let frame = self.downcast(); + *frame.url.borrow_mut() = String::from_utf16(url).unwrap(); + } + fn load(&self) { + let event = WindowEvent::LoadUrl(self.downcast().url.borrow().clone()); + self.downcast().browser.borrow_mut().as_mut().unwrap().send_window_event(event); + } } |