Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / browser / avatar_button_controller_unittest.mm
1 // Copyright 2014 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.
4
5 #import "chrome/browser/ui/cocoa/browser/avatar_button_controller.h"
6
7 #include "base/command_line.h"
8 #include "base/mac/scoped_nsobject.h"
9 #include "base/strings/sys_string_conversions.h"
10 #include "chrome/browser/profiles/profiles_state.h"
11 #include "chrome/browser/profiles/profile_manager.h"
12 #include "chrome/browser/ui/browser.h"
13 #include "chrome/browser/ui/browser_window.h"
14 #import "chrome/browser/ui/cocoa/base_bubble_controller.h"
15 #import "chrome/browser/ui/cocoa/browser/profile_chooser_controller.h"
16 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
17 #include "chrome/browser/ui/cocoa/info_bubble_window.h"
18 #include "chrome/common/chrome_switches.h"
19
20 const char kDefaultProfileName[] = "default";
21
22 class AvatarButtonControllerTest : public CocoaProfileTest {
23  public:
24   virtual void SetUp() OVERRIDE {
25     CommandLine::ForCurrentProcess()->AppendSwitch(
26         switches::kNewProfileManagement);
27     DCHECK(profiles::IsMultipleProfilesEnabled());
28
29     CocoaProfileTest::SetUp();
30     ASSERT_TRUE(browser());
31
32     controller_.reset(
33         [[AvatarButtonController alloc] initWithBrowser:browser()]);
34   }
35
36   virtual void TearDown() OVERRIDE {
37     browser()->window()->Close();
38     CocoaProfileTest::TearDown();
39   }
40
41   NSButton* button() { return [controller_ buttonView]; }
42
43   NSView* view() { return [controller_ view]; }
44
45   AvatarButtonController* controller() { return controller_.get(); }
46
47  private:
48   base::scoped_nsobject<AvatarButtonController> controller_;
49 };
50
51 TEST_F(AvatarButtonControllerTest, ButtonShown) {
52   EXPECT_FALSE([view() isHidden]);
53   EXPECT_EQ(kDefaultProfileName, base::SysNSStringToUTF8([button() title]));
54 }
55
56 TEST_F(AvatarButtonControllerTest, DoubleOpen) {
57   EXPECT_FALSE([controller() menuController]);
58
59   [button() performClick:button()];
60
61   BaseBubbleController* menu = [controller() menuController];
62   EXPECT_TRUE(menu);
63   EXPECT_TRUE([menu isKindOfClass:[ProfileChooserController class]]);
64
65   [button() performClick:button()];
66   EXPECT_EQ(menu, [controller() menuController]);
67
68   // Do not animate out because that is hard to test around.
69   static_cast<InfoBubbleWindow*>(menu.window).allowedAnimations =
70       info_bubble::kAnimateNone;
71   [menu close];
72   EXPECT_FALSE([controller() menuController]);
73 }