Popular sites on the NTP: check that experiment group StartsWith (rather than IS...
[chromium-blink-merge.git] / chrome / browser / ui / cocoa / animatable_view.h
blobf84c2a58332e138419da33f0a6a028aaf3146542
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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_UI_COCOA_ANIMATABLE_VIEW_H_
6 #define CHROME_BROWSER_UI_COCOA_ANIMATABLE_VIEW_H_
8 #import <Cocoa/Cocoa.h>
10 #include "base/mac/scoped_nsobject.h"
11 #import "chrome/browser/ui/cocoa/background_gradient_view.h"
12 #import "chrome/browser/ui/cocoa/view_resizer.h"
14 // A view that provides an animatable height property. Provides methods to
15 // animate to a new height, set a new height immediately, or cancel any running
16 // animations.
18 // AnimatableView sends an |animationDidEnd:| message to its delegate when the
19 // animation ends normally and an |animationDidStop:| message when the animation
20 // was canceled (even when canceled as a result of a new animation starting).
22 @interface AnimatableView : BackgroundGradientView<NSAnimationDelegate> {
23 @protected
24 IBOutlet id delegate_; // weak, used to send animation ended messages.
26 @private
27 base::scoped_nsobject<NSAnimation> currentAnimation_;
28 id<ViewResizer> resizeDelegate_; // weak, usually owns us
31 // Properties for bindings.
32 @property(assign, nonatomic) id delegate;
33 @property(assign, nonatomic) id<ViewResizer> resizeDelegate;
35 // Gets the current height of the view. If an animation is currently running,
36 // this will give the current height at the time of the call, not the target
37 // height at the end of the animation.
38 - (CGFloat)height;
40 // Sets the height of the view immediately. Cancels any running animations.
41 - (void)setHeight:(CGFloat)newHeight;
43 // Starts a new animation to the given |newHeight| for the given |duration|.
44 // Cancels any running animations.
45 - (void)animateToNewHeight:(CGFloat)newHeight
46 duration:(NSTimeInterval)duration;
48 // Cancels any running animations, leaving the view at its current
49 // (mid-animation) height.
50 - (void)stopAnimation;
52 // Gets the progress of any current animation.
53 - (NSAnimationProgress)currentAnimationProgress;
55 @end
57 #endif // CHROME_BROWSER_UI_COCOA_ANIMATABLE_VIEW_H_