| 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 10%
|
| 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..e1a64ee7579bacf323128e20967f68799f13de7d 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(ExclusiveAccessControllerManager* manager,
|
| + 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_
|
|
|