Add CefHandler::HandleStatus for status messages, mouse over URLs and keyboard focus URLs (issue #61).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@169 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2011-01-26 15:12:49 +00:00
parent ca3a392c33
commit e8436018ef
10 changed files with 84 additions and 0 deletions

View File

@ -842,6 +842,17 @@ public:
/*--cef()--*/
virtual RetVal HandleTooltip(CefRefPtr<CefBrowser> browser,
CefString& text) =0;
// Status message types.
typedef cef_handler_statustype_t StatusType;
// Event called when the browser has a status message. |text| contains the
// text that will be displayed in the status message and |type| indicates the
// status message type. The return value is currently ignored.
/*--cef()--*/
virtual RetVal HandleStatus(CefRefPtr<CefBrowser> browser,
const CefString& value,
StatusType type) =0;
// Called to display a console message. Return RV_HANDLED to stop the message
// from being output to the console.

View File

@ -618,6 +618,13 @@ typedef struct _cef_handler_t
enum cef_retval_t (CEF_CALLBACK *handle_tooltip)(struct _cef_handler_t* self,
struct _cef_browser_t* browser, cef_string_t* text);
// Event called when the browser has a status message. |text| contains the
// text that will be displayed in the status message and |type| indicates the
// status message type. The return value is currently ignored.
enum cef_retval_t (CEF_CALLBACK *handle_status)(struct _cef_handler_t* self,
struct _cef_browser_t* browser, const cef_string_t* value,
enum cef_handler_statustype_t type);
// Called to display a console message. Return RV_HANDLED to stop the message
// from being output to the console.
enum cef_retval_t (CEF_CALLBACK *handle_console_message)(

View File

@ -515,6 +515,14 @@ enum cef_xml_node_type_t
XML_NODE_COMMENT,
};
// Status message types.
enum cef_handler_statustype_t
{
STATUSTYPE_TEXT = 0,
STATUSTYPE_MOUSEOVER_URL,
STATUSTYPE_KEYBOARD_FOCUS_URL,
};
// Popup window features.
typedef struct _cef_popup_features_t
{

View File

@ -389,12 +389,15 @@ bool BrowserWebViewDelegate::runModalBeforeUnloadDialog(
}
void BrowserWebViewDelegate::setStatusText(const WebString& text) {
ShowStatus(text, STATUSTYPE_TEXT);
}
void BrowserWebViewDelegate::setMouseOverURL(const WebURL& url) {
ShowStatus(url.spec().utf16(), STATUSTYPE_MOUSEOVER_URL);
}
void BrowserWebViewDelegate::setKeyboardFocusURL(const WebKit::WebURL& url) {
ShowStatus(url.spec().utf16(), STATUSTYPE_KEYBOARD_FOCUS_URL);
}
void BrowserWebViewDelegate::setToolTipText(
@ -891,6 +894,16 @@ void BrowserWebViewDelegate::WaitForPolicyDelegate() {
// Private methods -----------------------------------------------------------
void BrowserWebViewDelegate::ShowStatus(const WebString& text,
CefHandler::StatusType type)
{
CefRefPtr<CefHandler> handler = browser_->GetHandler();
if(handler.get()) {
CefString textStr = string16(text);
handler->HandleStatus(browser_, textStr, type);
}
}
void BrowserWebViewDelegate::LocationChangeDone(WebFrame* frame) {
CefRefPtr<CefHandler> handler = browser_->GetHandler();
bool is_top_frame = false;

View File

@ -262,6 +262,9 @@ class BrowserWebViewDelegate : public WebKit::WebViewClient,
const WebKit::WebString& title,
const FilePath& default_file);
// Called to show status messages.
void ShowStatus(const WebKit::WebString& text, CefHandler::StatusType type);
// In the Mac code, this is called to trigger the end of a test after the
// page has finished loading. From here, we can generate the dump for the
// test.

View File

@ -503,6 +503,19 @@ enum cef_retval_t CEF_CALLBACK handler_handle_tooltip(
CefBrowserCToCpp::Wrap(browser), textStr);
}
enum cef_retval_t CEF_CALLBACK handler_handle_status(
struct _cef_handler_t* self, cef_browser_t* browser,
const cef_string_t* value, enum cef_handler_statustype_t type)
{
DCHECK(self);
DCHECK(browser);
if(!self || !browser)
return RV_CONTINUE;
return CefHandlerCppToC::Get(self)->HandleStatus(
CefBrowserCToCpp::Wrap(browser), CefString(value), type);
}
enum cef_retval_t CEF_CALLBACK handler_handle_console_message(
struct _cef_handler_t* self, cef_browser_t* browser,
const cef_string_t* message, const cef_string_t* source, int line)
@ -569,6 +582,7 @@ CefHandlerCppToC::CefHandlerCppToC(CefHandler* cls)
struct_.struct_.handle_set_focus = handler_handle_set_focus;
struct_.struct_.handle_key_event = handler_handle_key_event;
struct_.struct_.handle_tooltip = handler_handle_tooltip;
struct_.struct_.handle_status = handler_handle_status;
struct_.struct_.handle_console_message = handler_handle_console_message;
struct_.struct_.handle_find_result = handler_handle_find_result;
}

View File

@ -371,6 +371,16 @@ CefHandler::RetVal CefHandlerCToCpp::HandleTooltip(
CefBrowserCppToC::Wrap(browser), text.GetWritableStruct());
}
CefHandler::RetVal CefHandlerCToCpp::HandleStatus(CefRefPtr<CefBrowser> browser,
const CefString& value, StatusType type)
{
if(CEF_MEMBER_MISSING(struct_, handle_status))
return RV_CONTINUE;
return struct_->handle_status(struct_,
CefBrowserCppToC::Wrap(browser), value.GetStruct(), type);
}
CefHandler::RetVal CefHandlerCToCpp::HandleConsoleMessage(
CefRefPtr<CefBrowser> browser, const CefString& message,
const CefString& source, int line)

View File

@ -89,6 +89,8 @@ public:
virtual RetVal HandleKeyEvent(CefRefPtr<CefBrowser> browser,
KeyEventType type, int code, int modifiers, bool isSystemKey);
virtual RetVal HandleTooltip(CefRefPtr<CefBrowser> browser, CefString& text);
virtual RetVal HandleStatus(CefRefPtr<CefBrowser> browser,
const CefString& value, StatusType type);
virtual RetVal HandleConsoleMessage(CefRefPtr<CefBrowser> browser,
const CefString& message, const CefString& source, int line);
virtual RetVal HandleFindResult(CefRefPtr<CefBrowser> browser, int identifier,

View File

@ -291,6 +291,16 @@ public:
return RV_CONTINUE;
}
// Event called when the browser has a status message. |text| contains the
// text that will be displayed in the status message and |type| indicates the
// status message type. The return value is currently ignored.
/*--cef()--*/
virtual RetVal HandleStatus(CefRefPtr<CefBrowser> browser,
const CefString& text, StatusType type)
{
return RV_CONTINUE;
}
// Called when the browser component receives a keyboard event.
// |type| is the type of keyboard event (see |KeyEventType|).
// |code| is the windows scan-code for the event.

View File

@ -253,6 +253,12 @@ public:
return RV_CONTINUE;
}
virtual RetVal HandleStatus(CefRefPtr<CefBrowser> browser,
const CefString& text, StatusType type)
{
return RV_CONTINUE;
}
virtual RetVal HandleConsoleMessage(CefRefPtr<CefBrowser> browser,
const CefString& message,
const CefString& source, int line)