Chromium Code Reviews| Index: chrome/browser/ui/exclusive_access/mouse_lock_controller.h |
| diff --git a/chrome/browser/ui/views/website_settings/permission_selector_view.h b/chrome/browser/ui/exclusive_access/mouse_lock_controller.h |
| similarity index 11% |
| copy from chrome/browser/ui/views/website_settings/permission_selector_view.h |
| copy to chrome/browser/ui/exclusive_access/mouse_lock_controller.h |
| index afcde26557160d4bec25bb531f584077aab52714..75cdb98b9b4d68393102b0e0aa644d525464310d 100644 |
| --- a/chrome/browser/ui/views/website_settings/permission_selector_view.h |
| +++ b/chrome/browser/ui/exclusive_access/mouse_lock_controller.h |
| @@ -1,59 +1,62 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef CHROME_BROWSER_UI_VIEWS_WEBSITE_SETTINGS_PERMISSION_SELECTOR_VIEW_H_ |
| -#define CHROME_BROWSER_UI_VIEWS_WEBSITE_SETTINGS_PERMISSION_SELECTOR_VIEW_H_ |
| - |
| -#include "base/basictypes.h" |
| -#include "base/compiler_specific.h" |
| -#include "base/memory/scoped_ptr.h" |
| -#include "base/observer_list.h" |
| -#include "base/strings/string16.h" |
| -#include "chrome/browser/ui/views/website_settings/permission_selector_view_observer.h" |
| -#include "chrome/browser/ui/website_settings/permission_menu_model.h" |
| -#include "chrome/browser/ui/website_settings/website_settings_ui.h" |
| +#ifndef CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_MOUSE_LOCK_CONTROLLER_H_ |
| +#define CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_MOUSE_LOCK_CONTROLLER_H_ |
| + |
| +#include "chrome/browser/ui/exclusive_access/exclusive_access_controller_base.h" |
| #include "components/content_settings/core/common/content_settings.h" |
| -#include "components/content_settings/core/common/content_settings_types.h" |
| -#include "ui/views/controls/button/menu_button_listener.h" |
| -#include "ui/views/view.h" |
| - |
| -namespace internal { |
| -class PermissionMenuButton; |
| -} |
| - |
| -namespace views { |
| -class ImageView; |
| -class MenuRunner; |
| -} |
| - |
| -// A custom view for selecting a permission setting for the given permission |
| -// |type|. |
| -class PermissionSelectorView : public views::View { |
| + |
| +// This class implements mouselock behavior. |
| +class MouseLockController : public ExclusiveAccessControllerBase { |
| public: |
| - PermissionSelectorView(const GURL& url, |
| - const WebsiteSettingsUI::PermissionInfo& permission); |
| + explicit MouseLockController(ExclusiveAccessManager* manager, |
|
miu
2015/01/16 22:17:39
no explicit needed for 2-arg ctor
Sriram
2015/01/21 01:38:57
Done.
|
| + Browser* browser); |
| + ~MouseLockController() override; |
| + |
| + bool IsMouseLocked() const; |
| + bool IsMouseLockSilentlyAccepted() const; |
| + bool IsMouseLockRequested() const; |
| - void AddObserver(PermissionSelectorViewObserver* observer); |
| + void RequestToLockMouse(content::WebContents* web_contents, |
| + bool user_gesture, |
| + bool last_unlocked_by_target); |
| - void PermissionChanged(const WebsiteSettingsUI::PermissionInfo& permission); |
| + // Override from ExclusiveAccessControllerBase |
| + bool HandleUserPressedEscape() override; |
| - protected: |
| - // Overridden from views::View. |
| - void ChildPreferredSizeChanged(View* child) override; |
| + void ExitExclusiveAccessToPreviousState() override; |
| + bool OnAcceptExclusiveAccessPermission() override; |
| + bool OnDenyExclusiveAccessPermission() override; |
| + |
| + // Called by Browser::LostMouseLock. |
| + void LostMouseLock(); |
| + |
| + void UnlockMouse(); |
| private: |
| - ~PermissionSelectorView() override; |
| + enum MouseLockState { |
| + MOUSELOCK_NOT_REQUESTED, |
| + // The page requests to lock the mouse and the user hasn't responded to the |
| + // request. |
| + MOUSELOCK_REQUESTED, |
| + // Mouse lock has been allowed by the user. |
| + MOUSELOCK_ACCEPTED, |
| + // Mouse lock has been silently accepted, no notification to user. |
| + MOUSELOCK_ACCEPTED_SILENTLY |
| + }; |
| + |
| + void NotifyMouseLockChange(); |
| - // Model for the permission's menu. |
| - scoped_ptr<PermissionMenuModel> menu_model_; |
| + void ExitExclusiveAccessIfNecessary() override; |
| + void NotifyTabOfExclusiveAccessChange() override; |
| - views::ImageView* icon_; // Owned by the views hierachy. |
| - internal::PermissionMenuButton* menu_button_; // Owned by the views hierachy. |
| + ContentSetting GetMouseLockSetting(const GURL& url) const; |
| - ObserverList<PermissionSelectorViewObserver, false> observer_list_; |
| + MouseLockState mouse_lock_state_; |
| - DISALLOW_COPY_AND_ASSIGN(PermissionSelectorView); |
| + DISALLOW_COPY_AND_ASSIGN(MouseLockController); |
| }; |
| -#endif // CHROME_BROWSER_UI_VIEWS_WEBSITE_SETTINGS_PERMISSION_SELECTOR_VIEW_H_ |
| +#endif // CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_MOUSE_LOCK_CONTROLLER_H_ |