| Index: chrome/browser/ui/cocoa/fullscreen_mode_controller.mm
|
| diff --git a/chrome/browser/ui/cocoa/fullscreen_mode_controller.mm b/chrome/browser/ui/cocoa/fullscreen_mode_controller.mm
|
| deleted file mode 100644
|
| index a897359bd57ff2d1fd3be0a15bba85854e546df1..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/cocoa/fullscreen_mode_controller.mm
|
| +++ /dev/null
|
| @@ -1,173 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#import "chrome/browser/ui/cocoa/fullscreen_mode_controller.h"
|
| -
|
| -#import "chrome/browser/ui/cocoa/browser_window_controller.h"
|
| -#import "chrome/browser/ui/cocoa/browser_window_controller_private.h"
|
| -#import "chrome/browser/ui/cocoa/fast_resize_view.h"
|
| -
|
| -@interface FullscreenModeController (Private)
|
| -- (void)startAnimationToState:(FullscreenToolbarState)state;
|
| -- (void)setMenuBarRevealProgress:(CGFloat)progress;
|
| -- (void)setRevealAnimationProgress:(NSAnimationProgress)progress;
|
| -@end
|
| -
|
| -namespace {
|
| -
|
| -OSStatus MenuBarRevealHandler(EventHandlerCallRef handler,
|
| - EventRef event,
|
| - void* context) {
|
| - FullscreenModeController* self =
|
| - static_cast<FullscreenModeController*>(context);
|
| - CGFloat revealFraction = 0;
|
| - GetEventParameter(event, FOUR_CHAR_CODE('rvlf'), typeCGFloat, NULL,
|
| - sizeof(CGFloat), NULL, &revealFraction);
|
| - [self setMenuBarRevealProgress:revealFraction];
|
| - return CallNextEventHandler(handler, event);
|
| -}
|
| -
|
| -// The duration of the animation to bring down the tabstrip.
|
| -const NSTimeInterval kAnimationDuration = 0.35;
|
| -
|
| -// The height of the tracking area in which mouse entered/exit events will
|
| -// reveal the tabstrip.
|
| -const NSUInteger kTrackingAreaHeight = 100;
|
| -
|
| -// There is a tiny gap between the window's max Y and the top of the screen,
|
| -// which will produce a mouse exit event when the menu bar should be revealed.
|
| -// This factor is the size of that gap plus padding.
|
| -const CGFloat kTrackingAreaMaxYEpsilon = 15;
|
| -
|
| -} // namespace
|
| -
|
| -// Animation ///////////////////////////////////////////////////////////////////
|
| -
|
| -@interface FullscreenModeDropDownAnimation : NSAnimation {
|
| - FullscreenModeController* controller_;
|
| -}
|
| -@end
|
| -
|
| -@implementation FullscreenModeDropDownAnimation
|
| -
|
| -- (id)initWithFullscreenModeController:(FullscreenModeController*)controller {
|
| - if ((self = [super initWithDuration:kAnimationDuration
|
| - animationCurve:NSAnimationEaseInOut])) {
|
| - controller_ = controller;
|
| - [self setAnimationBlockingMode:NSAnimationNonblocking];
|
| - [self setDelegate:controller_];
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (void)setCurrentProgress:(NSAnimationProgress)progress {
|
| - [controller_ setRevealAnimationProgress:progress];
|
| -}
|
| -
|
| -@end
|
| -
|
| -// Implementation //////////////////////////////////////////////////////////////
|
| -
|
| -@implementation FullscreenModeController
|
| -
|
| -- (id)initWithBrowserWindowController:(BrowserWindowController*)bwc {
|
| - if ((self = [super init])) {
|
| - controller_ = bwc;
|
| -
|
| - currentState_ = kFullscreenToolbarOnly;
|
| - destinationState_ = kFullscreenToolbarOnly;
|
| -
|
| - // Create the tracking area at the top of the window.
|
| - NSRect windowFrame = [[bwc window] frame];
|
| - NSRect trackingRect = NSMakeRect(
|
| - 0, NSHeight(windowFrame) - kTrackingAreaHeight,
|
| - NSWidth(windowFrame), kTrackingAreaHeight);
|
| - trackingArea_.reset(
|
| - [[CrTrackingArea alloc] initWithRect:trackingRect
|
| - options:NSTrackingMouseEnteredAndExited |
|
| - NSTrackingActiveAlways
|
| - owner:self
|
| - userInfo:nil]);
|
| - [[[bwc window] contentView] addTrackingArea:trackingArea_.get()];
|
| -
|
| - // Install the Carbon event handler for the undocumented menu bar show/hide
|
| - // event.
|
| - EventTypeSpec eventSpec = { kEventClassMenu, 2004 };
|
| - InstallApplicationEventHandler(NewEventHandlerUPP(&MenuBarRevealHandler),
|
| - 1, &eventSpec,
|
| - self, &menuBarTrackingHandler_);
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (void)dealloc {
|
| - RemoveEventHandler(menuBarTrackingHandler_);
|
| - [[[controller_ window] contentView] removeTrackingArea:trackingArea_.get()];
|
| - [super dealloc];
|
| -}
|
| -
|
| -- (CGFloat)menuBarHeight {
|
| - // -[NSMenu menuBarHeight] will return 0 when the menu bar is hidden, so
|
| - // use the status bar API instead, which always returns a constant value.
|
| - return [[NSStatusBar systemStatusBar] thickness] * menuBarRevealFraction_;
|
| -}
|
| -
|
| -- (void)mouseEntered:(NSEvent*)event {
|
| - if (animation_ || currentState_ == kFullscreenToolbarAndTabstrip)
|
| - return;
|
| -
|
| - [self startAnimationToState:kFullscreenToolbarAndTabstrip];
|
| -}
|
| -
|
| -- (void)mouseExited:(NSEvent*)event {
|
| - if (animation_ || currentState_ == kFullscreenToolbarOnly)
|
| - return;
|
| -
|
| - // Take allowance for the small gap between the window max Y and top edge of
|
| - // the screen.
|
| - NSPoint mousePoint = [NSEvent mouseLocation];
|
| - NSRect screenRect = [[[controller_ window] screen] frame];
|
| - if (mousePoint.y >= NSMaxY(screenRect) - kTrackingAreaMaxYEpsilon)
|
| - return;
|
| -
|
| - [self startAnimationToState:kFullscreenToolbarOnly];
|
| -}
|
| -
|
| -- (void)startAnimationToState:(FullscreenToolbarState)state {
|
| - DCHECK_NE(currentState_, state);
|
| -
|
| - destinationState_ = state;
|
| -
|
| - animation_.reset([[FullscreenModeDropDownAnimation alloc]
|
| - initWithFullscreenModeController:self]);
|
| - [animation_ startAnimation];
|
| -}
|
| -
|
| -- (void)setMenuBarRevealProgress:(CGFloat)progress {
|
| - menuBarRevealFraction_ = progress;
|
| -
|
| - // If an animation is not running, then -layoutSubviews will not be called
|
| - // for each tick of the menu bar reveal. Do that manually.
|
| - // TODO(rsesek): This is kind of hacky and janky.
|
| - if (!animation_)
|
| - [controller_ layoutSubviews];
|
| -}
|
| -
|
| -- (void)setRevealAnimationProgress:(NSAnimationProgress)progress {
|
| - // When hiding the tabstrip, invert the fraction.
|
| - if (destinationState_ == kFullscreenToolbarOnly)
|
| - progress = 1.0 - progress;
|
| - [controller_ setFloatingBarShownFraction:progress];
|
| -}
|
| -
|
| -- (void)animationDidEnd:(NSAnimation*)animation {
|
| - DCHECK_EQ(animation_.get(), animation);
|
| -
|
| - currentState_ = destinationState_;
|
| -
|
| - [animation_ setDelegate:nil];
|
| - animation_.reset();
|
| -}
|
| -
|
| -@end
|
|
|