- Add off-screen rendering support on Windows. This involves a number of new CefBrowser and CefHandler methods. See the "Off-Screen Rendering Example" in cefclient for example usage.

- Add CefRunMessageLoop() for efficient message loop usage and modify cefclient to use it.
- Add CefHandler::HandleNavStateChange() for back/forward state notifications and modify cefclient to use it.

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@208 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt
2011-03-24 20:36:47 +00:00
parent 658c53e87c
commit ff983a6e72
57 changed files with 3392 additions and 379 deletions

View File

@@ -285,6 +285,142 @@ void CEF_CALLBACK browser_close_dev_tools(struct _cef_browser_t* self)
CefBrowserCppToC::Get(self)->CloseDevTools();
}
int CEF_CALLBACK browser_is_window_rendering_disabled(
struct _cef_browser_t* self)
{
DCHECK(self);
if(!self)
return 0;
return CefBrowserCppToC::Get(self)->IsWindowRenderingDisabled();
}
int CEF_CALLBACK browser_get_size(struct _cef_browser_t* self,
enum cef_paint_element_type_t type, int* width, int* height)
{
DCHECK(self);
DCHECK(width);
DCHECK(height);
if(!self || !width || !height)
return 0;
return CefBrowserCppToC::Get(self)->GetSize(type, *width, *height);
}
void CEF_CALLBACK browser_set_size(struct _cef_browser_t* self,
enum cef_paint_element_type_t type, int width, int height)
{
DCHECK(self);
if(!self)
return;
return CefBrowserCppToC::Get(self)->SetSize(type, width, height);
}
int CEF_CALLBACK browser_is_popup_visible(struct _cef_browser_t* self)
{
DCHECK(self);
if(!self)
return 0;
return CefBrowserCppToC::Get(self)->IsPopupVisible();
}
void CEF_CALLBACK browser_hide_popup(struct _cef_browser_t* self)
{
DCHECK(self);
if(!self)
return;
CefBrowserCppToC::Get(self)->HidePopup();
}
void CEF_CALLBACK browser_invalidate(struct _cef_browser_t* self,
const cef_rect_t* dirtyRect)
{
DCHECK(self);
DCHECK(dirtyRect);
if(!self || !dirtyRect)
return;
CefRect rect(*dirtyRect);
CefBrowserCppToC::Get(self)->Invalidate(rect);
}
int CEF_CALLBACK browser_get_image(struct _cef_browser_t* self,
enum cef_paint_element_type_t type, int width, int height, void* buffer)
{
DCHECK(self);
DCHECK(buffer);
if(!self || !buffer)
return 0;
return CefBrowserCppToC::Get(self)->GetImage(type, width, height, buffer);
}
void CEF_CALLBACK browser_send_key_event(struct _cef_browser_t* self,
enum cef_key_type_t type, int key, int modifiers, int sysChar,
int imeChar)
{
DCHECK(self);
if(!self)
return;
CefBrowserCppToC::Get(self)->SendKeyEvent(type, key, modifiers,
sysChar?true:false, imeChar?true:false);
}
void CEF_CALLBACK browser_send_mouse_click_event(struct _cef_browser_t* self,
int x, int y, enum cef_mouse_button_type_t type, int mouseUp,
int clickCount)
{
DCHECK(self);
if(!self)
return;
CefBrowserCppToC::Get(self)->SendMouseClickEvent(x, y, type,
mouseUp?true:false, clickCount);
}
void CEF_CALLBACK browser_send_mouse_move_event(struct _cef_browser_t* self,
int x, int y, int mouseLeave)
{
DCHECK(self);
if(!self)
return;
CefBrowserCppToC::Get(self)->SendMouseMoveEvent(x, y, mouseLeave?true:false);
}
void CEF_CALLBACK browser_send_mouse_wheel_event(struct _cef_browser_t* self,
int x, int y, int delta)
{
DCHECK(self);
if(!self)
return;
CefBrowserCppToC::Get(self)->SendMouseWheelEvent(x, y, delta);
}
void CEF_CALLBACK browser_send_focus_event(struct _cef_browser_t* self,
int setFocus)
{
DCHECK(self);
if(!self)
return;
CefBrowserCppToC::Get(self)->SendFocusEvent(setFocus?true:false);
}
void CEF_CALLBACK browser_send_capture_lost_event(struct _cef_browser_t* self)
{
DCHECK(self);
if(!self)
return;
CefBrowserCppToC::Get(self)->SendCaptureLostEvent();
}
// CONSTRUCTOR - Do not edit by hand.
@@ -313,6 +449,20 @@ CefBrowserCppToC::CefBrowserCppToC(CefBrowser* cls)
struct_.struct_.set_zoom_level = browser_set_zoom_level;
struct_.struct_.show_dev_tools = browser_show_dev_tools;
struct_.struct_.close_dev_tools = browser_close_dev_tools;
struct_.struct_.is_window_rendering_disabled =
browser_is_window_rendering_disabled;
struct_.struct_.get_size = browser_get_size;
struct_.struct_.set_size = browser_set_size;
struct_.struct_.is_popup_visible = browser_is_popup_visible;
struct_.struct_.hide_popup = browser_hide_popup;
struct_.struct_.invalidate = browser_invalidate;
struct_.struct_.get_image = browser_get_image;
struct_.struct_.send_key_event = browser_send_key_event;
struct_.struct_.send_mouse_click_event = browser_send_mouse_click_event;
struct_.struct_.send_mouse_move_event = browser_send_mouse_move_event;
struct_.struct_.send_mouse_wheel_event = browser_send_mouse_wheel_event;
struct_.struct_.send_focus_event = browser_send_focus_event;
struct_.struct_.send_capture_lost_event = browser_send_capture_lost_event;
}
#ifdef _DEBUG

