OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/ui/cocoa/profiles/avatar_button_controller.h" | 5 #import "chrome/browser/ui/cocoa/profiles/avatar_button_controller.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/mac/scoped_nsobject.h" | 8 #include "base/mac/scoped_nsobject.h" |
9 #include "base/strings/sys_string_conversions.h" | 9 #include "base/strings/sys_string_conversions.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
11 #include "chrome/browser/profiles/profile_manager.h" | 11 #include "chrome/browser/profiles/profile_manager.h" |
12 #include "chrome/browser/profiles/profiles_state.h" | 12 #include "chrome/browser/profiles/profiles_state.h" |
13 #include "chrome/browser/ui/browser.h" | 13 #include "chrome/browser/ui/browser.h" |
14 #include "chrome/browser/ui/browser_window.h" | 14 #include "chrome/browser/ui/browser_window.h" |
15 #import "chrome/browser/ui/cocoa/base_bubble_controller.h" | 15 #import "chrome/browser/ui/cocoa/base_bubble_controller.h" |
16 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" | 16 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
17 #include "chrome/browser/ui/cocoa/info_bubble_window.h" | 17 #include "chrome/browser/ui/cocoa/info_bubble_window.h" |
18 #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h" | 18 #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h" |
19 #include "chrome/common/chrome_switches.h" | 19 #include "chrome/common/chrome_switches.h" |
20 #include "chrome/grit/generated_resources.h" | 20 #include "chrome/grit/generated_resources.h" |
21 #include "chrome/grit/theme_resources.h" | 21 #include "chrome/grit/theme_resources.h" |
22 #include "components/signin/core/common/profile_management_switches.h" | 22 #include "components/signin/core/common/profile_management_switches.h" |
23 #import "testing/gtest_mac.h" | 23 #import "testing/gtest_mac.h" |
| 24 #include "ui/base/material_design/material_design_controller.h" |
24 #include "ui/base/resource/resource_bundle.h" | 25 #include "ui/base/resource/resource_bundle.h" |
25 | 26 |
26 // Defined in the AvatarButtonController implementation. | 27 // Defined in the AvatarButtonController implementation. |
27 @interface AvatarButtonController (ExposedForTesting) | 28 @interface AvatarButtonController (ExposedForTesting) |
28 - (void)setErrorStatus:(BOOL)hasError; | 29 - (void)setErrorStatus:(BOOL)hasError; |
29 @end | 30 @end |
30 | 31 |
31 // Subclassing AvatarButtonController to be able to control the state of | 32 // Subclassing AvatarButtonController to be able to control the state of |
32 // keyboard modifierFlags. | 33 // keyboard modifierFlags. |
33 @interface AvatarButtonControllerForTesting : AvatarButtonController { | 34 @interface AvatarButtonControllerForTesting : AvatarButtonController { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 TEST_F(AvatarButtonControllerTest, ProfileButtonWithErrorShown) { | 100 TEST_F(AvatarButtonControllerTest, ProfileButtonWithErrorShown) { |
100 // Create a second profile, to force the button to display the profile name. | 101 // Create a second profile, to force the button to display the profile name. |
101 testing_profile_manager()->CreateTestingProfile("batman"); | 102 testing_profile_manager()->CreateTestingProfile("batman"); |
102 | 103 |
103 EXPECT_EQ(0, [button() image].size.width); | 104 EXPECT_EQ(0, [button() image].size.width); |
104 [controller() setErrorStatus:true]; | 105 [controller() setErrorStatus:true]; |
105 | 106 |
106 ASSERT_FALSE([view() isHidden]); | 107 ASSERT_FALSE([view() isHidden]); |
107 EXPECT_NSEQ(@"Person 1", [button() title]); | 108 EXPECT_NSEQ(@"Person 1", [button() title]); |
108 | 109 |
109 // If the button has an authentication error, it should display an error icon. | 110 // If the button has an authentication error, it should display an error |
110 int errorWidth = ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed( | 111 // icon. If in the MD, the icon size should be 16. |
111 IDR_ICON_PROFILES_AVATAR_BUTTON_ERROR).Width(); | 112 int errorWidth = |
| 113 ui::MaterialDesignController::IsModeMaterial() |
| 114 ? 16 |
| 115 : ui::ResourceBundle::GetSharedInstance() |
| 116 .GetNativeImageNamed(IDR_ICON_PROFILES_AVATAR_BUTTON_ERROR) |
| 117 .Width(); |
| 118 |
112 EXPECT_EQ(errorWidth, [button() image].size.width); | 119 EXPECT_EQ(errorWidth, [button() image].size.width); |
113 } | 120 } |
114 | 121 |
115 TEST_F(AvatarButtonControllerTest, DoubleOpen) { | 122 TEST_F(AvatarButtonControllerTest, DoubleOpen) { |
116 EXPECT_FALSE([controller() menuController]); | 123 EXPECT_FALSE([controller() menuController]); |
117 | 124 |
118 [button() performClick:button()]; | 125 [button() performClick:button()]; |
119 | 126 |
120 BaseBubbleController* menu = [controller() menuController]; | 127 BaseBubbleController* menu = [controller() menuController]; |
121 EXPECT_TRUE(menu); | 128 EXPECT_TRUE(menu); |
(...skipping 30 matching lines...) Expand all Loading... |
152 BaseBubbleController* menu = [controller() menuController]; | 159 BaseBubbleController* menu = [controller() menuController]; |
153 EXPECT_TRUE(menu); | 160 EXPECT_TRUE(menu); |
154 EXPECT_TRUE([menu isKindOfClass:[ProfileChooserController class]]); | 161 EXPECT_TRUE([menu isKindOfClass:[ProfileChooserController class]]); |
155 | 162 |
156 // Do not animate out because that is hard to test around. | 163 // Do not animate out because that is hard to test around. |
157 static_cast<InfoBubbleWindow*>(menu.window).allowedAnimations = | 164 static_cast<InfoBubbleWindow*>(menu.window).allowedAnimations = |
158 info_bubble::kAnimateNone; | 165 info_bubble::kAnimateNone; |
159 [menu close]; | 166 [menu close]; |
160 EXPECT_FALSE([controller() menuController]); | 167 EXPECT_FALSE([controller() menuController]); |
161 } | 168 } |
OLD | NEW |