Chromium Code Reviews| Index: ash/metrics/user_metrics_recorder_unittest.cc |
| diff --git a/ash/metrics/user_metrics_recorder_unittest.cc b/ash/metrics/user_metrics_recorder_unittest.cc |
| index e9f323c16927f8ecef0f9d49c705106bc2d28951..f40ffd6d34f2fd69a0f59e13048de216433e7e8a 100644 |
| --- a/ash/metrics/user_metrics_recorder_unittest.cc |
| +++ b/ash/metrics/user_metrics_recorder_unittest.cc |
| @@ -8,15 +8,18 @@ |
| #include "ash/login_status.h" |
| #include "ash/public/cpp/config.h" |
| +#include "ash/session/session_controller.h" |
| #include "ash/shelf/shelf_model.h" |
| #include "ash/shell.h" |
| #include "ash/shell_port.h" |
| #include "ash/test/ash_test_base.h" |
| -#include "ash/test/test_system_tray_delegate.h" |
| +#include "ash/test/test_session_controller_client.h" |
| #include "ash/test/user_metrics_recorder_test_api.h" |
| #include "ash/wm_window.h" |
| #include "base/test/histogram_tester.h" |
| +using session_manager::SessionState; |
| + |
| namespace ash { |
| namespace { |
| @@ -35,117 +38,67 @@ const char kAsh_Shelf_NumberOfUnpinnedItems[] = |
| } // namespace |
| -// Test fixture for the UserMetricsRecorder class. |
| -class UserMetricsRecorderTest : public test::AshTestBase { |
| +// Test fixture for the UserMetricsRecorder class. The tests manage their own |
| +// session state. |
| +class UserMetricsRecorderTest : public test::NoSessionAshTestBase { |
| public: |
| - UserMetricsRecorderTest(); |
| - ~UserMetricsRecorderTest() override; |
| - |
| - // test::AshTestBase: |
| - void SetUp() override; |
| - void TearDown() override; |
| - |
| - // Sets the user login status. |
| - void SetLoginStatus(LoginStatus login_status); |
| + UserMetricsRecorderTest() = default; |
| + ~UserMetricsRecorderTest() override = default; |
| - // Sets the current user session to be active or inactive in a desktop |
| - // environment. |
| - void SetUserInActiveDesktopEnvironment(bool is_active); |
| - |
| - test::UserMetricsRecorderTestAPI* user_metrics_recorder_test_api() { |
| - return user_metrics_recorder_test_api_.get(); |
| - } |
| + test::UserMetricsRecorderTestAPI& test_api() { return test_api_; } |
| base::HistogramTester& histograms() { return histograms_; } |
| private: |
| // Test API to access private members of the test target. |
| - std::unique_ptr<test::UserMetricsRecorderTestAPI> |
| - user_metrics_recorder_test_api_; |
| + test::UserMetricsRecorderTestAPI test_api_; |
| // Histogram value verifier. |
| base::HistogramTester histograms_; |
| - // The active SystemTrayDelegate. Not owned. |
| - test::TestSystemTrayDelegate* test_system_tray_delegate_; |
| - |
| DISALLOW_COPY_AND_ASSIGN(UserMetricsRecorderTest); |
| }; |
| -UserMetricsRecorderTest::UserMetricsRecorderTest() {} |
| - |
| -UserMetricsRecorderTest::~UserMetricsRecorderTest() {} |
| - |
| -void UserMetricsRecorderTest::SetUp() { |
| - test::AshTestBase::SetUp(); |
| - user_metrics_recorder_test_api_.reset(new test::UserMetricsRecorderTestAPI()); |
| - test_system_tray_delegate_ = GetSystemTrayDelegate(); |
| -} |
| - |
| -void UserMetricsRecorderTest::TearDown() { |
| - test_system_tray_delegate_ = nullptr; |
| - test::AshTestBase::TearDown(); |
| -} |
| - |
| -void UserMetricsRecorderTest::SetLoginStatus(LoginStatus login_status) { |
| - test_system_tray_delegate_->SetLoginStatus(login_status); |
| -} |
| - |
| -void UserMetricsRecorderTest::SetUserInActiveDesktopEnvironment( |
| - bool is_active) { |
| - if (is_active) { |
| - SetLoginStatus(LoginStatus::USER); |
| - ASSERT_TRUE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - } else { |
| - SetLoginStatus(LoginStatus::LOCKED); |
| - ASSERT_FALSE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - } |
| -} |
| - |
| // Verifies the return value of IsUserInActiveDesktopEnvironment() for the |
| // different login status values. |
| TEST_F(UserMetricsRecorderTest, VerifyIsUserInActiveDesktopEnvironmentValues) { |
| - SetLoginStatus(LoginStatus::NOT_LOGGED_IN); |
| - EXPECT_FALSE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - |
| - SetLoginStatus(LoginStatus::LOCKED); |
| - EXPECT_FALSE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - |
| - SetLoginStatus(LoginStatus::USER); |
| - EXPECT_TRUE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - |
| - SetLoginStatus(LoginStatus::OWNER); |
| - EXPECT_TRUE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - |
| - SetLoginStatus(LoginStatus::GUEST); |
| - EXPECT_TRUE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - |
| - SetLoginStatus(LoginStatus::PUBLIC); |
| - EXPECT_TRUE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - |
| - SetLoginStatus(LoginStatus::SUPERVISED); |
| - EXPECT_TRUE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| - |
| - SetLoginStatus(LoginStatus::KIOSK_APP); |
| - EXPECT_FALSE( |
| - user_metrics_recorder_test_api()->IsUserInActiveDesktopEnvironment()); |
| + SessionController* session = Shell::Get()->session_controller(); |
| + |
| + // Environment is not active before login. |
| + ASSERT_FALSE(session->IsActiveUserSessionStarted()); |
| + EXPECT_FALSE(test_api().IsUserInActiveDesktopEnvironment()); |
| + |
| + // Environment is active after login. |
| + SetSessionStarted(true); |
| + ASSERT_TRUE(session->IsActiveUserSessionStarted()); |
| + EXPECT_TRUE(test_api().IsUserInActiveDesktopEnvironment()); |
| + |
| + // Environment is not active when screen is locked. |
| + test::TestSessionControllerClient* client = GetSessionControllerClient(); |
| + client->SetSessionState(SessionState::LOCKED); |
| + ASSERT_TRUE(session->IsScreenLocked()); |
| + EXPECT_FALSE(test_api().IsUserInActiveDesktopEnvironment()); |
| + |
| + // Kiosk logins are not considered active. |
| + client->Reset(); |
| + client->AddUserSession("user1@test.com", user_manager::USER_TYPE_KIOSK_APP); |
|
xiyuan
2017/04/19 23:08:54
nit: "user1@test.com" -> "app@kiosk-apps.device-lo
James Cook
2017/04/19 23:26:59
Done.
|
| + client->SetSessionState(session_manager::SessionState::ACTIVE); |
| + EXPECT_FALSE(test_api().IsUserInActiveDesktopEnvironment()); |
| + |
| + // Arc kiosk logins are not considered active. |
| + client->Reset(); |
| + client->AddUserSession("user1@test.com", |
| + user_manager::USER_TYPE_ARC_KIOSK_APP); |
|
xiyuan
2017/04/19 23:08:54
nit: "user1@test.com" -> "app@arc-kiosk-apps.devic
James Cook
2017/04/19 23:26:59
Done.
|
| + client->SetSessionState(session_manager::SessionState::ACTIVE); |
| + EXPECT_FALSE(test_api().IsUserInActiveDesktopEnvironment()); |
| } |
| // Verifies that the IsUserInActiveDesktopEnvironment() dependent stats are not |
| // recorded when a user is not active in a desktop environment. |
| TEST_F(UserMetricsRecorderTest, |
| VerifyStatsRecordedWhenUserNotInActiveDesktopEnvironment) { |
| - SetUserInActiveDesktopEnvironment(false); |
| - user_metrics_recorder_test_api()->RecordPeriodicMetrics(); |
| + ASSERT_FALSE(test_api().IsUserInActiveDesktopEnvironment()); |
| + test_api().RecordPeriodicMetrics(); |
| histograms().ExpectTotalCount(kAsh_NumberOfVisibleWindowsInPrimaryDisplay, 0); |
| histograms().ExpectTotalCount(kAsh_Shelf_NumberOfItems, 0); |
| @@ -157,8 +110,9 @@ TEST_F(UserMetricsRecorderTest, |
| // recorded when a user is active in a desktop environment. |
| TEST_F(UserMetricsRecorderTest, |
| VerifyStatsRecordedWhenUserInActiveDesktopEnvironment) { |
| - SetUserInActiveDesktopEnvironment(true); |
| - user_metrics_recorder_test_api()->RecordPeriodicMetrics(); |
| + SetSessionStarted(true); |
| + ASSERT_TRUE(test_api().IsUserInActiveDesktopEnvironment()); |
| + test_api().RecordPeriodicMetrics(); |
| histograms().ExpectTotalCount(kAsh_NumberOfVisibleWindowsInPrimaryDisplay, 1); |
| histograms().ExpectTotalCount(kAsh_Shelf_NumberOfItems, 1); |
| @@ -169,8 +123,8 @@ TEST_F(UserMetricsRecorderTest, |
| // Verifies recording of stats which are always recorded by |
| // RecordPeriodicMetrics. |
| TEST_F(UserMetricsRecorderTest, VerifyStatsRecordedByRecordPeriodicMetrics) { |
| - SetUserInActiveDesktopEnvironment(true); |
| - user_metrics_recorder_test_api()->RecordPeriodicMetrics(); |
| + SetSessionStarted(true); |
| + test_api().RecordPeriodicMetrics(); |
| histograms().ExpectTotalCount(kAsh_ActiveWindowShowTypeOverTime, 1); |
| } |
| @@ -182,7 +136,7 @@ TEST_F(UserMetricsRecorderTest, ValuesRecordedByRecordShelfItemCounts) { |
| if (Shell::GetAshConfig() == Config::MASH) |
| return; |
| - SetUserInActiveDesktopEnvironment(true); |
| + SetSessionStarted(true); |
| // Make sure the shelf contains the app list launcher button. |
| ShelfModel* shelf_model = Shell::Get()->shelf_model(); |
| @@ -204,7 +158,7 @@ TEST_F(UserMetricsRecorderTest, ValuesRecordedByRecordShelfItemCounts) { |
| shelf_item.app_launch_id = AppLaunchId("app_id_5"); |
| shelf_model->Add(shelf_item); |
| - user_metrics_recorder_test_api()->RecordPeriodicMetrics(); |
| + test_api().RecordPeriodicMetrics(); |
| histograms().ExpectBucketCount(kAsh_Shelf_NumberOfItems, 5, 1); |
| histograms().ExpectBucketCount(kAsh_Shelf_NumberOfPinnedItems, 2, 1); |
| histograms().ExpectBucketCount(kAsh_Shelf_NumberOfUnpinnedItems, 3, 1); |