Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Unified Diff: content/renderer/render_widget_fullscreen_pepper.cc

Issue 10458008: Support mouse lock in Flash fullscreen mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | ppapi/examples/mouse_lock/mouse_lock.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_widget_fullscreen_pepper.cc
diff --git a/content/renderer/render_widget_fullscreen_pepper.cc b/content/renderer/render_widget_fullscreen_pepper.cc
index 27293e124b4ab0835808142e2a7f896581efeef1..acd585a936e8897bde25a364e2c83ff568acacc7 100644
--- a/content/renderer/render_widget_fullscreen_pepper.cc
+++ b/content/renderer/render_widget_fullscreen_pepper.cc
@@ -36,6 +36,38 @@ using WebKit::WGC3Dintptr;
namespace {
+class FullscreenMouseLockDispatcher : public MouseLockDispatcher {
+ public:
+ explicit FullscreenMouseLockDispatcher(RenderWidgetFullscreenPepper* widget);
+ virtual ~FullscreenMouseLockDispatcher();
+
+ private:
+ // MouseLockDispatcher implementation.
+ virtual void SendLockMouseRequest(bool unlocked_by_target) OVERRIDE;
+ virtual void SendUnlockMouseRequest() OVERRIDE;
+
+ RenderWidgetFullscreenPepper* widget_;
+
+ DISALLOW_COPY_AND_ASSIGN(FullscreenMouseLockDispatcher);
+};
+
+FullscreenMouseLockDispatcher::FullscreenMouseLockDispatcher(
+ RenderWidgetFullscreenPepper* widget) : widget_(widget) {
+}
+
+FullscreenMouseLockDispatcher::~FullscreenMouseLockDispatcher() {
+}
+
+void FullscreenMouseLockDispatcher::SendLockMouseRequest(
+ bool unlocked_by_target) {
+ widget_->Send(new ViewHostMsg_LockMouse(widget_->routing_id(), false,
+ unlocked_by_target, true));
+}
+
+void FullscreenMouseLockDispatcher::SendUnlockMouseRequest() {
+ widget_->Send(new ViewHostMsg_UnlockMouse(widget_->routing_id()));
+}
+
// WebWidget that simply wraps the pepper plugin.
class PepperWidget : public WebWidget {
public:
@@ -240,7 +272,9 @@ RenderWidgetFullscreenPepper::RenderWidgetFullscreenPepper(
context_(NULL),
buffer_(0),
program_(0),
- weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
+ weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
+ mouse_lock_dispatcher_(new FullscreenMouseLockDispatcher(
+ ALLOW_THIS_IN_INITIALIZER_LIST(this))) {
}
RenderWidgetFullscreenPepper::~RenderWidgetFullscreenPepper() {
@@ -316,6 +350,27 @@ RenderWidgetFullscreenPepper::CreateContext3D() {
#endif
}
+MouseLockDispatcher* RenderWidgetFullscreenPepper::GetMouseLockDispatcher() {
+ return mouse_lock_dispatcher_.get();
+}
+
+bool RenderWidgetFullscreenPepper::OnMessageReceived(const IPC::Message& msg) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(RenderWidgetFullscreenPepper, msg)
+ IPC_MESSAGE_FORWARD(ViewMsg_LockMouse_ACK,
+ mouse_lock_dispatcher_.get(),
+ MouseLockDispatcher::OnLockMouseACK)
+ IPC_MESSAGE_FORWARD(ViewMsg_MouseLockLost,
+ mouse_lock_dispatcher_.get(),
+ MouseLockDispatcher::OnMouseLockLost)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ if (handled)
+ return true;
+
+ return RenderWidgetFullscreen::OnMessageReceived(msg);
+}
+
void RenderWidgetFullscreenPepper::WillInitiatePaint() {
if (plugin_)
plugin_->ViewWillInitiatePaint();
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | ppapi/examples/mouse_lock/mouse_lock.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698