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

Side by Side Diff: chrome/browser/ui/fullscreen_controller.cc

Issue 10567002: Mouse lock and fullscreen exit upon reload. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fullscreen added to test Created 8 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/fullscreen_controller.h" 5 #include "chrome/browser/ui/fullscreen_controller.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "chrome/browser/content_settings/host_content_settings_map.h" 10 #include "chrome/browser/content_settings/host_content_settings_map.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 70
71 bool FullscreenController::IsMouseLocked() const { 71 bool FullscreenController::IsMouseLocked() const {
72 return mouse_lock_state_ == MOUSELOCK_ACCEPTED || 72 return mouse_lock_state_ == MOUSELOCK_ACCEPTED ||
73 mouse_lock_state_ == MOUSELOCK_ACCEPTED_SILENTLY; 73 mouse_lock_state_ == MOUSELOCK_ACCEPTED_SILENTLY;
74 } 74 }
75 75
76 void FullscreenController::RequestToLockMouse(WebContents* web_contents, 76 void FullscreenController::RequestToLockMouse(WebContents* web_contents,
77 bool user_gesture, 77 bool user_gesture,
78 bool last_unlocked_by_target) { 78 bool last_unlocked_by_target) {
79 DCHECK(!IsMouseLocked()); 79 DCHECK(!IsMouseLocked());
80 NotifyMouseLockChange();
80 81
81 // Check for command line switch disabling mouse lock when not tab fullscreen. 82 // Check for command line switch disabling mouse lock when not tab fullscreen.
82 if (CommandLine::ForCurrentProcess()->HasSwitch( 83 if (CommandLine::ForCurrentProcess()->HasSwitch(
83 switches::kDisableNonFullscreenMouseLock) && 84 switches::kDisableNonFullscreenMouseLock) &&
84 !IsFullscreenForTabOrPending(web_contents)) { 85 !IsFullscreenForTabOrPending(web_contents)) {
85 web_contents->GotResponseToLockMouseRequest(false); 86 web_contents->GotResponseToLockMouseRequest(false);
86 return; 87 return;
87 } 88 }
88 89
89 NotifyMouseLockChange();
90
91 // Must have a user gesture to prevent misbehaving sites from constantly 90 // Must have a user gesture to prevent misbehaving sites from constantly
92 // re-locking the mouse. Exceptions are when the page has unlocked 91 // re-locking the mouse. Exceptions are when the page has unlocked
93 // (i.e. not the user), or if we're in tab fullscreen (user gesture required 92 // (i.e. not the user), or if we're in tab fullscreen (user gesture required
94 // for that) 93 // for that)
95 if (!last_unlocked_by_target && !user_gesture && 94 if (!last_unlocked_by_target && !user_gesture &&
96 !IsFullscreenForTabOrPending(web_contents)) { 95 !IsFullscreenForTabOrPending(web_contents)) {
97 web_contents->GotResponseToLockMouseRequest(false); 96 web_contents->GotResponseToLockMouseRequest(false);
98 return; 97 return;
99 } 98 }
100 mouse_lock_tab_ = TabContents::FromWebContents(web_contents); 99 mouse_lock_tab_ = TabContents::FromWebContents(web_contents);
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 bool FullscreenController::HandleUserPressedEscape() { 330 bool FullscreenController::HandleUserPressedEscape() {
332 if (IsFullscreenForTabOrPending() || 331 if (IsFullscreenForTabOrPending() ||
333 IsMouseLocked() || IsMouseLockRequested()) { 332 IsMouseLocked() || IsMouseLockRequested()) {
334 ExitTabFullscreenOrMouseLockIfNecessary(); 333 ExitTabFullscreenOrMouseLockIfNecessary();
335 return true; 334 return true;
336 } 335 }
337 336
338 return false; 337 return false;
339 } 338 }
340 339
340 bool FullscreenController::HandleUserPressedReload() {
341 if (IsFullscreenForTabOrPending() ||
342 IsMouseLocked() || IsMouseLockRequested()) {
343 ExitTabFullscreenOrMouseLockIfNecessary();
344 }
345
346 return false;
347 }
348
341 FullscreenController::~FullscreenController() {} 349 FullscreenController::~FullscreenController() {}
342 350
343 void FullscreenController::NotifyTabOfExitIfNecessary() { 351 void FullscreenController::NotifyTabOfExitIfNecessary() {
344 if (fullscreened_tab_) { 352 if (fullscreened_tab_) {
345 RenderViewHost* rvh = 353 RenderViewHost* rvh =
346 fullscreened_tab_->web_contents()->GetRenderViewHost(); 354 fullscreened_tab_->web_contents()->GetRenderViewHost();
347 fullscreened_tab_ = NULL; 355 fullscreened_tab_ = NULL;
348 tab_caused_fullscreen_ = false; 356 tab_caused_fullscreen_ = false;
349 tab_fullscreen_accepted_ = false; 357 tab_fullscreen_accepted_ = false;
350 if (rvh) 358 if (rvh)
351 rvh->ExitFullscreen(); 359 rvh->ExitFullscreen();
352 } 360 }
353 361
354 if (mouse_lock_tab_) { 362 if (mouse_lock_tab_) {
355 WebContents* web_contents = mouse_lock_tab_->web_contents(); 363 WebContents* web_contents = mouse_lock_tab_->web_contents();
356 if (IsMouseLockRequested()) { 364 if (IsMouseLockRequested()) {
357 web_contents->GotResponseToLockMouseRequest(false); 365 web_contents->GotResponseToLockMouseRequest(false);
366 NotifyMouseLockChange();
358 } else if (web_contents->GetRenderViewHost() && 367 } else if (web_contents->GetRenderViewHost() &&
359 web_contents->GetRenderViewHost()->GetView()) { 368 web_contents->GetRenderViewHost()->GetView()) {
360 web_contents->GetRenderViewHost()->GetView()->UnlockMouse(); 369 web_contents->GetRenderViewHost()->GetView()->UnlockMouse();
361 } 370 }
362 mouse_lock_tab_ = NULL; 371 mouse_lock_tab_ = NULL;
363 mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED; 372 mouse_lock_state_ = MOUSELOCK_NOT_REQUESTED;
364 } 373 }
365 374
366 UpdateFullscreenExitBubbleContent(); 375 UpdateFullscreenExitBubbleContent();
367 } 376 }
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 window_->ExitFullscreen(); 535 window_->ExitFullscreen();
527 extension_caused_fullscreen_ = GURL(); 536 extension_caused_fullscreen_ = GURL();
528 } 537 }
529 UpdateFullscreenExitBubbleContent(); 538 UpdateFullscreenExitBubbleContent();
530 539
531 // Once the window has become fullscreen it'll call back to 540 // Once the window has become fullscreen it'll call back to
532 // WindowFullscreenStateChanged(). We don't do this immediately as 541 // WindowFullscreenStateChanged(). We don't do this immediately as
533 // BrowserWindow::EnterFullscreen() asks for bookmark_bar_state_, so we let 542 // BrowserWindow::EnterFullscreen() asks for bookmark_bar_state_, so we let
534 // the BrowserWindow invoke WindowFullscreenStateChanged when appropriate. 543 // the BrowserWindow invoke WindowFullscreenStateChanged when appropriate.
535 } 544 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698