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

Side by Side Diff: chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm

Issue 2296903002: [Mac] Fullscreen Toolbar Edge Cases (Closed)
Patch Set: slight cleanup Created 4 years, 3 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
« no previous file with comments | « chrome/browser/ui/cocoa/fullscreen_toolbar_controller.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #import "chrome/browser/ui/cocoa/fullscreen_toolbar_controller.h" 5 #import "chrome/browser/ui/cocoa/fullscreen_toolbar_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #import "base/mac/mac_util.h" 10 #import "base/mac/mac_util.h"
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 } 260 }
261 261
262 - (void)windowDidResignMain:(NSNotification*)notification { 262 - (void)windowDidResignMain:(NSNotification*)notification {
263 [self updateMenuBarAndDockVisibility]; 263 [self updateMenuBarAndDockVisibility];
264 } 264 }
265 265
266 - (CGFloat)floatingBarVerticalOffset { 266 - (CGFloat)floatingBarVerticalOffset {
267 return kFloatingBarVerticalOffset; 267 return kFloatingBarVerticalOffset;
268 } 268 }
269 269
270 - (void)lockBarVisibilityWithAnimation:(BOOL)animate {
271 isLockingBarVisibility_ = YES;
272 [self ensureOverlayShownWithAnimation:animate];
273 isLockingBarVisibility_ = NO;
274 }
275
276 - (void)releaseBarVisibilityWithAnimation:(BOOL)animate {
277 isReleasingBarVisibility_ = YES;
278 [self ensureOverlayHiddenWithAnimation:animate];
279 isReleasingBarVisibility_ = NO;
280 }
281
270 - (void)ensureOverlayShownWithAnimation:(BOOL)animate { 282 - (void)ensureOverlayShownWithAnimation:(BOOL)animate {
erikchen 2016/08/31 20:19:50 I notice that this is also called by browser_windo
spqchan 2016/09/07 19:46:48 No, lockBarVisibility and releaseBarVisibility sho
271 if (!inFullscreenMode_) 283 if (!inFullscreenMode_)
272 return; 284 return;
273 285
274 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode)) 286 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode))
275 return; 287 return;
276 288
277 if (self.slidingStyle != fullscreen_mac::OMNIBOX_TABS_HIDDEN) 289 if (self.slidingStyle != fullscreen_mac::OMNIBOX_TABS_HIDDEN)
278 return; 290 return;
279 291
280 [self cancelHideTimer]; 292 [self cancelHideTimer];
281 [self animateToolbarVisibility:YES]; 293 [self animateToolbarVisibility:YES];
282 } 294 }
283 295
284 - (void)ensureOverlayHiddenWithAnimation:(BOOL)animate { 296 - (void)ensureOverlayHiddenWithAnimation:(BOOL)animate {
285 if (!inFullscreenMode_) 297 if (!inFullscreenMode_)
286 return; 298 return;
287 299
288 if (self.slidingStyle != fullscreen_mac::OMNIBOX_TABS_HIDDEN) 300 if (self.slidingStyle != fullscreen_mac::OMNIBOX_TABS_HIDDEN)
289 return; 301 return;
290 302
303 if ([browserController_ isBarVisibilityLockedForOwner:nil] &&
erikchen 2016/08/31 20:19:50 I don't see how this condition could ever return t
spqchan 2016/09/07 19:46:48 ensureOverlayHiddenWithAnimation can be called whe
304 !isReleasingBarVisibility_) {
305 return;
306 }
307
308 if ([self mouseInsideTrackingArea] || menubarFraction_ == kShowFraction)
309 return;
310
291 [self cancelHideTimer]; 311 [self cancelHideTimer];
292 [self animateToolbarVisibility:NO]; 312 [self animateToolbarVisibility:NO];
293 } 313 }
294 314
295 - (void)cancelAnimationAndTimer { 315 - (void)cancelAnimationAndTimer {
296 [self cancelHideTimer]; 316 [self cancelHideTimer];
297 [currentAnimation_ stopAnimation]; 317 [currentAnimation_ stopAnimation];
298 currentAnimation_.reset(); 318 currentAnimation_.reset();
299 } 319 }
300 320
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 - (CGFloat)menubarOffset { 381 - (CGFloat)menubarOffset {
362 if ([browserController_ isInAppKitFullscreen]) 382 if ([browserController_ isInAppKitFullscreen])
363 return -std::floor(menubarFraction_ * [self floatingBarVerticalOffset]); 383 return -std::floor(menubarFraction_ * [self floatingBarVerticalOffset]);
364 384
365 return [self shouldShowMenubarInImmersiveFullscreen] 385 return [self shouldShowMenubarInImmersiveFullscreen]
366 ? -[self floatingBarVerticalOffset] 386 ? -[self floatingBarVerticalOffset]
367 : 0; 387 : 0;
368 } 388 }
369 389
370 - (CGFloat)toolbarFraction { 390 - (CGFloat)toolbarFraction {
371 if ([browserController_ isBarVisibilityLockedForOwner:nil])
372 return kShowFraction;
373
374 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode)) 391 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode))
375 return kHideFraction; 392 return kHideFraction;
376 393
377 switch (slidingStyle_) { 394 switch (slidingStyle_) {
378 case fullscreen_mac::OMNIBOX_TABS_PRESENT: 395 case fullscreen_mac::OMNIBOX_TABS_PRESENT:
379 return kShowFraction; 396 return kShowFraction;
380 case fullscreen_mac::OMNIBOX_TABS_NONE: 397 case fullscreen_mac::OMNIBOX_TABS_NONE:
381 return kHideFraction; 398 return kHideFraction;
382 case fullscreen_mac::OMNIBOX_TABS_HIDDEN: 399 case fullscreen_mac::OMNIBOX_TABS_HIDDEN:
400 if (IsCGFloatEqual(menubarFraction_, kShowFraction))
401 return kShowFraction;
402
383 if (currentAnimation_.get()) 403 if (currentAnimation_.get())
384 return [currentAnimation_ toolbarFraction]; 404 return [currentAnimation_ toolbarFraction];
385 405
386 if (hideTimer_.get() || shouldAnimateToolbarOut_) 406 if (hideTimer_.get() || shouldAnimateToolbarOut_)
387 return kShowFraction; 407 return kShowFraction;
388 408
409 if (isLockingBarVisibility_)
410 return kHideFraction;
erikchen 2016/08/31 20:19:50 I see what you're doing here, but I think this wil
spqchan 2016/09/07 19:46:48 True. Updated the logic so that if the menubar is
411 else if (isReleasingBarVisibility_)
412 return kShowFraction;
413 else if ([browserController_ isBarVisibilityLockedForOwner:nil])
414 return kShowFraction;
415
389 return toolbarFractionFromMenuProgress_; 416 return toolbarFractionFromMenuProgress_;
390 } 417 }
391 } 418 }
392 419
393 - (BOOL)isFullscreenTransitionInProgress { 420 - (BOOL)isFullscreenTransitionInProgress {
394 return [browserController_ isFullscreenTransitionInProgress]; 421 return [browserController_ isFullscreenTransitionInProgress];
395 } 422 }
396 423
397 - (BOOL)isInFullscreen { 424 - (BOOL)isInFullscreen {
398 return inFullscreenMode_; 425 return inFullscreenMode_;
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 627
601 // No more calls back up to the BWC. 628 // No more calls back up to the BWC.
602 browserController_ = nil; 629 browserController_ = nil;
603 } 630 }
604 631
605 - (BOOL)shouldShowMenubarInImmersiveFullscreen { 632 - (BOOL)shouldShowMenubarInImmersiveFullscreen {
606 return [self doesScreenHaveMenuBar] && [self toolbarFraction] > 0.99; 633 return [self doesScreenHaveMenuBar] && [self toolbarFraction] > 0.99;
607 } 634 }
608 635
609 @end 636 @end
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/fullscreen_toolbar_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698