From caa8172560b523c9bba343942a2a1020d60d2fa4 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 19 May 2015 18:22:35 -0400 Subject: [PATCH] implement cef browser title setting callback --- ports/cef/lib.rs | 1 + ports/cef/window.rs | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/ports/cef/lib.rs b/ports/cef/lib.rs index 54225fd3ae7..bc26e01b3a3 100644 --- a/ports/cef/lib.rs +++ b/ports/cef/lib.rs @@ -8,6 +8,7 @@ #![feature(link_args)] #![feature(thread_local)] #![feature(core)] +#![feature(convert)] #![feature(std_misc)] #![feature(rustc_private)] #![feature(collections)] diff --git a/ports/cef/window.rs b/ports/cef/window.rs index 87bda1af854..d6a5a1cb3f4 100644 --- a/ports/cef/window.rs +++ b/ports/cef/window.rs @@ -340,18 +340,24 @@ impl WindowMethods for Window { let frame = browser.get_main_frame(); let frame = frame.downcast(); let mut title_visitor = frame.title_visitor.borrow_mut(); - match &mut *title_visitor { - &mut None => {} - &mut Some(ref mut visitor) => { - match string { - None => visitor.visit(&[]), - Some(string) => { - let utf16_chars: Vec = Utf16Encoder::new(string.chars()).collect(); - visitor.visit(&utf16_chars) - } - } + let str = match string { + Some(s) => { + let utf16_chars: Vec = Utf16Encoder::new(s.chars()).collect(); + utf16_chars } + None => vec![] + }; + + if check_ptr_exist!(browser.get_host().get_client(), get_display_handler) && + check_ptr_exist!(browser.get_host().get_client().get_display_handler(), on_title_change) { + browser.get_host().get_client().get_display_handler().on_title_change((*browser).clone(), str.as_slice()); } + match &mut *title_visitor { + &mut None => {}, + &mut Some(ref mut visitor) => { + visitor.visit(&str); + } + }; } fn set_page_url(&self, url: Url) {