| Index: chrome/browser/ui/exclusive_access/mouse_lock_controller.cc
|
| diff --git a/chrome/browser/ui/exclusive_access/mouse_lock_controller.cc b/chrome/browser/ui/exclusive_access/mouse_lock_controller.cc
|
| index 073e5187f2154d0cbfbe0d9a987e4525ae98aada..ede955ef25e57ad29502bef1cc9ab2ca3167329f 100644
|
| --- a/chrome/browser/ui/exclusive_access/mouse_lock_controller.cc
|
| +++ b/chrome/browser/ui/exclusive_access/mouse_lock_controller.cc
|
| @@ -31,19 +31,19 @@ const char kBubbleReshowsHistogramName[] =
|
|
|
| MouseLockController::MouseLockController(ExclusiveAccessManager* manager)
|
| : ExclusiveAccessControllerBase(manager),
|
| - mouse_lock_state_(MOUSELOCK_NOT_REQUESTED),
|
| + mouse_lock_state_(MOUSELOCK_UNLOCKED),
|
| fake_mouse_lock_for_test_(false) {}
|
|
|
| MouseLockController::~MouseLockController() {
|
| }
|
|
|
| bool MouseLockController::IsMouseLocked() const {
|
| - return mouse_lock_state_ == MOUSELOCK_ACCEPTED ||
|
| - mouse_lock_state_ == MOUSELOCK_ACCEPTED_SILENTLY;
|
| + return mouse_lock_state_ == MOUSELOCK_LOCKED ||
|
| + mouse_lock_state_ == MOUSELOCK_LOCKED_SILENTLY;
|
| }
|
|
|
| -bool MouseLockController::IsMouseLockSilentlyAccepted() const {
|
| - return mouse_lock_state_ == MOUSELOCK_ACCEPTED_SILENTLY;
|
| +bool MouseLockController::IsMouseLockedSilently() const {
|
| + return mouse_lock_state_ == MOUSELOCK_LOCKED_SILENTLY;
|
| }
|
|
|
| void MouseLockController::RequestToLockMouse(WebContents* web_contents,
|
| @@ -64,43 +64,18 @@ void MouseLockController::RequestToLockMouse(WebContents* web_contents,
|
| return;
|
| }
|
| SetTabWithExclusiveAccess(web_contents);
|
| - ExclusiveAccessBubbleType bubble_type =
|
| - exclusive_access_manager()->GetExclusiveAccessExitBubbleType();
|
| -
|
| - switch (GetMouseLockSetting(web_contents->GetURL())) {
|
| - case CONTENT_SETTING_ALLOW:
|
| - // If bubble already displaying buttons we must not lock the mouse yet,
|
| - // or it would prevent pressing those buttons. Instead, merge the request.
|
| - if (!exclusive_access_manager()
|
| - ->fullscreen_controller()
|
| - ->IsPrivilegedFullscreenForTab() &&
|
| - exclusive_access_bubble::ShowButtonsForType(bubble_type)) {
|
| - mouse_lock_state_ = MOUSELOCK_REQUESTED;
|
| - } else {
|
| - // Lock mouse.
|
| - if (fake_mouse_lock_for_test_ ||
|
| - web_contents->GotResponseToLockMouseRequest(true)) {
|
| - if (last_unlocked_by_target) {
|
| - mouse_lock_state_ = MOUSELOCK_ACCEPTED_SILENTLY;
|
| - } else {
|
| - mouse_lock_state_ = MOUSELOCK_ACCEPTED;
|
| - }
|
| - } else {
|
| - SetTabWithExclusiveAccess(nullptr);
|
| - mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| - }
|
| - }
|
| - break;
|
| - case CONTENT_SETTING_BLOCK:
|
| - web_contents->GotResponseToLockMouseRequest(false);
|
| - SetTabWithExclusiveAccess(nullptr);
|
| - mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| - break;
|
| - case CONTENT_SETTING_ASK:
|
| - mouse_lock_state_ = MOUSELOCK_REQUESTED;
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| +
|
| + // Lock mouse.
|
| + if (fake_mouse_lock_for_test_ ||
|
| + web_contents->GotResponseToLockMouseRequest(true)) {
|
| + if (last_unlocked_by_target) {
|
| + mouse_lock_state_ = MOUSELOCK_LOCKED_SILENTLY;
|
| + } else {
|
| + mouse_lock_state_ = MOUSELOCK_LOCKED;
|
| + }
|
| + } else {
|
| + SetTabWithExclusiveAccess(nullptr);
|
| + mouse_lock_state_ = MOUSELOCK_UNLOCKED;
|
| }
|
| exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent();
|
| }
|
| @@ -112,14 +87,9 @@ void MouseLockController::ExitExclusiveAccessIfNecessary() {
|
| void MouseLockController::NotifyTabExclusiveAccessLost() {
|
| WebContents* tab = exclusive_access_tab();
|
| if (tab) {
|
| - if (IsMouseLockRequested()) {
|
| - tab->GotResponseToLockMouseRequest(false);
|
| - NotifyMouseLockChange();
|
| - } else {
|
| - UnlockMouse();
|
| - }
|
| + UnlockMouse();
|
| SetTabWithExclusiveAccess(nullptr);
|
| - mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| + mouse_lock_state_ = MOUSELOCK_UNLOCKED;
|
| exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent();
|
| }
|
| }
|
| @@ -130,7 +100,7 @@ void MouseLockController::RecordBubbleReshowsHistogram(
|
| }
|
|
|
| bool MouseLockController::HandleUserPressedEscape() {
|
| - if (IsMouseLocked() || IsMouseLockRequested()) {
|
| + if (IsMouseLocked()) {
|
| ExitExclusiveAccessIfNecessary();
|
| return true;
|
| }
|
| @@ -142,74 +112,14 @@ void MouseLockController::ExitExclusiveAccessToPreviousState() {
|
| // Nothing to do for mouse lock.
|
| }
|
|
|
| -bool MouseLockController::OnAcceptExclusiveAccessPermission() {
|
| - ExclusiveAccessBubbleType bubble_type =
|
| - exclusive_access_manager()->GetExclusiveAccessExitBubbleType();
|
| - bool mouse_lock = false;
|
| - exclusive_access_bubble::PermissionRequestedByType(bubble_type, nullptr,
|
| - &mouse_lock);
|
| - DCHECK(!(mouse_lock && IsMouseLocked()));
|
| -
|
| - if (mouse_lock && !IsMouseLocked()) {
|
| - DCHECK(IsMouseLockRequested());
|
| -
|
| - HostContentSettingsMap* settings_map =
|
| - HostContentSettingsMapFactory::GetForProfile(
|
| - exclusive_access_manager()->context()->GetProfile());
|
| -
|
| - GURL url = GetExclusiveAccessBubbleURL();
|
| -
|
| - // TODO(markusheintz): We should allow patterns for all possible URLs here.
|
| - //
|
| - // Do not store preference on file:// URLs, they don't have a clean
|
| - // origin policy.
|
| - // TODO(estark): Revisit this when crbug.com/455882 is fixed.
|
| - if (!url.SchemeIsFile()) {
|
| - settings_map->SetContentSettingDefaultScope(
|
| - url, GURL(), CONTENT_SETTINGS_TYPE_MOUSELOCK, std::string(),
|
| - CONTENT_SETTING_ALLOW);
|
| - }
|
| -
|
| - WebContents* tab = exclusive_access_tab();
|
| - if (tab && tab->GotResponseToLockMouseRequest(true)) {
|
| - mouse_lock_state_ = MOUSELOCK_ACCEPTED;
|
| - } else {
|
| - mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| - SetTabWithExclusiveAccess(nullptr);
|
| - }
|
| - NotifyMouseLockChange();
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -bool MouseLockController::OnDenyExclusiveAccessPermission() {
|
| - WebContents* tab = exclusive_access_tab();
|
| -
|
| - if (tab && IsMouseLockRequested()) {
|
| - mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| - tab->GotResponseToLockMouseRequest(false);
|
| - SetTabWithExclusiveAccess(nullptr);
|
| - NotifyMouseLockChange();
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| void MouseLockController::LostMouseLock() {
|
| RecordExitingUMA();
|
| - mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| + mouse_lock_state_ = MOUSELOCK_UNLOCKED;
|
| SetTabWithExclusiveAccess(nullptr);
|
| NotifyMouseLockChange();
|
| exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent();
|
| }
|
|
|
| -bool MouseLockController::IsMouseLockRequested() const {
|
| - return mouse_lock_state_ == MOUSELOCK_REQUESTED;
|
| -}
|
| -
|
| void MouseLockController::NotifyMouseLockChange() {
|
| content::NotificationService::current()->Notify(
|
| chrome::NOTIFICATION_MOUSE_LOCK_CHANGED,
|
| @@ -241,13 +151,3 @@ void MouseLockController::UnlockMouse() {
|
| if (mouse_lock_view)
|
| mouse_lock_view->UnlockMouse();
|
| }
|
| -
|
| -ContentSetting MouseLockController::GetMouseLockSetting(const GURL& url) const {
|
| - // The new policy is to always allow (even if the flag is disabled). We no
|
| - // longer give users control over this at the settings level (since it is very
|
| - // easy to escape mouse lock when it happens). Even if the user has blocked
|
| - // access to this site in the past, we now ignore that setting.
|
| - // TODO(mgiuca): Remove this function and clean up callers
|
| - // (https://crbug.com/610900).
|
| - return CONTENT_SETTING_ALLOW;
|
| -}
|
|
|