diff options
author | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-03 10:29:24 +0000 |
---|---|---|
committer | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-03 10:29:24 +0000 |
commit | 890545016b87381a5ed5db6e840735c9fd08106c (patch) | |
tree | 1c6b71cf7add01245ff0f3f3ef7487a45856bd2a /content/renderer/mouse_lock_dispatcher.h | |
parent | cb56392fa58db991fa609f04d37ee78a2f1f41fa (diff) | |
download | chromium_src-890545016b87381a5ed5db6e840735c9fd08106c.zip chromium_src-890545016b87381a5ed5db6e840735c9fd08106c.tar.gz chromium_src-890545016b87381a5ed5db6e840735c9fd08106c.tar.bz2 |
Support mouse lock in Flash fullscreen mode.
In this mode, we won't show a bubble to ask for user permission. Mouse lock content settings are not considered, either.
BUG=129241
TEST=1) run ppapi/examples/mouse_lock;
2) when one of the plugins is focused, press 'f' to enter Flash fullscreen;
3) left click to enter mouse lock.
Review URL: https://chromiumcodereview.appspot.com/10458008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140231 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/mouse_lock_dispatcher.h')
-rw-r--r-- | content/renderer/mouse_lock_dispatcher.h | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/content/renderer/mouse_lock_dispatcher.h b/content/renderer/mouse_lock_dispatcher.h index f77f56e..120ca37 100644 --- a/content/renderer/mouse_lock_dispatcher.h +++ b/content/renderer/mouse_lock_dispatcher.h @@ -7,25 +7,15 @@ #pragma once #include "base/basictypes.h" -#include "content/public/renderer/render_view_observer.h" - -class RenderViewImpl; +#include "content/common/content_export.h" namespace WebKit { class WebMouseEvent; -class WebWidget; } // namespace WebKit -namespace webkit{ -namespace ppapi { -class PluginInstance; -} // namespace ppapi -} // namespace webkit - -// MouseLockDispatcher is owned by RenderViewImpl. -class CONTENT_EXPORT MouseLockDispatcher : public content::RenderViewObserver { +class CONTENT_EXPORT MouseLockDispatcher { public: - explicit MouseLockDispatcher(RenderViewImpl* render_view_impl); + MouseLockDispatcher(); virtual ~MouseLockDispatcher(); class LockTarget { @@ -54,20 +44,22 @@ class CONTENT_EXPORT MouseLockDispatcher : public content::RenderViewObserver { // Allow lock target to consumed a mouse event, if it does return true. bool WillHandleMouseEvent(const WebKit::WebMouseEvent& event); - private: - // RenderView::Observer implementation. - virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; - - // IPC handlers. + // Subclasses or users have to call these methods to report mouse lock events + // from the browser. void OnLockMouseACK(bool succeeded); void OnMouseLockLost(); + protected: + // Subclasses must implement these methods to send mouse lock requests to the + // browser. + virtual void SendLockMouseRequest(bool unlocked_by_target) = 0; + virtual void SendUnlockMouseRequest() = 0; + + private: bool MouseLockedOrPendingAction() const { return mouse_locked_ || pending_lock_request_ || pending_unlock_request_; } - RenderViewImpl* render_view_impl_; - bool mouse_locked_; // If both |pending_lock_request_| and |pending_unlock_request_| are true, // it means a lock request was sent before an unlock request and we haven't |