| Index: chrome/browser/ui/cocoa/tabs/media_indicator_button_unittest.mm
|
| diff --git a/chrome/browser/ui/cocoa/tabs/media_indicator_view_unittest.mm b/chrome/browser/ui/cocoa/tabs/media_indicator_button_unittest.mm
|
| similarity index 15%
|
| rename from chrome/browser/ui/cocoa/tabs/media_indicator_view_unittest.mm
|
| rename to chrome/browser/ui/cocoa/tabs/media_indicator_button_unittest.mm
|
| index bef0bc4b956a1d4d5bf048c41cf90ab2a49b040f..76ce8093afa9706d4eb16c72b176dbbe40791265 100644
|
| --- a/chrome/browser/ui/cocoa/tabs/media_indicator_view_unittest.mm
|
| +++ b/chrome/browser/ui/cocoa/tabs/media_indicator_button_unittest.mm
|
| @@ -2,33 +2,89 @@
|
| // 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/tabs/media_indicator_view.h"
|
| +#import "chrome/browser/ui/cocoa/tabs/media_indicator_button.h"
|
|
|
| +#include <string>
|
| +
|
| +#include "base/command_line.h"
|
| #include "base/mac/scoped_nsobject.h"
|
| #include "base/message_loop/message_loop.h"
|
| #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
|
| +#include "chrome/common/chrome_switches.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "testing/platform_test.h"
|
|
|
| +// A simple target to confirm an action was invoked.
|
| +@interface MediaIndicatorButtonTestTarget : NSObject {
|
| + @private
|
| + int count_;
|
| +}
|
| +@property(readonly, nonatomic) int count;
|
| +- (void)incrementCount:(id)sender;
|
| +@end
|
| +
|
| +@implementation MediaIndicatorButtonTestTarget
|
| +@synthesize count = count_;
|
| +- (void)incrementCount:(id)sender {
|
| + ++count_;
|
| +}
|
| +@end
|
| +
|
| namespace {
|
|
|
| -class MediaIndicatorViewTest : public CocoaTest {
|
| +class MediaIndicatorButtonTest : public CocoaTest {
|
| public:
|
| - MediaIndicatorViewTest() {
|
| - view_.reset([[MediaIndicatorView alloc] init]);
|
| - EXPECT_TRUE(view_ != nil);
|
| - EXPECT_EQ(TAB_MEDIA_STATE_NONE, [view_ animatingMediaState]);
|
| + MediaIndicatorButtonTest() {
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + std::string("--") + switches::kEnableTabAudioMuting);
|
| +
|
| + // Create the MediaIndicatorButton and add it to a view.
|
| + button_.reset([[MediaIndicatorButton alloc] init]);
|
| + EXPECT_TRUE(button_ != nil);
|
| + [[test_window() contentView] addSubview:button_.get()];
|
| +
|
| + // Initially the button is disabled and showing no indicator.
|
| + EXPECT_EQ(TAB_MEDIA_STATE_NONE, [button_ showingMediaState]);
|
| + EXPECT_FALSE([button_ isEnabled]);
|
| +
|
| + // Register target to be notified of clicks.
|
| + base::scoped_nsobject<MediaIndicatorButtonTestTarget> clickTarget(
|
| + [[MediaIndicatorButtonTestTarget alloc] init]);
|
| + EXPECT_EQ(0, [clickTarget count]);
|
| + [button_ setClickTarget:clickTarget withAction:@selector(incrementCount:)];
|
| +
|
| + // Transition to audio indicator mode, and expect button is enabled.
|
| + [button_ transitionToMediaState:TAB_MEDIA_STATE_AUDIO_PLAYING];
|
| + EXPECT_EQ(TAB_MEDIA_STATE_AUDIO_PLAYING, [button_ showingMediaState]);
|
| + EXPECT_TRUE([button_ isEnabled]);
|
| +
|
| + // Click, and expect one click notification.
|
| + EXPECT_EQ(0, [clickTarget count]);
|
| + [button_ performClick:button_];
|
| + EXPECT_EQ(1, [clickTarget count]);
|
|
|
| - [[test_window() contentView] addSubview:view_.get()];
|
| + // Transition to audio muting mode, and expect button is still enabled. A
|
| + // click should result in another click notification.
|
| + [button_ transitionToMediaState:TAB_MEDIA_STATE_AUDIO_MUTING];
|
| + EXPECT_EQ(TAB_MEDIA_STATE_AUDIO_MUTING, [button_ showingMediaState]);
|
| + EXPECT_TRUE([button_ isEnabled]);
|
| + [button_ performClick:button_];
|
| + EXPECT_EQ(2, [clickTarget count]);
|
|
|
| - [view_ updateIndicator:TAB_MEDIA_STATE_AUDIO_PLAYING];
|
| - EXPECT_EQ(TAB_MEDIA_STATE_AUDIO_PLAYING, [view_ animatingMediaState]);
|
| + // Transition to capturing mode. Now, the button is disabled since it
|
| + // should only be drawing the indicator icon (i.e., there is nothing to
|
| + // mute). A click should NOT result in another click notification.
|
| + [button_ transitionToMediaState:TAB_MEDIA_STATE_CAPTURING];
|
| + EXPECT_EQ(TAB_MEDIA_STATE_CAPTURING, [button_ showingMediaState]);
|
| + EXPECT_FALSE([button_ isEnabled]);
|
| + [button_ performClick:button_];
|
| + EXPECT_EQ(2, [clickTarget count]);
|
| }
|
|
|
| - base::scoped_nsobject<MediaIndicatorView> view_;
|
| + base::scoped_nsobject<MediaIndicatorButton> button_;
|
| base::MessageLoopForUI message_loop_; // Needed for gfx::Animation.
|
| };
|
|
|
| -TEST_VIEW(MediaIndicatorViewTest, view_)
|
| +TEST_VIEW(MediaIndicatorButtonTest, button_)
|
|
|
| } // namespace
|
|
|