cefclient: Standardize osr-related file names and move to the `client` namespace (issue #1500).

cefclient: Windows: Move OSRWindow static methods to util_win (issue #1500).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1988 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2015-01-23 17:37:23 +00:00
parent 986e6fb939
commit 87c41bf99f
17 changed files with 282 additions and 223 deletions

View File

@ -162,7 +162,6 @@
'tests/cefclient/client_switches.h',
'tests/cefclient/dialog_test.cc',
'tests/cefclient/dialog_test.h',
'tests/cefclient/dragdrop_events.h',
'tests/cefclient/main_context.cc',
'tests/cefclient/main_context.h',
'tests/cefclient/main_context_impl.cc',
@ -171,8 +170,9 @@
'tests/cefclient/main_message_loop.cc',
'tests/cefclient/main_message_loop_std.h',
'tests/cefclient/main_message_loop_std.cc',
'tests/cefclient/osrenderer.h',
'tests/cefclient/osrenderer.cc',
'tests/cefclient/osr_dragdrop_events.h',
'tests/cefclient/osr_renderer.h',
'tests/cefclient/osr_renderer.cc',
'tests/cefclient/performance_test.cc',
'tests/cefclient/performance_test.h',
'tests/cefclient/performance_test_setup.h',
@ -189,15 +189,15 @@
'cefclient_sources_win': [
'tests/cefclient/cefclient.exe.manifest',
'tests/cefclient/cefclient.rc',
'tests/cefclient/cefclient_osr_dragdrop_win.h',
'tests/cefclient/cefclient_osr_dragdrop_win.cc',
'tests/cefclient/cefclient_osr_widget_win.h',
'tests/cefclient/cefclient_osr_widget_win.cc',
'tests/cefclient/cefclient_win.cc',
'tests/cefclient/client_handler_win.cc',
'tests/cefclient/main_context_impl_win.cc',
'tests/cefclient/main_message_loop_multithreaded_win.h',
'tests/cefclient/main_message_loop_multithreaded_win.cc',
'tests/cefclient/osr_dragdrop_win.h',
'tests/cefclient/osr_dragdrop_win.cc',
'tests/cefclient/osr_widget_win.h',
'tests/cefclient/osr_widget_win.cc',
'tests/cefclient/resource.h',
'tests/cefclient/res/cefclient.ico',
'tests/cefclient/res/small.ico',
@ -208,10 +208,10 @@
],
'cefclient_sources_mac': [
'tests/cefclient/cefclient_mac.mm',
'tests/cefclient/cefclient_osr_widget_mac.h',
'tests/cefclient/cefclient_osr_widget_mac.mm',
'tests/cefclient/client_handler_mac.mm',
'tests/cefclient/main_context_impl_posix.cc',
'tests/cefclient/osr_widget_mac.h',
'tests/cefclient/osr_widget_mac.mm',
'tests/cefclient/resource_util_mac.mm',
'tests/cefclient/resource_util_posix.cc',
'tests/cefclient/window_test_mac.mm',
@ -260,10 +260,10 @@
],
'cefclient_sources_linux': [
'tests/cefclient/cefclient_gtk.cc',
'tests/cefclient/cefclient_osr_widget_gtk.h',
'tests/cefclient/cefclient_osr_widget_gtk.cc',
'tests/cefclient/client_handler_gtk.cc',
'tests/cefclient/main_context_impl_posix.cc',
'tests/cefclient/osr_widget_gtk.h',
'tests/cefclient/osr_widget_gtk.cc',
'tests/cefclient/print_handler_gtk.cc',
'tests/cefclient/print_handler_gtk.h',
'tests/cefclient/resource_util_linux.cc',

View File

@ -21,12 +21,12 @@
#include "include/cef_browser.h"
#include "include/cef_frame.h"
#include "include/wrapper/cef_helpers.h"
#include "cefclient/cefclient_osr_widget_gtk.h"
#include "cefclient/client_app.h"
#include "cefclient/client_handler.h"
#include "cefclient/client_switches.h"
#include "cefclient/main_context_impl.h"
#include "cefclient/main_message_loop_std.h"
#include "cefclient/osr_widget_gtk.h"
#include "cefclient/resource.h"
#include "cefclient/test_runner.h"
@ -41,7 +41,7 @@ int g_toolbar_height = 0;
// Height of the integrated menu bar (if any) at the top of the GTK window.
int g_menubar_height = 0;
class MainBrowserProvider : public OSRBrowserProvider {
class MainBrowserProvider : public client::OSRBrowserProvider {
virtual CefRefPtr<CefBrowser> GetBrowser() {
if (g_handler.get())
return g_handler->GetBrowser();
@ -450,9 +450,9 @@ int main(int argc, char* argv[]) {
command_line->HasSwitch(cefclient::kShowUpdateRect);
// Create the GTKGL surface.
CefRefPtr<OSRWindow> osr_window =
OSRWindow::Create(&g_main_browser_provider, transparent,
show_update_rect, vbox);
CefRefPtr<client::OSRWindow> osr_window =
client::OSRWindow::Create(&g_main_browser_provider, transparent,
show_update_rect, vbox);
// Show the GTK window.
gtk_widget_show_all(GTK_WIDGET(window));

View File

@ -9,12 +9,12 @@
#import "include/cef_application_mac.h"
#include "include/cef_browser.h"
#include "include/cef_frame.h"
#include "cefclient/cefclient_osr_widget_mac.h"
#include "cefclient/client_app.h"
#include "cefclient/client_handler.h"
#include "cefclient/client_switches.h"
#include "cefclient/main_context_impl.h"
#include "cefclient/main_message_loop_std.h"
#include "cefclient/osr_widget_mac.h"
#include "cefclient/resource.h"
#include "cefclient/resource_util.h"
#include "cefclient/test_runner.h"
@ -22,7 +22,7 @@
// The global ClientHandler reference.
CefRefPtr<ClientHandler> g_handler;
class MainBrowserProvider : public OSRBrowserProvider {
class MainBrowserProvider : public client::OSRBrowserProvider {
virtual CefRefPtr<CefBrowser> GetBrowser() {
if (g_handler.get())
return g_handler->GetBrowser();
@ -443,8 +443,8 @@ void AddMenuItem(NSMenu *menu, NSString* label, int idval) {
const bool show_update_rect =
command_line->HasSwitch(cefclient::kShowUpdateRect);
CefRefPtr<OSRWindow> osr_window =
OSRWindow::Create(&g_main_browser_provider, transparent,
CefRefPtr<client::OSRWindow> osr_window =
client::OSRWindow::Create(&g_main_browser_provider, transparent,
show_update_rect, contentView,
CefRect(0, 0, kWindowWidth, kWindowHeight));
window_info.SetAsWindowless(osr_window->GetWindowHandle(), transparent);

View File

@ -16,13 +16,13 @@
#include "include/cef_frame.h"
#include "include/cef_sandbox_win.h"
#include "include/wrapper/cef_closure_task.h"
#include "cefclient/cefclient_osr_widget_win.h"
#include "cefclient/client_app.h"
#include "cefclient/client_handler.h"
#include "cefclient/client_switches.h"
#include "cefclient/main_context_impl.h"
#include "cefclient/main_message_loop_multithreaded_win.h"
#include "cefclient/main_message_loop_std.h"
#include "cefclient/osr_widget_win.h"
#include "cefclient/resource.h"
#include "cefclient/test_runner.h"
#include "cefclient/util_win.h"
@ -64,7 +64,7 @@ INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
// The global ClientHandler reference.
CefRefPtr<ClientHandler> g_handler;
class MainBrowserProvider : public OSRBrowserProvider {
class MainBrowserProvider : public client::OSRBrowserProvider {
virtual CefRefPtr<CefBrowser> GetBrowser() {
if (g_handler.get())
return g_handler->GetBrowser();
@ -225,8 +225,8 @@ static void SetFocusToBrowser(CefRefPtr<CefBrowser> browser) {
if (CefCommandLine::GetGlobalCommandLine()->HasSwitch(
cefclient::kOffScreenRenderingEnabled)) {
// Give focus to the OSR window.
CefRefPtr<OSRWindow> osr_window =
static_cast<OSRWindow*>(g_handler->GetOSRHandler().get());
CefRefPtr<client::OSRWindow> osr_window =
static_cast<client::OSRWindow*>(g_handler->GetOSRHandler().get());
if (osr_window)
::SetFocus(osr_window->hwnd());
} else {
@ -391,9 +391,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
const bool show_update_rect =
command_line->HasSwitch(cefclient::kShowUpdateRect);
CefRefPtr<OSRWindow> osr_window =
OSRWindow::Create(&g_main_browser_provider, transparent,
show_update_rect);
CefRefPtr<client::OSRWindow> osr_window =
client::OSRWindow::Create(&g_main_browser_provider, transparent,
show_update_rect);
osr_window->CreateWidget(hWnd, rect, hInst, szOSRWindowClass);
info.SetAsWindowless(osr_window->hwnd(), transparent);
g_handler->SetOSRHandler(osr_window.get());
@ -495,8 +495,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
const bool offscreen = CefCommandLine::GetGlobalCommandLine()->HasSwitch(
cefclient::kOffScreenRenderingEnabled);
if (offscreen) {
CefRefPtr<OSRWindow> osr_window =
static_cast<OSRWindow*>(g_handler->GetOSRHandler().get());
CefRefPtr<client::OSRWindow> osr_window =
static_cast<client::OSRWindow*>(g_handler->GetOSRHandler().get());
if (osr_window)
osr_window->WasHidden(wParam == SIZE_MINIMIZED);
}

View File

@ -2,23 +2,35 @@
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#ifndef CEF_TESTS_CEFCLIENT_DRAGDROP_EVENTS_H_
#define CEF_TESTS_CEFCLIENT_DRAGDROP_EVENTS_H_
#pragma once
#ifndef CEF_TESTS_CEFCLIENT_OSR_DRAGDROP_EVENTS_H_
#define CEF_TESTS_CEFCLIENT_OSR_DRAGDROP_EVENTS_H_
#include "include/cef_render_handler.h"
#include "cefclient/client_handler.h"
class DragEvents {
namespace client {
class OsrDragEvents {
public:
virtual CefBrowserHost::DragOperationsMask OnDragEnter(
CefRefPtr<CefDragData> drag_data,
CefMouseEvent ev,
CefBrowserHost::DragOperationsMask effect) = 0;
virtual CefBrowserHost::DragOperationsMask OnDragOver(CefMouseEvent ev,
virtual CefBrowserHost::DragOperationsMask OnDragOver(
CefMouseEvent ev,
CefBrowserHost::DragOperationsMask effect) = 0;
virtual void OnDragLeave() = 0;
virtual CefBrowserHost::DragOperationsMask OnDrop(CefMouseEvent ev,
virtual CefBrowserHost::DragOperationsMask OnDrop(
CefMouseEvent ev,
CefBrowserHost::DragOperationsMask effect) = 0;
protected:
virtual ~OsrDragEvents() {}
};
#endif // CEF_TESTS_CEFCLIENT_DRAGDROP_EVENTS_H_
} // namespace client
#endif // CEF_TESTS_CEFCLIENT_OSR_DRAGDROP_EVENTS_H_

View File

@ -2,7 +2,7 @@
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#include "cefclient/cefclient_osr_dragdrop_win.h"
#include "cefclient/osr_dragdrop_win.h"
#if defined(CEF_USE_ATL)
@ -15,8 +15,10 @@
#include "include/wrapper/cef_helpers.h"
#include "cefclient/bytes_write_handler.h"
#include "cefclient/cefclient_osr_widget_win.h"
#include "cefclient/resource.h"
#include "cefclient/util_win.h"
namespace client {
namespace {
@ -48,7 +50,7 @@ CefMouseEvent ToMouseEvent(POINTL p, DWORD key_state, HWND hWnd) {
ScreenToClient(hWnd, &screen_point);
ev.x = screen_point.x;
ev.y = screen_point.y;
ev.modifiers = OSRWindow::GetCefMouseModifiers(key_state);
ev.modifiers = GetCefMouseModifiers(key_state);
return ev;
}
@ -358,14 +360,15 @@ CefRefPtr<CefDragData> DataObjectToDragData(IDataObject* data_object) {
} // namespace
CComPtr<DropTargetWin> DropTargetWin::Create(DragEvents* callback, HWND hWnd) {
CComPtr<DropTargetWin> DropTargetWin::Create(OsrDragEvents* callback,
HWND hWnd) {
return CComPtr<DropTargetWin>(new DropTargetWin(callback, hWnd));
}
HRESULT DropTargetWin::DragEnter(IDataObject* data_object,
DWORD key_state,
POINTL cursor_position,
DWORD* effect) {
DWORD key_state,
POINTL cursor_position,
DWORD* effect) {
if (!callback_)
return E_UNEXPECTED;
@ -649,4 +652,6 @@ DataObjectWin::DataObjectWin(FORMATETC* fmtetc, STGMEDIUM* stgmed, int count)
}
}
} // namespace client
#endif // defined(CEF_USE_ATL)

View File

@ -4,7 +4,6 @@
#ifndef CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_DRAGDROP_WIN_H_
#define CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_DRAGDROP_WIN_H_
#pragma once
// When generating projects with CMake the CEF_USE_ATL value will be defined
// automatically if using a supported Visual Studio version. Pass -DUSE_ATL=OFF
@ -18,7 +17,9 @@
#include <objidl.h>
#include <stdio.h>
#include "cefclient/dragdrop_events.h"
#include "cefclient/osr_dragdrop_events.h"
namespace client {
#define DEFAULT_QUERY_INTERFACE(__Class) \
HRESULT __stdcall QueryInterface(const IID& iid, void** object) { \
@ -52,7 +53,7 @@
class DropTargetWin : public IDropTarget {
public:
static CComPtr<DropTargetWin> Create(DragEvents* callback, HWND hWnd);
static CComPtr<DropTargetWin> Create(OsrDragEvents* callback, HWND hWnd);
CefBrowserHost::DragOperationsMask StartDragging(
CefRefPtr<CefBrowser> browser,
@ -81,14 +82,14 @@ class DropTargetWin : public IDropTarget {
IUNKNOWN_IMPLEMENTATION()
protected:
explicit DropTargetWin(DragEvents* callback, HWND hWnd) :
ref_count_(0),
callback_(callback),
hWnd_(hWnd) {}
DropTargetWin(OsrDragEvents* callback, HWND hWnd)
: ref_count_(0),
callback_(callback),
hWnd_(hWnd) {}
virtual ~DropTargetWin() {}
private:
DragEvents* callback_;
OsrDragEvents* callback_;
HWND hWnd_;
CefRefPtr<CefDragData> current_drag_data_;
@ -183,6 +184,8 @@ class DataObjectWin : public IDataObject {
explicit DataObjectWin(FORMATETC *fmtetc, STGMEDIUM *stgmed, int count);
};
} // namespace client
#endif // defined(CEF_USE_ATL)
#endif // CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_DRAGDROP_WIN_H_

View File

@ -2,7 +2,7 @@
// reserved. Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file.
#include "cefclient/osrenderer.h"
#include "cefclient/osr_renderer.h"
#if defined(OS_WIN)
#include <gl/gl.h>
@ -39,8 +39,10 @@
#define VERIFY_NO_ERROR
#endif
ClientOSRenderer::ClientOSRenderer(bool transparent,
bool show_update_rect)
namespace client {
OsrRenderer::OsrRenderer(bool transparent,
bool show_update_rect)
: transparent_(transparent),
show_update_rect_(show_update_rect),
initialized_(false),
@ -51,11 +53,11 @@ ClientOSRenderer::ClientOSRenderer(bool transparent,
spin_y_(0) {
}
ClientOSRenderer::~ClientOSRenderer() {
OsrRenderer::~OsrRenderer() {
Cleanup();
}
void ClientOSRenderer::Initialize() {
void OsrRenderer::Initialize() {
if (initialized_)
return;
@ -80,12 +82,12 @@ void ClientOSRenderer::Initialize() {
initialized_ = true;
}
void ClientOSRenderer::Cleanup() {
void OsrRenderer::Cleanup() {
if (texture_id_ != 0)
glDeleteTextures(1, &texture_id_);
}
void ClientOSRenderer::Render() {
void OsrRenderer::Render() {
if (view_width_ == 0 || view_height_ == 0)
return;
@ -196,23 +198,23 @@ void ClientOSRenderer::Render() {
}
}
void ClientOSRenderer::OnPopupShow(CefRefPtr<CefBrowser> browser,
bool show) {
void OsrRenderer::OnPopupShow(CefRefPtr<CefBrowser> browser,
bool show) {
if (!show) {
// Clear the popup rectangle.
ClearPopupRects();
}
}
void ClientOSRenderer::OnPopupSize(CefRefPtr<CefBrowser> browser,
const CefRect& rect) {
void OsrRenderer::OnPopupSize(CefRefPtr<CefBrowser> browser,
const CefRect& rect) {
if (rect.width <= 0 || rect.height <= 0)
return;
original_popup_rect_ = rect;
popup_rect_ = GetPopupRectInWebView(original_popup_rect_);
}
CefRect ClientOSRenderer::GetPopupRectInWebView(const CefRect& original_rect) {
CefRect OsrRenderer::GetPopupRectInWebView(const CefRect& original_rect) {
CefRect rc(original_rect);
// if x or y are negative, move them to 0.
if (rc.x < 0)
@ -232,15 +234,15 @@ CefRect ClientOSRenderer::GetPopupRectInWebView(const CefRect& original_rect) {
return rc;
}
void ClientOSRenderer::ClearPopupRects() {
void OsrRenderer::ClearPopupRects() {
popup_rect_.Set(0, 0, 0, 0);
original_popup_rect_.Set(0, 0, 0, 0);
}
void ClientOSRenderer::OnPaint(CefRefPtr<CefBrowser> browser,
CefRenderHandler::PaintElementType type,
const CefRenderHandler::RectList& dirtyRects,
const void* buffer, int width, int height) {
void OsrRenderer::OnPaint(CefRefPtr<CefBrowser> browser,
CefRenderHandler::PaintElementType type,
const CefRenderHandler::RectList& dirtyRects,
const void* buffer, int width, int height) {
if (!initialized_)
Initialize();
@ -326,12 +328,14 @@ void ClientOSRenderer::OnPaint(CefRefPtr<CefBrowser> browser,
}
}
void ClientOSRenderer::SetSpin(float spinX, float spinY) {
void OsrRenderer::SetSpin(float spinX, float spinY) {
spin_x_ = spinX;
spin_y_ = spinY;
}
void ClientOSRenderer::IncrementSpin(float spinDX, float spinDY) {
void OsrRenderer::IncrementSpin(float spinDX, float spinDY) {
spin_x_ -= spinDX;
spin_y_ -= spinDY;
}
} // namespace client

View File

@ -2,18 +2,20 @@
// reserved. Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file.
#ifndef CEF_TESTS_CEFCLIENT_OSRENDERER_H_
#define CEF_TESTS_CEFCLIENT_OSRENDERER_H_
#ifndef CEF_TESTS_CEFCLIENT_OSR_RENDERER_H_
#define CEF_TESTS_CEFCLIENT_OSR_RENDERER_H_
#pragma once
#include "include/cef_browser.h"
#include "include/cef_render_handler.h"
class ClientOSRenderer {
namespace client {
class OsrRenderer {
public:
ClientOSRenderer(bool transparent,
bool show_update_rect);
virtual ~ClientOSRenderer();
OsrRenderer(bool transparent,
bool show_update_rect);
virtual ~OsrRenderer();
// Initialize the OpenGL environment.
void Initialize();
@ -64,5 +66,7 @@ class ClientOSRenderer {
CefRect update_rect_;
};
#endif // CEF_TESTS_CEFCLIENT_OSRENDERER_H_
} // namespace client
#endif // CEF_TESTS_CEFCLIENT_OSR_RENDERER_H_

View File

@ -2,7 +2,7 @@
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#include "cefclient/cefclient_osr_widget_gtk.h"
#include "cefclient/osr_widget_gtk.h"
#include <gdk/gdk.h>
#include <gdk/gdkkeysyms.h>
@ -20,6 +20,8 @@
#include "include/base/cef_bind.h"
#include "include/wrapper/cef_closure_task.h"
namespace client {
namespace {
gint glarea_size_allocation(GtkWidget* widget,
@ -1348,3 +1350,5 @@ void OSRWindow::DisableGL() {
gl_enabled_ = false;
}
} // namespace client

View File

@ -2,13 +2,15 @@
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#ifndef CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_GTK_H_
#define CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_GTK_H_
#ifndef CEF_TESTS_CEFCLIENT_OSR_WIDGET_GTK_H_
#define CEF_TESTS_CEFCLIENT_OSR_WIDGET_GTK_H_
#pragma once
#include "include/cef_render_handler.h"
#include "cefclient/client_handler.h"
#include "cefclient/osrenderer.h"
#include "cefclient/osr_renderer.h"
namespace client {
class OSRBrowserProvider {
public:
@ -82,7 +84,7 @@ class OSRWindow : public ClientHandler::RenderHandler {
void EnableGL();
void DisableGL();
ClientOSRenderer renderer_;
OsrRenderer renderer_;
OSRBrowserProvider* browser_provider_;
ClientWindowHandle glarea_;
bool gl_enabled_;
@ -93,4 +95,6 @@ class OSRWindow : public ClientHandler::RenderHandler {
IMPLEMENT_REFCOUNTING(OSRWindow);
};
#endif // CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_GTK_H_
} // namespace client
#endif // CEF_TESTS_CEFCLIENT_OSR_WIDGET_GTK_H_

View File

@ -2,29 +2,24 @@
// reserved. Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file.
#ifndef CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_MAC_H_
#define CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_MAC_H_
#ifndef CEF_TESTS_CEFCLIENT_OSR_WIDGET_MAC_H_
#define CEF_TESTS_CEFCLIENT_OSR_WIDGET_MAC_H_
#include "include/cef_client.h"
#include "cefclient/client_handler.h"
class ClientOSRenderer;
class OSRBrowserProvider {
public:
virtual CefRefPtr<CefBrowser> GetBrowser() =0;
protected:
virtual ~OSRBrowserProvider() {}
};
namespace client {
class OSRBrowserProvider;
class OsrRenderer;
}
// The client OpenGL view.
@interface ClientOpenGLView
: NSOpenGLView <NSDraggingSource, NSDraggingDestination> {
@public
NSTrackingArea* tracking_area_;
OSRBrowserProvider* browser_provider_;
ClientOSRenderer* renderer_;
client::OSRBrowserProvider* browser_provider_;
client::OsrRenderer* renderer_;
NSPoint last_mouse_pos_;
NSPoint cur_mouse_pos_;
bool rotating_;
@ -55,6 +50,16 @@ class OSRBrowserProvider {
allowed_ops:(NSDragOperation)ops point:(NSPoint)p;
@end
namespace client {
class OSRBrowserProvider {
public:
virtual CefRefPtr<CefBrowser> GetBrowser() =0;
protected:
virtual ~OSRBrowserProvider() {}
};
// Handler for off-screen rendering windows.
class ClientOSRHandler : public ClientHandler::RenderHandler {
public:
@ -139,5 +144,7 @@ class OSRWindow {
IMPLEMENT_REFCOUNTING(OSRWindow);
};
#endif // CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_MAC_H_
} // namespace client
#endif // CEF_TESTS_CEFCLIENT_OSR_WIDGET_MAC_H_

View File

@ -8,7 +8,7 @@
#include <vector>
#include "cefclient/cefclient_osr_widget_mac.h"
#include "cefclient/osr_widget_mac.h"
#include "include/cef_application_mac.h"
#include "include/cef_browser.h"
@ -16,7 +16,7 @@
#include "include/cef_url.h"
#include "include/wrapper/cef_helpers.h"
#include "cefclient/bytes_write_handler.h"
#include "cefclient/osrenderer.h"
#include "cefclient/osr_renderer.h"
#include "cefclient/resource_util.h"
namespace {
@ -103,6 +103,8 @@ static NSString* const kNSURLTitlePboardType = @"public.url-name";
} // namespace
namespace client {
ClientOSRHandler::ClientOSRHandler(ClientOpenGLView* view,
OSRBrowserProvider* browser_provider)
: view_(view),
@ -298,6 +300,8 @@ void ClientOSRHandler::UpdateDragCursor(CefRefPtr<CefBrowser> browser,
void ClientOSRHandler::SetLoading(bool isLoading) {
}
} // namespace client
@implementation ClientOpenGLView
@synthesize was_last_mouse_down_on_view = was_last_mouse_down_on_view_;
@ -316,7 +320,7 @@ void ClientOSRHandler::SetLoading(bool isLoading) {
self = [super initWithFrame:frame pixelFormat:pixelFormat];
if (self) {
renderer_ = new ClientOSRenderer(transparency, show_update_rect);
renderer_ = new client::OsrRenderer(transparency, show_update_rect);
rotating_ = false;
endWheelMonitor_ = nil;
@ -352,7 +356,7 @@ void ClientOSRHandler::SetLoading(bool isLoading) {
- (void)dealloc {
CefRefPtr<CefBrowser> browser = [self getBrowser];
if (browser) {
static_cast<ClientOSRHandler*>(
static_cast<client::ClientOSRHandler*>(
browser->GetHost()->GetClient()->GetRenderHandler().get())->Disconnect();
browser->GetHost()->CloseBrowser(true);
browser = NULL;
@ -1221,6 +1225,7 @@ void ClientOSRHandler::SetLoading(bool isLoading) {
@end
namespace client {
CefRefPtr<OSRWindow> OSRWindow::Create(OSRBrowserProvider* browser_provider,
bool transparent,
@ -1251,3 +1256,5 @@ OSRWindow::OSRWindow(OSRBrowserProvider* browser_provider,
OSRWindow::~OSRWindow() {
}
} // namespace client

View File

@ -2,7 +2,7 @@
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#include "cefclient/cefclient_osr_widget_win.h"
#include "cefclient/osr_widget_win.h"
#include <windowsx.h>
@ -10,6 +10,9 @@
#include "include/base/cef_build.h"
#include "include/wrapper/cef_closure_task.h"
#include "cefclient/resource.h"
#include "cefclient/util_win.h"
namespace client {
namespace {
@ -387,113 +390,6 @@ ATOM OSRWindow::RegisterOSRClass(HINSTANCE hInstance, LPCTSTR className) {
return RegisterClassEx(&wcex);
}
bool OSRWindow::isKeyDown(WPARAM wparam) {
return (GetKeyState(wparam) & 0x8000) != 0;
}
int OSRWindow::GetCefMouseModifiers(WPARAM wparam) {
int modifiers = 0;
if (wparam & MK_CONTROL)
modifiers |= EVENTFLAG_CONTROL_DOWN;
if (wparam & MK_SHIFT)
modifiers |= EVENTFLAG_SHIFT_DOWN;
if (isKeyDown(VK_MENU))
modifiers |= EVENTFLAG_ALT_DOWN;
if (wparam & MK_LBUTTON)
modifiers |= EVENTFLAG_LEFT_MOUSE_BUTTON;
if (wparam & MK_MBUTTON)
modifiers |= EVENTFLAG_MIDDLE_MOUSE_BUTTON;
if (wparam & MK_RBUTTON)
modifiers |= EVENTFLAG_RIGHT_MOUSE_BUTTON;
// Low bit set from GetKeyState indicates "toggled".
if (::GetKeyState(VK_NUMLOCK) & 1)
modifiers |= EVENTFLAG_NUM_LOCK_ON;
if (::GetKeyState(VK_CAPITAL) & 1)
modifiers |= EVENTFLAG_CAPS_LOCK_ON;
return modifiers;
}
int OSRWindow::GetCefKeyboardModifiers(WPARAM wparam, LPARAM lparam) {
int modifiers = 0;
if (isKeyDown(VK_SHIFT))
modifiers |= EVENTFLAG_SHIFT_DOWN;
if (isKeyDown(VK_CONTROL))
modifiers |= EVENTFLAG_CONTROL_DOWN;
if (isKeyDown(VK_MENU))
modifiers |= EVENTFLAG_ALT_DOWN;
// Low bit set from GetKeyState indicates "toggled".
if (::GetKeyState(VK_NUMLOCK) & 1)
modifiers |= EVENTFLAG_NUM_LOCK_ON;
if (::GetKeyState(VK_CAPITAL) & 1)
modifiers |= EVENTFLAG_CAPS_LOCK_ON;
switch (wparam) {
case VK_RETURN:
if ((lparam >> 16) & KF_EXTENDED)
modifiers |= EVENTFLAG_IS_KEY_PAD;
break;
case VK_INSERT:
case VK_DELETE:
case VK_HOME:
case VK_END:
case VK_PRIOR:
case VK_NEXT:
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
if (!((lparam >> 16) & KF_EXTENDED))
modifiers |= EVENTFLAG_IS_KEY_PAD;
break;
case VK_NUMLOCK:
case VK_NUMPAD0:
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_NUMPAD3:
case VK_NUMPAD4:
case VK_NUMPAD5:
case VK_NUMPAD6:
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
case VK_DIVIDE:
case VK_MULTIPLY:
case VK_SUBTRACT:
case VK_ADD:
case VK_DECIMAL:
case VK_CLEAR:
modifiers |= EVENTFLAG_IS_KEY_PAD;
break;
case VK_SHIFT:
if (isKeyDown(VK_LSHIFT))
modifiers |= EVENTFLAG_IS_LEFT;
else if (isKeyDown(VK_RSHIFT))
modifiers |= EVENTFLAG_IS_RIGHT;
break;
case VK_CONTROL:
if (isKeyDown(VK_LCONTROL))
modifiers |= EVENTFLAG_IS_LEFT;
else if (isKeyDown(VK_RCONTROL))
modifiers |= EVENTFLAG_IS_RIGHT;
break;
case VK_MENU:
if (isKeyDown(VK_LMENU))
modifiers |= EVENTFLAG_IS_LEFT;
else if (isKeyDown(VK_RMENU))
modifiers |= EVENTFLAG_IS_RIGHT;
break;
case VK_LWIN:
modifiers |= EVENTFLAG_IS_LEFT;
break;
case VK_RWIN:
modifiers |= EVENTFLAG_IS_RIGHT;
break;
}
return modifiers;
}
bool OSRWindow::IsOverPopupWidget(int x, int y) const {
const CefRect& rc = renderer_.popup_rect();
int popup_right = rc.x + rc.width;
@ -716,8 +612,8 @@ LRESULT CALLBACK OSRWindow::WndProc(HWND hWnd, UINT message,
mouse_event.modifiers = GetCefMouseModifiers(wParam);
browser->SendMouseWheelEvent(mouse_event,
isKeyDown(VK_SHIFT) ? delta : 0,
!isKeyDown(VK_SHIFT) ? delta : 0);
IsKeyDown(VK_SHIFT) ? delta : 0,
!IsKeyDown(VK_SHIFT) ? delta : 0);
}
break;
@ -781,3 +677,5 @@ LRESULT CALLBACK OSRWindow::WndProc(HWND hWnd, UINT message,
return DefWindowProc(hWnd, message, wParam, lParam);
}
} // namespace client

View File

@ -2,14 +2,16 @@
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#ifndef CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_WIN_H_
#define CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_WIN_H_
#ifndef CEF_TESTS_CEFCLIENT_OSR_WIDGET_WIN_H_
#define CEF_TESTS_CEFCLIENT_OSR_WIDGET_WIN_H_
#pragma once
#include "include/cef_render_handler.h"
#include "cefclient/cefclient_osr_dragdrop_win.h"
#include "cefclient/client_handler.h"
#include "cefclient/osrenderer.h"
#include "cefclient/osr_dragdrop_win.h"
#include "cefclient/osr_renderer.h"
namespace client {
class OSRBrowserProvider {
public:
@ -21,7 +23,7 @@ class OSRBrowserProvider {
class OSRWindow : public ClientHandler::RenderHandler
#if defined(CEF_USE_ATL)
, public DragEvents
, public OsrDragEvents
#endif
{
public:
@ -81,7 +83,7 @@ class OSRWindow : public ClientHandler::RenderHandler
CefRenderHandler::DragOperation operation) OVERRIDE;
#if defined(CEF_USE_ATL)
// DragEvents methods
// OsrDragEvents methods
CefBrowserHost::DragOperationsMask OnDragEnter(
CefRefPtr<CefDragData> drag_data,
CefMouseEvent ev,
@ -96,9 +98,6 @@ class OSRWindow : public ClientHandler::RenderHandler
void Invalidate();
void WasHidden(bool hidden);
static int GetCefKeyboardModifiers(WPARAM wparam, LPARAM lparam);
static int GetCefMouseModifiers(WPARAM wparam);
private:
OSRWindow(OSRBrowserProvider* browser_provider,
bool transparent,
@ -112,13 +111,12 @@ class OSRWindow : public ClientHandler::RenderHandler
static ATOM RegisterOSRClass(HINSTANCE hInstance, LPCTSTR className);
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
LPARAM lParam);
static bool isKeyDown(WPARAM wparam);
bool IsOverPopupWidget(int x, int y) const;
int GetPopupXOffset() const;
int GetPopupYOffset() const;
void ApplyPopupOffset(int& x, int& y) const;
ClientOSRenderer renderer_;
OsrRenderer renderer_;
OSRBrowserProvider* browser_provider_;
HWND hWnd_;
HDC hDC_;
@ -136,4 +134,6 @@ class OSRWindow : public ClientHandler::RenderHandler
IMPLEMENT_REFCOUNTING(OSRWindow);
};
#endif // CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_WIN_H_
} // namespace client
#endif // CEF_TESTS_CEFCLIENT_OSR_WIDGET_WIN_H_

View File

@ -26,4 +26,111 @@ WNDPROC SetWndProcPtr(HWND hWnd, WNDPROC wndProc) {
return old;
}
int GetCefMouseModifiers(WPARAM wparam) {
int modifiers = 0;
if (wparam & MK_CONTROL)
modifiers |= EVENTFLAG_CONTROL_DOWN;
if (wparam & MK_SHIFT)
modifiers |= EVENTFLAG_SHIFT_DOWN;
if (IsKeyDown(VK_MENU))
modifiers |= EVENTFLAG_ALT_DOWN;
if (wparam & MK_LBUTTON)
modifiers |= EVENTFLAG_LEFT_MOUSE_BUTTON;
if (wparam & MK_MBUTTON)
modifiers |= EVENTFLAG_MIDDLE_MOUSE_BUTTON;
if (wparam & MK_RBUTTON)
modifiers |= EVENTFLAG_RIGHT_MOUSE_BUTTON;
// Low bit set from GetKeyState indicates "toggled".
if (::GetKeyState(VK_NUMLOCK) & 1)
modifiers |= EVENTFLAG_NUM_LOCK_ON;
if (::GetKeyState(VK_CAPITAL) & 1)
modifiers |= EVENTFLAG_CAPS_LOCK_ON;
return modifiers;
}
int GetCefKeyboardModifiers(WPARAM wparam, LPARAM lparam) {
int modifiers = 0;
if (IsKeyDown(VK_SHIFT))
modifiers |= EVENTFLAG_SHIFT_DOWN;
if (IsKeyDown(VK_CONTROL))
modifiers |= EVENTFLAG_CONTROL_DOWN;
if (IsKeyDown(VK_MENU))
modifiers |= EVENTFLAG_ALT_DOWN;
// Low bit set from GetKeyState indicates "toggled".
if (::GetKeyState(VK_NUMLOCK) & 1)
modifiers |= EVENTFLAG_NUM_LOCK_ON;
if (::GetKeyState(VK_CAPITAL) & 1)
modifiers |= EVENTFLAG_CAPS_LOCK_ON;
switch (wparam) {
case VK_RETURN:
if ((lparam >> 16) & KF_EXTENDED)
modifiers |= EVENTFLAG_IS_KEY_PAD;
break;
case VK_INSERT:
case VK_DELETE:
case VK_HOME:
case VK_END:
case VK_PRIOR:
case VK_NEXT:
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
if (!((lparam >> 16) & KF_EXTENDED))
modifiers |= EVENTFLAG_IS_KEY_PAD;
break;
case VK_NUMLOCK:
case VK_NUMPAD0:
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_NUMPAD3:
case VK_NUMPAD4:
case VK_NUMPAD5:
case VK_NUMPAD6:
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
case VK_DIVIDE:
case VK_MULTIPLY:
case VK_SUBTRACT:
case VK_ADD:
case VK_DECIMAL:
case VK_CLEAR:
modifiers |= EVENTFLAG_IS_KEY_PAD;
break;
case VK_SHIFT:
if (IsKeyDown(VK_LSHIFT))
modifiers |= EVENTFLAG_IS_LEFT;
else if (IsKeyDown(VK_RSHIFT))
modifiers |= EVENTFLAG_IS_RIGHT;
break;
case VK_CONTROL:
if (IsKeyDown(VK_LCONTROL))
modifiers |= EVENTFLAG_IS_LEFT;
else if (IsKeyDown(VK_RCONTROL))
modifiers |= EVENTFLAG_IS_RIGHT;
break;
case VK_MENU:
if (IsKeyDown(VK_LMENU))
modifiers |= EVENTFLAG_IS_LEFT;
else if (IsKeyDown(VK_RMENU))
modifiers |= EVENTFLAG_IS_RIGHT;
break;
case VK_LWIN:
modifiers |= EVENTFLAG_IS_LEFT;
break;
case VK_RWIN:
modifiers |= EVENTFLAG_IS_RIGHT;
break;
}
return modifiers;
}
bool IsKeyDown(WPARAM wparam) {
return (GetKeyState(wparam) & 0x8000) != 0;
}
} // namespace client

View File

@ -19,4 +19,8 @@ T GetUserDataPtr(HWND hWnd) {
// Set the window's window procedure pointer and return the old value.
WNDPROC SetWndProcPtr(HWND hWnd, WNDPROC wndProc);
int GetCefMouseModifiers(WPARAM wparam);
int GetCefKeyboardModifiers(WPARAM wparam, LPARAM lparam);
bool IsKeyDown(WPARAM wparam);
} // namespace client