summaryrefslogtreecommitdiffstats
path: root/content/renderer/mouse_lock_dispatcher.h
diff options
context:
space:
mode:
authoryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-03 10:29:24 +0000
committeryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-03 10:29:24 +0000
commit890545016b87381a5ed5db6e840735c9fd08106c (patch)
tree1c6b71cf7add01245ff0f3f3ef7487a45856bd2a /content/renderer/mouse_lock_dispatcher.h
parentcb56392fa58db991fa609f04d37ee78a2f1f41fa (diff)
downloadchromium_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.h32
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