| 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 01a986b9cd0c8381732f2d4bd4beffec9ed432d4..4f9eda0f8e39d31d531c5bca9698d1ac79342cc0 100644
|
| --- a/chrome/browser/ui/exclusive_access/mouse_lock_controller.cc
|
| +++ b/chrome/browser/ui/exclusive_access/mouse_lock_controller.cc
|
| @@ -7,6 +7,8 @@
|
| #include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/exclusive_access/exclusive_access_context.h"
|
| +#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h"
|
| #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h"
|
| #include "components/content_settings/core/browser/host_content_settings_map.h"
|
| #include "content/public/browser/notification_service.h"
|
| @@ -17,9 +19,8 @@
|
| using content::RenderViewHost;
|
| using content::WebContents;
|
|
|
| -MouseLockController::MouseLockController(ExclusiveAccessManager* manager,
|
| - Browser* browser)
|
| - : ExclusiveAccessControllerBase(manager, browser),
|
| +MouseLockController::MouseLockController(ExclusiveAccessManager* manager)
|
| + : ExclusiveAccessControllerBase(manager),
|
| mouse_lock_state_(MOUSELOCK_NOT_REQUESTED) {
|
| }
|
|
|
| @@ -67,7 +68,11 @@ void MouseLockController::RequestToLockMouse(WebContents* web_contents,
|
| mouse_lock_state_ = MOUSELOCK_REQUESTED;
|
| } else {
|
| // Lock mouse.
|
| - if (web_contents->GotResponseToLockMouseRequest(true)) {
|
| + ExclusiveAccessContext* context =
|
| + exclusive_access_manager()->exclusive_access_context();
|
| + if ((context->UseCallbackForMouseLock() &&
|
| + context->MouseLockCallback(true)) ||
|
| + web_contents->GotResponseToLockMouseRequest(true)) {
|
| if (last_unlocked_by_target) {
|
| mouse_lock_state_ = MOUSELOCK_ACCEPTED_SILENTLY;
|
| } else {
|
| @@ -90,6 +95,7 @@ void MouseLockController::RequestToLockMouse(WebContents* web_contents,
|
| default:
|
| NOTREACHED();
|
| }
|
| +
|
| exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent();
|
| }
|
|
|
| @@ -136,8 +142,10 @@ bool MouseLockController::OnAcceptExclusiveAccessPermission() {
|
| if (mouse_lock && !IsMouseLocked()) {
|
| DCHECK(IsMouseLockRequested());
|
|
|
| - HostContentSettingsMap* settings_map =
|
| - profile()->GetHostContentSettingsMap();
|
| + HostContentSettingsMap* settings_map = exclusive_access_manager()
|
| + ->exclusive_access_context()
|
| + ->GetProfile()
|
| + ->GetHostContentSettingsMap();
|
|
|
| GURL url = GetExclusiveAccessBubbleURL();
|
| ContentSettingsPattern pattern = ContentSettingsPattern::FromURL(url);
|
| @@ -154,12 +162,23 @@ bool MouseLockController::OnAcceptExclusiveAccessPermission() {
|
| std::string(), CONTENT_SETTING_ALLOW);
|
| }
|
|
|
| + ExclusiveAccessContext* context =
|
| + exclusive_access_manager()->exclusive_access_context();
|
| WebContents* tab = exclusive_access_tab();
|
| - if (tab && tab->GotResponseToLockMouseRequest(true)) {
|
| - mouse_lock_state_ = MOUSELOCK_ACCEPTED;
|
| + if (context->UseCallbackForMouseLock()) {
|
| + if (tab && context->MouseLockCallback(true)) {
|
| + mouse_lock_state_ = MOUSELOCK_ACCEPTED;
|
| + } else {
|
| + mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| + SetTabWithExclusiveAccess(nullptr);
|
| + }
|
| } else {
|
| - mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| - SetTabWithExclusiveAccess(nullptr);
|
| + if (tab && tab->GotResponseToLockMouseRequest(true)) {
|
| + mouse_lock_state_ = MOUSELOCK_ACCEPTED;
|
| + } else {
|
| + mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
|
| + SetTabWithExclusiveAccess(nullptr);
|
| + }
|
| }
|
| NotifyMouseLockChange();
|
| return true;
|
| @@ -237,7 +256,11 @@ ContentSetting MouseLockController::GetMouseLockSetting(const GURL& url) const {
|
| ->IsPrivilegedFullscreenForTab())
|
| return CONTENT_SETTING_ALLOW;
|
|
|
| - HostContentSettingsMap* settings_map = profile()->GetHostContentSettingsMap();
|
| - return settings_map->GetContentSetting(
|
| + HostContentSettingsMap* settings_map = exclusive_access_manager()
|
| + ->exclusive_access_context()
|
| + ->GetProfile()
|
| + ->GetHostContentSettingsMap();
|
| + ContentSetting setting = settings_map->GetContentSetting(
|
| url, url, CONTENT_SETTINGS_TYPE_MOUSELOCK, std::string());
|
| + return setting;
|
| }
|
|
|