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

Side by Side Diff: ash/system/user/tray_user_unittest.cc

Issue 224113005: Eliminate ash::internal namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include <vector> 5 #include <vector>
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/root_window_controller.h" 8 #include "ash/root_window_controller.h"
9 #include "ash/shelf/shelf_layout_manager.h" 9 #include "ash/shelf/shelf_layout_manager.h"
10 #include "ash/shell.h" 10 #include "ash/shell.h"
11 #include "ash/shell_delegate.h" 11 #include "ash/shell_delegate.h"
12 #include "ash/system/tray/system_tray.h" 12 #include "ash/system/tray/system_tray.h"
13 #include "ash/system/tray/tray_constants.h" 13 #include "ash/system/tray/tray_constants.h"
14 #include "ash/system/user/tray_user.h" 14 #include "ash/system/user/tray_user.h"
15 #include "ash/system/user/tray_user_separator.h" 15 #include "ash/system/user/tray_user_separator.h"
16 #include "ash/test/ash_test_base.h" 16 #include "ash/test/ash_test_base.h"
17 #include "ash/test/test_session_state_delegate.h" 17 #include "ash/test/test_session_state_delegate.h"
18 #include "ash/test/test_shell_delegate.h" 18 #include "ash/test/test_shell_delegate.h"
19 #include "base/command_line.h" 19 #include "base/command_line.h"
20 #include "ui/aura/test/event_generator.h" 20 #include "ui/aura/test/event_generator.h"
21 #include "ui/gfx/animation/animation_container_element.h" 21 #include "ui/gfx/animation/animation_container_element.h"
22 #include "ui/views/view.h" 22 #include "ui/views/view.h"
23 #include "ui/views/widget/widget.h" 23 #include "ui/views/widget/widget.h"
24 24
25 namespace ash { 25 namespace ash {
26 namespace internal {
27 26
28 class TrayUserTest : public ash::test::AshTestBase { 27 class TrayUserTest : public ash::test::AshTestBase {
29 public: 28 public:
30 TrayUserTest(); 29 TrayUserTest();
31 30
32 // testing::Test: 31 // testing::Test:
33 virtual void SetUp() OVERRIDE; 32 virtual void SetUp() OVERRIDE;
34 33
35 // This has to be called prior to first use with the proper configuration. 34 // This has to be called prior to first use with the proper configuration.
36 void InitializeParameters(int users_logged_in, bool multiprofile); 35 void InitializeParameters(int users_logged_in, bool multiprofile);
37 36
38 // Show the system tray menu using the provided event generator. 37 // Show the system tray menu using the provided event generator.
39 void ShowTrayMenu(aura::test::EventGenerator* generator); 38 void ShowTrayMenu(aura::test::EventGenerator* generator);
40 39
41 // Move the mouse over the user item. 40 // Move the mouse over the user item.
42 void MoveOverUserItem(aura::test::EventGenerator* generator, int index); 41 void MoveOverUserItem(aura::test::EventGenerator* generator, int index);
43 42
44 // Click on the user item. Note that the tray menu needs to be shown. 43 // Click on the user item. Note that the tray menu needs to be shown.
45 void ClickUserItem(aura::test::EventGenerator* generator, int index); 44 void ClickUserItem(aura::test::EventGenerator* generator, int index);
46 45
47 // Accessors to various system components. 46 // Accessors to various system components.
48 ShelfLayoutManager* shelf() { return shelf_; } 47 ShelfLayoutManager* shelf() { return shelf_; }
49 SystemTray* tray() { return tray_; } 48 SystemTray* tray() { return tray_; }
50 ash::test::TestSessionStateDelegate* delegate() { return delegate_; } 49 ash::test::TestSessionStateDelegate* delegate() { return delegate_; }
51 ash::internal::TrayUser* tray_user(int index) { return tray_user_[index]; } 50 ash::TrayUser* tray_user(int index) { return tray_user_[index]; }
52 ash::internal::TrayUserSeparator* tray_user_separator() { 51 ash::TrayUserSeparator* tray_user_separator() { return tray_user_separator_; }
53 return tray_user_separator_;
54 }
55 52
56 private: 53 private:
57 ShelfLayoutManager* shelf_; 54 ShelfLayoutManager* shelf_;
58 SystemTray* tray_; 55 SystemTray* tray_;
59 ash::test::TestSessionStateDelegate* delegate_; 56 ash::test::TestSessionStateDelegate* delegate_;
60 57
61 // Note that the ownership of these items is on the shelf. 58 // Note that the ownership of these items is on the shelf.
62 std::vector<ash::internal::TrayUser*> tray_user_; 59 std::vector<ash::TrayUser*> tray_user_;
63 60
64 // The separator between the tray users and the rest of the menu. 61 // The separator between the tray users and the rest of the menu.
65 // Note: The item will get owned by the shelf. 62 // Note: The item will get owned by the shelf.
66 TrayUserSeparator* tray_user_separator_; 63 TrayUserSeparator* tray_user_separator_;
67 64
68 DISALLOW_COPY_AND_ASSIGN(TrayUserTest); 65 DISALLOW_COPY_AND_ASSIGN(TrayUserTest);
69 }; 66 };
70 67
71 TrayUserTest::TrayUserTest() 68 TrayUserTest::TrayUserTest()
72 : shelf_(NULL), 69 : shelf_(NULL),
(...skipping 20 matching lines...) Expand all
93 // after everything was created. 90 // after everything was created.
94 delegate_->set_logged_in_users(users_logged_in); 91 delegate_->set_logged_in_users(users_logged_in);
95 ash::test::TestShellDelegate* shell_delegate = 92 ash::test::TestShellDelegate* shell_delegate =
96 static_cast<ash::test::TestShellDelegate*>( 93 static_cast<ash::test::TestShellDelegate*>(
97 ash::Shell::GetInstance()->delegate()); 94 ash::Shell::GetInstance()->delegate());
98 shell_delegate->set_multi_profiles_enabled(multiprofile); 95 shell_delegate->set_multi_profiles_enabled(multiprofile);
99 96
100 // Instead of using the existing tray panels we create new ones which makes 97 // Instead of using the existing tray panels we create new ones which makes
101 // the access easier. 98 // the access easier.
102 for (int i = 0; i < delegate_->GetMaximumNumberOfLoggedInUsers(); i++) { 99 for (int i = 0; i < delegate_->GetMaximumNumberOfLoggedInUsers(); i++) {
103 tray_user_.push_back(new ash::internal::TrayUser(tray_, i)); 100 tray_user_.push_back(new ash::TrayUser(tray_, i));
104 tray_->AddTrayItem(tray_user_[i]); 101 tray_->AddTrayItem(tray_user_[i]);
105 } 102 }
106 // We then add also the separator. 103 // We then add also the separator.
107 tray_user_separator_ = new ash::internal::TrayUserSeparator(tray_); 104 tray_user_separator_ = new ash::TrayUserSeparator(tray_);
108 tray_->AddTrayItem(tray_user_separator_); 105 tray_->AddTrayItem(tray_user_separator_);
109 } 106 }
110 107
111 void TrayUserTest::ShowTrayMenu(aura::test::EventGenerator* generator) { 108 void TrayUserTest::ShowTrayMenu(aura::test::EventGenerator* generator) {
112 gfx::Point center = tray()->GetBoundsInScreen().CenterPoint(); 109 gfx::Point center = tray()->GetBoundsInScreen().CenterPoint();
113 110
114 generator->MoveMouseTo(center.x(), center.y()); 111 generator->MoveMouseTo(center.x(), center.y());
115 EXPECT_FALSE(tray()->IsAnyBubbleVisible()); 112 EXPECT_FALSE(tray()->IsAnyBubbleVisible());
116 generator->ClickLeftButton(); 113 generator->ClickLeftButton();
117 } 114 }
(...skipping 27 matching lines...) Expand all
145 // separators are being created. 142 // separators are being created.
146 TEST_F(TrayUserTest, SingleUserModeDoesNotAllowAddingUser) { 143 TEST_F(TrayUserTest, SingleUserModeDoesNotAllowAddingUser) {
147 InitializeParameters(1, false); 144 InitializeParameters(1, false);
148 145
149 // Move the mouse over the status area and click to open the status menu. 146 // Move the mouse over the status area and click to open the status menu.
150 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 147 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
151 148
152 EXPECT_FALSE(tray()->IsAnyBubbleVisible()); 149 EXPECT_FALSE(tray()->IsAnyBubbleVisible());
153 150
154 for (int i = 0; i < delegate()->GetMaximumNumberOfLoggedInUsers(); i++) 151 for (int i = 0; i < delegate()->GetMaximumNumberOfLoggedInUsers(); i++)
155 EXPECT_EQ(ash::internal::TrayUser::HIDDEN, 152 EXPECT_EQ(ash::TrayUser::HIDDEN, tray_user(i)->GetStateForTest());
156 tray_user(i)->GetStateForTest());
157 EXPECT_FALSE(tray_user_separator()->separator_shown()); 153 EXPECT_FALSE(tray_user_separator()->separator_shown());
158 154
159 ShowTrayMenu(&generator); 155 ShowTrayMenu(&generator);
160 156
161 EXPECT_TRUE(tray()->HasSystemBubble()); 157 EXPECT_TRUE(tray()->HasSystemBubble());
162 EXPECT_TRUE(tray()->IsAnyBubbleVisible()); 158 EXPECT_TRUE(tray()->IsAnyBubbleVisible());
163 159
164 for (int i = 0; i < delegate()->GetMaximumNumberOfLoggedInUsers(); i++) 160 for (int i = 0; i < delegate()->GetMaximumNumberOfLoggedInUsers(); i++)
165 EXPECT_EQ(i == 0 ? ash::internal::TrayUser::SHOWN : 161 EXPECT_EQ(i == 0 ? ash::TrayUser::SHOWN : ash::TrayUser::HIDDEN,
166 ash::internal::TrayUser::HIDDEN,
167 tray_user(i)->GetStateForTest()); 162 tray_user(i)->GetStateForTest());
168 EXPECT_FALSE(tray_user_separator()->separator_shown()); 163 EXPECT_FALSE(tray_user_separator()->separator_shown());
169 tray()->CloseSystemBubble(); 164 tray()->CloseSystemBubble();
170 } 165 }
171 166
172 #if defined(OS_CHROMEOS) 167 #if defined(OS_CHROMEOS)
173 // Make sure that in multi user mode the user panel can be activated and there 168 // Make sure that in multi user mode the user panel can be activated and there
174 // will be one panel for each user plus one additional separator at the end. 169 // will be one panel for each user plus one additional separator at the end.
175 // Note: the mouse watcher (for automatic closing upon leave) cannot be tested 170 // Note: the mouse watcher (for automatic closing upon leave) cannot be tested
176 // here since it does not work with the event system in unit tests. 171 // here since it does not work with the event system in unit tests.
(...skipping 16 matching lines...) Expand all
193 EXPECT_FALSE(tray_user(i)->GetStateForTest()); 188 EXPECT_FALSE(tray_user(i)->GetStateForTest());
194 EXPECT_FALSE(tray_user_separator()->separator_shown()); 189 EXPECT_FALSE(tray_user_separator()->separator_shown());
195 // After clicking on the tray the menu should get shown and for each logged 190 // After clicking on the tray the menu should get shown and for each logged
196 // in user we should get a visible item. In addition, the separator should 191 // in user we should get a visible item. In addition, the separator should
197 // show up when we reach more then one user. 192 // show up when we reach more then one user.
198 ShowTrayMenu(&generator); 193 ShowTrayMenu(&generator);
199 194
200 EXPECT_TRUE(tray()->HasSystemBubble()); 195 EXPECT_TRUE(tray()->HasSystemBubble());
201 EXPECT_TRUE(tray()->IsAnyBubbleVisible()); 196 EXPECT_TRUE(tray()->IsAnyBubbleVisible());
202 for (int i = 0; i < max_users; i++) { 197 for (int i = 0; i < max_users; i++) {
203 EXPECT_EQ(i < j ? ash::internal::TrayUser::SHOWN : 198 EXPECT_EQ(i < j ? ash::TrayUser::SHOWN : ash::TrayUser::HIDDEN,
204 ash::internal::TrayUser::HIDDEN,
205 tray_user(i)->GetStateForTest()); 199 tray_user(i)->GetStateForTest());
206 } 200 }
207 201
208 // Check the visibility of the separator. 202 // Check the visibility of the separator.
209 EXPECT_EQ(j > 1 ? true : false, tray_user_separator()->separator_shown()); 203 EXPECT_EQ(j > 1 ? true : false, tray_user_separator()->separator_shown());
210 204
211 // Move the mouse over the user item and it should hover. 205 // Move the mouse over the user item and it should hover.
212 MoveOverUserItem(&generator, 0); 206 MoveOverUserItem(&generator, 0);
213 EXPECT_EQ(ash::internal::TrayUser::HOVERED, 207 EXPECT_EQ(ash::TrayUser::HOVERED, tray_user(0)->GetStateForTest());
214 tray_user(0)->GetStateForTest());
215 for (int i = 1; i < max_users; i++) { 208 for (int i = 1; i < max_users; i++) {
216 EXPECT_EQ(i < j ? ash::internal::TrayUser::SHOWN : 209 EXPECT_EQ(i < j ? ash::TrayUser::SHOWN : ash::TrayUser::HIDDEN,
217 ash::internal::TrayUser::HIDDEN,
218 tray_user(i)->GetStateForTest()); 210 tray_user(i)->GetStateForTest());
219 } 211 }
220 212
221 // Check that clicking the button allows to add item if we have still room 213 // Check that clicking the button allows to add item if we have still room
222 // for one more user. 214 // for one more user.
223 ClickUserItem(&generator, 0); 215 ClickUserItem(&generator, 0);
224 EXPECT_EQ(j == max_users ? 216 EXPECT_EQ(j == max_users ? ash::TrayUser::ACTIVE_BUT_DISABLED
225 ash::internal::TrayUser::ACTIVE_BUT_DISABLED : 217 : ash::TrayUser::ACTIVE,
226 ash::internal::TrayUser::ACTIVE,
227 tray_user(0)->GetStateForTest()); 218 tray_user(0)->GetStateForTest());
228 219
229 // Click the button again to see that the menu goes away. 220 // Click the button again to see that the menu goes away.
230 ClickUserItem(&generator, 0); 221 ClickUserItem(&generator, 0);
231 EXPECT_EQ(ash::internal::TrayUser::HOVERED, 222 EXPECT_EQ(ash::TrayUser::HOVERED, tray_user(0)->GetStateForTest());
232 tray_user(0)->GetStateForTest());
233 223
234 // Close and check that everything is deleted. 224 // Close and check that everything is deleted.
235 tray()->CloseSystemBubble(); 225 tray()->CloseSystemBubble();
236 EXPECT_FALSE(tray()->IsAnyBubbleVisible()); 226 EXPECT_FALSE(tray()->IsAnyBubbleVisible());
237 for (int i = 0; i < delegate()->GetMaximumNumberOfLoggedInUsers(); i++) 227 for (int i = 0; i < delegate()->GetMaximumNumberOfLoggedInUsers(); i++)
238 EXPECT_EQ(ash::internal::TrayUser::HIDDEN, 228 EXPECT_EQ(ash::TrayUser::HIDDEN, tray_user(i)->GetStateForTest());
239 tray_user(i)->GetStateForTest());
240 } 229 }
241 } 230 }
242 231
243 // Make sure that user changing gets properly executed. 232 // Make sure that user changing gets properly executed.
244 TEST_F(TrayUserTest, MutiUserModeButtonClicks) { 233 TEST_F(TrayUserTest, MutiUserModeButtonClicks) {
245 // Have two users. 234 // Have two users.
246 InitializeParameters(2, true); 235 InitializeParameters(2, true);
247 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 236 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
248 ShowTrayMenu(&generator); 237 ShowTrayMenu(&generator);
249 238
250 // Switch to a new user - which has a capitalized name. 239 // Switch to a new user - which has a capitalized name.
251 ClickUserItem(&generator, 1); 240 ClickUserItem(&generator, 1);
252 EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserID(1)); 241 EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserID(1));
253 // Since the name is capitalized, the email should be different then the 242 // Since the name is capitalized, the email should be different then the
254 // user_id. 243 // user_id.
255 EXPECT_NE(delegate()->get_activated_user(), delegate()->GetUserEmail(1)); 244 EXPECT_NE(delegate()->get_activated_user(), delegate()->GetUserEmail(1));
256 tray()->CloseSystemBubble(); 245 tray()->CloseSystemBubble();
257 } 246 }
258 247
259 #endif 248 #endif
260 249
261 } // namespace internal
262 } // namespace ash 250 } // namespace ash
OLDNEW
« no previous file with comments | « ash/system/user/tray_user_separator.cc ('k') | ash/system/web_notification/web_notification_tray.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698