Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8007)

Unified Diff: chrome/browser/ui/exclusive_access/mouse_lock_controller.h

Issue 836933005: Refactor fullscreen_controller. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync to TOT Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..27cede2a628dbfb8a54bb026ece473bc9992dc7b 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,61 @@
-// 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);
+ MouseLockController(ExclusiveAccessManager* 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 NotifyTabExclusiveAccessLost() 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_

Powered by Google App Engine
This is Rietveld 408576698