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

Unified Diff: chrome/browser/ui/cocoa/tabs/media_indicator_button_unittest.mm

Issue 688523002: [Cocoa] Tab audio mute control, behind a switch (off by default). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Prevent TabStripController from unconditionally causing creation of MediaIndicatorButton. Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698