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

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: 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
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..b96becc1b8360573e8661a3625d9b3acdfee46c6 100644
--- a/content/renderer/render_widget_fullscreen_pepper.cc
+++ b/content/renderer/render_widget_fullscreen_pepper.cc
@@ -36,6 +36,36 @@ using WebKit::WGC3Dintptr;
namespace {
+class FullscreenMouseLockDispatcher : public MouseLockDispatcher {
+ public:
+ explicit FullscreenMouseLockDispatcher(RenderWidgetFullscreenPepper* widget);
+ virtual ~FullscreenMouseLockDispatcher();
+
+ private:
+ // MouseLockDispatcher implementation.
+ virtual void SendLockMouseRequest() OVERRIDE;
+ virtual void SendUnlockMouseRequest() OVERRIDE;
+
+ RenderWidgetFullscreenPepper* widget_;
+
+ DISALLOW_COPY_AND_ASSIGN(FullscreenMouseLockDispatcher);
+};
+
+FullscreenMouseLockDispatcher::FullscreenMouseLockDispatcher(
+ RenderWidgetFullscreenPepper* widget) : widget_(widget) {
+}
+
+FullscreenMouseLockDispatcher::~FullscreenMouseLockDispatcher() {
+}
+
+void FullscreenMouseLockDispatcher::SendLockMouseRequest() {
+ widget_->Send(new ViewHostMsg_LockMouse(widget_->routing_id(), false, 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 +270,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 +348,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();

Powered by Google App Engine
This is Rietveld 408576698