View File

@@ -117,6 +117,20 @@ enum cef_retval_t CEF_CALLBACK handler_handle_title_change(
CefBrowserCToCpp::Wrap(browser), CefString(title));
}
enum cef_retval_t CEF_CALLBACK handler_handle_nav_state_change(
struct _cef_handler_t* self, cef_browser_t* browser, int canGoBack,
int canGoForward)
{
DCHECK(self);
DCHECK(browser);
if(!self || !browser)
return RV_CONTINUE;
return CefHandlerCppToC::Get(self)->HandleNavStateChange(
CefBrowserCToCpp::Wrap(browser), (canGoBack?true:false),
(canGoForward?true:false));
}
enum cef_retval_t CEF_CALLBACK handler_handle_before_browse(
struct _cef_handler_t* self, cef_browser_t* browser, cef_frame_t* frame,
struct _cef_request_t* request, enum cef_handler_navtype_t navType,
@@ -545,6 +559,81 @@ enum cef_retval_t CEF_CALLBACK handler_handle_find_result(
activeMatchOrdinal, finalUpdate?true:false);
}
enum cef_retval_t CEF_CALLBACK handler_handle_get_rect(
struct _cef_handler_t* self, cef_browser_t* browser, int screen,
cef_rect_t* rect)
{
DCHECK(self);
DCHECK(browser);
DCHECK(rect);
if(!self || !browser || !rect)
return RV_CONTINUE;
CefRect changeRect(*rect);
cef_retval_t rv = CefHandlerCppToC::Get(self)->HandleGetRect(
CefBrowserCToCpp::Wrap(browser), screen?true:false, changeRect);
*rect = changeRect;
return rv;
}
enum cef_retval_t CEF_CALLBACK handler_handle_get_screen_point(
struct _cef_handler_t* self, cef_browser_t* browser, int viewX, int viewY,
int* screenX, int* screenY)
{
DCHECK(self);
DCHECK(browser);
DCHECK(screenX);
DCHECK(screenY);
if(!self || !browser || !screenX || !screenY)
return RV_CONTINUE;
return CefHandlerCppToC::Get(self)->HandleGetScreenPoint(
CefBrowserCToCpp::Wrap(browser), viewX, viewY, *screenX, *screenY);
}
enum cef_retval_t CEF_CALLBACK handler_handle_popup_change(
struct _cef_handler_t* self, cef_browser_t* browser, int show,
const cef_rect_t* rect)
{
DCHECK(self);
DCHECK(browser);
DCHECK(rect);
if(!self || !browser || !rect)
return RV_CONTINUE;
CefRect changeRect(*rect);
return CefHandlerCppToC::Get(self)->HandlePopupChange(
CefBrowserCToCpp::Wrap(browser), show?true:false, changeRect);
}
enum cef_retval_t CEF_CALLBACK handler_handle_paint(struct _cef_handler_t* self,
cef_browser_t* browser, enum cef_paint_element_type_t type,
const cef_rect_t* dirtyRect, const void* buffer)
{
DCHECK(self);
DCHECK(browser);
DCHECK(dirtyRect);
if(!self || !browser || !dirtyRect)
return RV_CONTINUE;
CefRect rect(*dirtyRect);
return CefHandlerCppToC::Get(self)->HandlePaint(
CefBrowserCToCpp::Wrap(browser), type, rect, buffer);
}
enum cef_retval_t CEF_CALLBACK handler_handle_cursor_change(
struct _cef_handler_t* self, cef_browser_t* browser,
cef_cursor_handle_t cursor)
{
DCHECK(self);
DCHECK(browser);
if(!self || !browser)
return RV_CONTINUE;
return CefHandlerCppToC::Get(self)->HandleCursorChange(
CefBrowserCToCpp::Wrap(browser), cursor);
}
// CONSTRUCTOR - Do not edit by hand.
@@ -555,6 +644,7 @@ CefHandlerCppToC::CefHandlerCppToC(CefHandler* cls)
struct_.struct_.handle_after_created = handler_handle_after_created;
struct_.struct_.handle_address_change = handler_handle_address_change;
struct_.struct_.handle_title_change = handler_handle_title_change;
struct_.struct_.handle_nav_state_change = handler_handle_nav_state_change;
struct_.struct_.handle_before_browse = handler_handle_before_browse;
struct_.struct_.handle_load_start = handler_handle_load_start;
struct_.struct_.handle_load_end = handler_handle_load_end;
@@ -584,6 +674,11 @@ CefHandlerCppToC::CefHandlerCppToC(CefHandler* cls)
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;
struct_.struct_.handle_get_rect = handler_handle_get_rect;
struct_.struct_.handle_get_screen_point = handler_handle_get_screen_point;
struct_.struct_.handle_popup_change = handler_handle_popup_change;
struct_.struct_.handle_paint = handler_handle_paint;
struct_.struct_.handle_cursor_change = handler_handle_cursor_change;
}
#ifdef _DEBUG