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
diff --git a/content/renderer/mouse_lock_dispatcher.h b/content/renderer/mouse_lock_dispatcher.h
index f77f56e8..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 @@
   // 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