| Index: chrome/browser/ui/cocoa/tabs/media_indicator_button.h
|
| diff --git a/chrome/browser/ui/cocoa/tabs/media_indicator_view.h b/chrome/browser/ui/cocoa/tabs/media_indicator_button.h
|
| similarity index 13%
|
| rename from chrome/browser/ui/cocoa/tabs/media_indicator_view.h
|
| rename to chrome/browser/ui/cocoa/tabs/media_indicator_button.h
|
| index 9dd91ebdeff75ae424fbe23f1eea949fba8b5089..61f21a8548b7a24298aa0c8e98b24028f37fc9f2 100644
|
| --- a/chrome/browser/ui/cocoa/tabs/media_indicator_view.h
|
| +++ b/chrome/browser/ui/cocoa/tabs/media_indicator_button.h
|
| @@ -2,46 +2,76 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef CHROME_BROWSER_UI_COCOA_TABS_MEDIA_INDICATOR_VIEW_H_
|
| -#define CHROME_BROWSER_UI_COCOA_TABS_MEDIA_INDICATOR_VIEW_H_
|
| -
|
| -#import <Cocoa/Cocoa.h>
|
| +#ifndef CHROME_BROWSER_UI_COCOA_TABS_MEDIA_INDICATOR_BUTTON_H_
|
| +#define CHROME_BROWSER_UI_COCOA_TABS_MEDIA_INDICATOR_BUTTON_H_
|
|
|
| +#import "base/mac/scoped_nsobject.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "chrome/browser/ui/tabs/tab_utils.h"
|
| -
|
| -class MediaIndicatorViewAnimationDelegate;
|
| +#import "ui/base/cocoa/hover_button.h"
|
|
|
| namespace gfx {
|
| class Animation;
|
| +class AnimationDelegate;
|
| } // namespace gfx
|
|
|
| -@interface MediaIndicatorView : NSImageView {
|
| +// This is an HoverButton subclass that serves as both the media indicator icon
|
| +// (audio, tab capture, etc.), and as a mute button. It is meant to only be
|
| +// used as a subview of TabView.
|
| +//
|
| +// When the indicator is transitioned to the audio playing or muting state, the
|
| +// button functionality is enabled and begins handling mouse events. Otherwise,
|
| +// this view behaves like an image and all mouse events will be handled by the
|
| +// its superview.
|
| +//
|
| +// Note: Send the |-setClickTarget:withAction:| message instead of the
|
| +// |-setTarget:| and |-setAction:| messages to be notified of button clicks.
|
| +@interface MediaIndicatorButton : HoverButton {
|
| @private
|
| + class FadeAnimationDelegate;
|
| +
|
| + // Current TabMediaState. When animating fade-in/out, this reflects the
|
| + // indicator state at the end of the animation.
|
| TabMediaState mediaState_;
|
| - scoped_ptr<MediaIndicatorViewAnimationDelegate> delegate_;
|
| - scoped_ptr<gfx::Animation> animation_;
|
| - TabMediaState animatingMediaState_;
|
| +
|
| + // Media indicator fade-in/out animation (i.e., only on show/hide, not a
|
| + // continuous animation).
|
| + scoped_ptr<gfx::AnimationDelegate> fadeAnimationDelegate_;
|
| + scoped_ptr<gfx::Animation> fadeAnimation_;
|
| + TabMediaState showingMediaState_;
|
| +
|
| + // Target and action invoked whenever a fade-in/out animation completes. This
|
| + // is used by TabController to layout the TabView after an indicator has
|
| + // completely faded out.
|
| + __weak id animationDoneTarget_;
|
| + SEL animationDoneAction_;
|
| +
|
| + // The image to show when the mouse hovers over the button.
|
| + base::scoped_nsobject<NSImage> affordanceImage_;
|
| +
|
| + // Target and action invoked whenever an enabled button is clicked.
|
| + __weak id clickTarget_;
|
| + SEL clickAction_;
|
| }
|
|
|
| -@property(readonly, nonatomic) TabMediaState mediaState;
|
| -@property(readonly, nonatomic) TabMediaState animatingMediaState;
|
| +@property(readonly, nonatomic) TabMediaState showingMediaState;
|
|
|
| -// Initialize a new MediaIndicatorView in TAB_MEDIA_STATE_NONE (i.e., a
|
| +// Initialize a new MediaIndicatorButton in TAB_MEDIA_STATE_NONE (i.e., a
|
| // non-active indicator).
|
| - (id)init;
|
|
|
| -// Starts the animation to transition the indicator to the new |mediaState|.
|
| -- (void)updateIndicator:(TabMediaState)mediaState;
|
| +// Updates button images, starts fade animations, and activates/deactivates
|
| +// button functionality as appropriate.
|
| +- (void)transitionToMediaState:(TabMediaState)nextState;
|
|
|
| -// Register a callback to be invoked whenever the animation completes.
|
| -- (void)setAnimationDoneCallbackObject:(id)anObject withSelector:(SEL)selector;
|
| +// Register a message be sent to |target| whenever fade animations complete. A
|
| +// weak reference on |target| is held.
|
| +- (void)setAnimationDoneTarget:(id)target withAction:(SEL)action;
|
|
|
| -@end
|
| +// Request a message be sent to |target| whenever the enabled button has been
|
| +// clicked. A weak reference on |target| is held.
|
| +- (void)setClickTarget:(id)target withAction:(SEL)action;
|
|
|
| -@interface MediaIndicatorView(TestingAPI)
|
| -// Turns off animations for logic testing.
|
| -- (void)disableAnimations;
|
| @end
|
|
|
| -#endif // CHROME_BROWSER_UI_COCOA_TABS_MEDIA_INDICATOR_VIEW_H_
|
| +#endif // CHROME_BROWSER_UI_COCOA_TABS_MEDIA_INDICATOR_BUTTON_H_
|
|
|