Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/user/tray_user.h" | 13 #include "ash/system/user/tray_user.h" |
| 14 #include "ash/system/user/tray_user_separator.h" | 14 #include "ash/system/user/tray_user_separator.h" |
| 15 #include "ash/test/ash_test_base.h" | 15 #include "ash/test/ash_test_base.h" |
| 16 #include "ash/test/test_session_state_delegate.h" | 16 #include "ash/test/test_session_state_delegate.h" |
| 17 #include "ash/test/test_shell_delegate.h" | 17 #include "ash/test/test_shell_delegate.h" |
| 18 #include "base/command_line.h" | 18 #include "base/command_line.h" |
| 19 #include "ui/aura/test/event_generator.h" | 19 #include "ui/aura/test/event_generator.h" |
| 20 #include "ui/gfx/animation/animation_container_element.h" | 20 #include "ui/gfx/animation/animation_container_element.h" |
| 21 #include "ui/views/view.h" | 21 #include "ui/views/view.h" |
| 22 #include "ui/views/widget/widget.h" | 22 #include "ui/views/widget/widget.h" |
| 23 | 23 |
| 24 #if defined(OS_CHROMEOS) | 24 #if defined(OS_CHROMEOS) |
| 25 #include "ash/system/tray/system_tray_notifier.h" | 25 #include "ash/system/tray/system_tray_notifier.h" |
|
oshima
2014/02/28 23:29:33
you probably don't need this anymore?
Mr4D (OOO till 08-26)
2014/03/01 17:21:34
Done.
| |
| 26 #endif | 26 #endif |
| 27 | 27 |
| 28 namespace ash { | 28 namespace ash { |
| 29 namespace internal { | 29 namespace internal { |
| 30 | 30 |
| 31 class TrayUserTest : public ash::test::AshTestBase { | 31 class TrayUserTest : public ash::test::AshTestBase { |
| 32 public: | 32 public: |
| 33 TrayUserTest(); | 33 TrayUserTest(); |
| 34 | 34 |
| 35 // testing::Test: | 35 // testing::Test: |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 64 // Note that the ownership of these items is on the shelf. | 64 // Note that the ownership of these items is on the shelf. |
| 65 std::vector<ash::internal::TrayUser*> tray_user_; | 65 std::vector<ash::internal::TrayUser*> tray_user_; |
| 66 | 66 |
| 67 // The separator between the tray users and the rest of the menu. | 67 // The separator between the tray users and the rest of the menu. |
| 68 // Note: The item will get owned by the shelf. | 68 // Note: The item will get owned by the shelf. |
| 69 TrayUserSeparator* tray_user_separator_; | 69 TrayUserSeparator* tray_user_separator_; |
| 70 | 70 |
| 71 DISALLOW_COPY_AND_ASSIGN(TrayUserTest); | 71 DISALLOW_COPY_AND_ASSIGN(TrayUserTest); |
| 72 }; | 72 }; |
| 73 | 73 |
| 74 #if defined(OS_CHROMEOS) | |
| 75 // The tray user test which tests functionality where multiple tray items are | |
| 76 // visible in the system tray. | |
| 77 class MultiTrayUserTest : public TrayUserTest { | |
| 78 public: | |
| 79 MultiTrayUserTest() {} | |
| 80 | |
| 81 virtual void SetUp() OVERRIDE { | |
| 82 CommandLine* command_line = CommandLine::ForCurrentProcess(); | |
| 83 command_line->AppendSwitch(ash::switches::kAshEnableMultiUserTray); | |
| 84 TrayUserTest::SetUp(); | |
| 85 } | |
| 86 | |
| 87 private: | |
| 88 DISALLOW_COPY_AND_ASSIGN(MultiTrayUserTest); | |
| 89 }; | |
| 90 #endif | |
| 91 | |
| 92 TrayUserTest::TrayUserTest() | 74 TrayUserTest::TrayUserTest() |
| 93 : shelf_(NULL), | 75 : shelf_(NULL), |
| 94 tray_(NULL), | 76 tray_(NULL), |
| 95 delegate_(NULL), | 77 delegate_(NULL), |
| 96 tray_user_separator_(NULL) { | 78 tray_user_separator_(NULL) { |
| 97 } | 79 } |
| 98 | 80 |
| 99 void TrayUserTest::SetUp() { | 81 void TrayUserTest::SetUp() { |
| 100 ash::test::AshTestBase::SetUp(); | 82 ash::test::AshTestBase::SetUp(); |
| 101 shelf_ = Shell::GetPrimaryRootWindowController()->GetShelfLayoutManager(); | 83 shelf_ = Shell::GetPrimaryRootWindowController()->GetShelfLayoutManager(); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 259 | 241 |
| 260 // Switch to a new user - which has a capitalized name. | 242 // Switch to a new user - which has a capitalized name. |
| 261 ClickUserItem(&generator, 1); | 243 ClickUserItem(&generator, 1); |
| 262 EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserID(1)); | 244 EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserID(1)); |
| 263 // Since the name is capitalized, the email should be different then the | 245 // Since the name is capitalized, the email should be different then the |
| 264 // user_id. | 246 // user_id. |
| 265 EXPECT_NE(delegate()->get_activated_user(), delegate()->GetUserEmail(1)); | 247 EXPECT_NE(delegate()->get_activated_user(), delegate()->GetUserEmail(1)); |
| 266 tray()->CloseSystemBubble(); | 248 tray()->CloseSystemBubble(); |
| 267 } | 249 } |
| 268 | 250 |
| 269 // Make sure that we show items for all users in the tray accordingly. | |
| 270 TEST_F(MultiTrayUserTest, CheckTrayUserItems) { | |
| 271 InitializeParameters(1, true); | |
| 272 | |
| 273 int max_users = delegate()->GetMaximumNumberOfLoggedInUsers(); | |
| 274 // Checking now for each amount of users that the proper items are visible in | |
| 275 // the tray. The proper item is hereby: | |
| 276 // 2 -> User #1 | |
| 277 // 1 -> User #2 | |
| 278 // 0 -> User #3 | |
| 279 // Note: Tray items are required to populate system tray items as well as the | |
| 280 // system tray menu. The system tray menu changes it's appearance with the | |
| 281 // addition of more users, but the system tray does not create new items after | |
| 282 // it got created. | |
| 283 for (int present_users = 1; present_users <= max_users; ++present_users) { | |
| 284 // We simulate the user addition by telling the delegate the new number of | |
| 285 // users, then change all user tray items and finally tell the tray to | |
| 286 // re-layout itself. | |
| 287 delegate()->set_logged_in_users(present_users); | |
| 288 Shell::GetInstance()->system_tray_notifier()->NotifyUserAddedToSession(); | |
| 289 tray()->Layout(); | |
| 290 | |
| 291 // Check that the tray items are being shown in the reverse order. | |
| 292 for (int i = 0; i < max_users; i++) { | |
| 293 gfx::Rect rect = | |
| 294 tray()->GetTrayItemViewForTest(tray_user(i))->GetBoundsInScreen(); | |
| 295 if (max_users - 1 - i < present_users) | |
| 296 EXPECT_FALSE(rect.IsEmpty()); | |
| 297 else | |
| 298 EXPECT_TRUE(rect.IsEmpty()); | |
| 299 } | |
| 300 } | |
| 301 | |
| 302 // Click on the last item to see that the user changes. | |
| 303 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | |
| 304 generator.set_async(false); | |
| 305 | |
| 306 // Switch to a new user - again, note that we have to click on the reverse | |
| 307 // item in the list. Since the first clickable item is 1, we get user #2. | |
| 308 gfx::Point point = | |
| 309 tray()->GetTrayItemViewForTest(tray_user(1))-> | |
| 310 GetBoundsInScreen().CenterPoint(); | |
| 311 | |
| 312 generator.MoveMouseTo(point.x(), point.y()); | |
| 313 generator.ClickLeftButton(); | |
| 314 EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserID(1)); | |
| 315 } | |
| 316 | |
| 317 #endif | 251 #endif |
| 318 | 252 |
| 319 } // namespace internal | 253 } // namespace internal |
| 320 } // namespace ash | 254 } // namespace ash |
| OLD | NEW |