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

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

Issue 2089323002: Refactored FullscreenController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for thakis Created 4 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
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/exclusive_access/fullscreen_controller.h" 5 #include "chrome/browser/ui/exclusive_access/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/location.h" 9 #include "base/location.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 ExclusiveAccessContext* exclusive_access_context = 133 ExclusiveAccessContext* exclusive_access_context =
134 exclusive_access_manager()->context(); 134 exclusive_access_manager()->context();
135 135
136 if (!exclusive_access_context->IsFullscreen()) { 136 if (!exclusive_access_context->IsFullscreen()) {
137 // Normal -> Tab Fullscreen. 137 // Normal -> Tab Fullscreen.
138 state_prior_to_tab_fullscreen_ = STATE_NORMAL; 138 state_prior_to_tab_fullscreen_ = STATE_NORMAL;
139 ToggleFullscreenModeInternal(TAB); 139 ToggleFullscreenModeInternal(TAB);
140 return; 140 return;
141 } 141 }
142 142
143 // Browser Fullscreen -> Tab Fullscreen.
143 if (exclusive_access_context->IsFullscreen()) { 144 if (exclusive_access_context->IsFullscreen()) {
144 // Browser Fullscreen with Toolbar -> Tab Fullscreen (no toolbar). 145 exclusive_access_context->UpdateUIForTabFullscreen(
145 exclusive_access_context->UpdateFullscreenWithToolbar(false); 146 ExclusiveAccessContext::STATE_ENTER_TAB_FULLSCREEN);
146 state_prior_to_tab_fullscreen_ = STATE_BROWSER_FULLSCREEN_WITH_TOOLBAR; 147 state_prior_to_tab_fullscreen_ = STATE_BROWSER_FULLSCREEN;
147 } else {
148 // Browser Fullscreen without Toolbar -> Tab Fullscreen.
149 state_prior_to_tab_fullscreen_ = STATE_BROWSER_FULLSCREEN_NO_TOOLBAR;
150 } 148 }
151 149
152 // We need to update the fullscreen exit bubble, e.g., going from browser 150 // We need to update the fullscreen exit bubble, e.g., going from browser
153 // fullscreen to tab fullscreen will need to show different content. 151 // fullscreen to tab fullscreen will need to show different content.
154 tab_fullscreen_ = true; 152 tab_fullscreen_ = true;
155 exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent(); 153 exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent();
156 154
157 // This is only a change between Browser and Tab fullscreen. We generate 155 // This is only a change between Browser and Tab fullscreen. We generate
158 // a fullscreen notification now because there is no window change. 156 // a fullscreen notification now because there is no window change.
159 PostFullscreenChangeNotification(true); 157 PostFullscreenChangeNotification(true);
(...skipping 16 matching lines...) Expand all
176 174
177 if (!exclusive_access_context->IsFullscreen()) 175 if (!exclusive_access_context->IsFullscreen())
178 return; 176 return;
179 177
180 if (IsFullscreenCausedByTab()) { 178 if (IsFullscreenCausedByTab()) {
181 // Tab Fullscreen -> Normal. 179 // Tab Fullscreen -> Normal.
182 ToggleFullscreenModeInternal(TAB); 180 ToggleFullscreenModeInternal(TAB);
183 return; 181 return;
184 } 182 }
185 183
186 // Tab Fullscreen -> Browser Fullscreen (with or without toolbar). 184 // Tab Fullscreen -> Browser Fullscreen.
187 if (state_prior_to_tab_fullscreen_ == STATE_BROWSER_FULLSCREEN_WITH_TOOLBAR) { 185 if (state_prior_to_tab_fullscreen_ == STATE_BROWSER_FULLSCREEN)
188 // Tab Fullscreen (no toolbar) -> Browser Fullscreen with Toolbar. 186 exclusive_access_context->UpdateUIForTabFullscreen(
189 exclusive_access_context->UpdateFullscreenWithToolbar(true); 187 ExclusiveAccessContext::STATE_EXIT_TAB_FULLSCREEN);
190 }
191 188
192 #if defined(OS_MACOSX) 189 #if defined(OS_MACOSX)
193 // Clear the bubble URL, which forces the Mac UI to redraw. 190 // Clear the bubble URL, which forces the Mac UI to redraw.
194 exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent(); 191 exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent();
195 #endif // defined(OS_MACOSX) 192 #endif // defined(OS_MACOSX)
196 193
197 // If currently there is a tab in "tab fullscreen" mode and fullscreen 194 // If currently there is a tab in "tab fullscreen" mode and fullscreen
198 // was not caused by it (i.e., previously it was in "browser fullscreen" 195 // was not caused by it (i.e., previously it was in "browser fullscreen"
199 // mode), we need to switch back to "browser fullscreen" mode. In this 196 // mode), we need to switch back to "browser fullscreen" mode. In this
200 // case, all we have to do is notifying the tab that it has exited "tab 197 // case, all we have to do is notifying the tab that it has exited "tab
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 int bubble_reshow_count) { 327 int bubble_reshow_count) {
331 UMA_HISTOGRAM_COUNTS_100(kBubbleReshowsHistogramName, bubble_reshow_count); 328 UMA_HISTOGRAM_COUNTS_100(kBubbleReshowsHistogramName, bubble_reshow_count);
332 } 329 }
333 330
334 void FullscreenController::ToggleFullscreenModeInternal( 331 void FullscreenController::ToggleFullscreenModeInternal(
335 FullscreenInternalOption option) { 332 FullscreenInternalOption option) {
336 ExclusiveAccessContext* const exclusive_access_context = 333 ExclusiveAccessContext* const exclusive_access_context =
337 exclusive_access_manager()->context(); 334 exclusive_access_manager()->context();
338 bool enter_fullscreen = !exclusive_access_context->IsFullscreen(); 335 bool enter_fullscreen = !exclusive_access_context->IsFullscreen();
339 336
340 #if defined(OS_MACOSX)
341 // When a Mac user requests a toggle they may be toggling between
342 // FullscreenWithoutChrome and FullscreenWithToolbar.
343 // TODO(spqchan): Refactor toolbar related code since most of it should be
344 // deprecated.
345 if (exclusive_access_context->IsFullscreen() &&
346 !IsWindowFullscreenForTabOrPending() &&
347 IsExtensionFullscreenOrPending()) {
348 enter_fullscreen = enter_fullscreen ||
349 exclusive_access_context->IsFullscreen();
350 }
351 #endif
352
353 // In kiosk mode, we always want to be fullscreen. When the browser first 337 // In kiosk mode, we always want to be fullscreen. When the browser first
354 // starts we're not yet fullscreen, so let the initial toggle go through. 338 // starts we're not yet fullscreen, so let the initial toggle go through.
355 if (chrome::IsRunningInAppMode() && exclusive_access_context->IsFullscreen()) 339 if (chrome::IsRunningInAppMode() && exclusive_access_context->IsFullscreen())
356 return; 340 return;
357 341
358 #if !defined(OS_MACOSX) 342 #if !defined(OS_MACOSX)
359 // Do not enter fullscreen mode if disallowed by pref. This prevents the user 343 // Do not enter fullscreen mode if disallowed by pref. This prevents the user
360 // from manually entering fullscreen mode and also disables kiosk mode on 344 // from manually entering fullscreen mode and also disables kiosk mode on
361 // desktop platforms. 345 // desktop platforms.
362 if (enter_fullscreen && 346 if (enter_fullscreen &&
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 return fullscreened_origin_; 452 return fullscreened_origin_;
469 453
470 return exclusive_access_tab()->GetLastCommittedURL(); 454 return exclusive_access_tab()->GetLastCommittedURL();
471 } 455 }
472 456
473 GURL FullscreenController::GetEmbeddingOrigin() const { 457 GURL FullscreenController::GetEmbeddingOrigin() const {
474 DCHECK(exclusive_access_tab()); 458 DCHECK(exclusive_access_tab());
475 459
476 return exclusive_access_tab()->GetLastCommittedURL(); 460 return exclusive_access_tab()->GetLastCommittedURL();
477 } 461 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698