| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/policy/device_status_collector.h" | 5 #include "chrome/browser/chromeos/policy/device_status_collector.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 baseline_offset_periods_ = 0; | 142 baseline_offset_periods_ = 0; |
| 143 } | 143 } |
| 144 | 144 |
| 145 void set_kiosk_account(std::unique_ptr<policy::DeviceLocalAccount> account) { | 145 void set_kiosk_account(std::unique_ptr<policy::DeviceLocalAccount> account) { |
| 146 kiosk_account_ = std::move(account); | 146 kiosk_account_ = std::move(account); |
| 147 } | 147 } |
| 148 | 148 |
| 149 std::unique_ptr<policy::DeviceLocalAccount> GetAutoLaunchedKioskSessionInfo() | 149 std::unique_ptr<policy::DeviceLocalAccount> GetAutoLaunchedKioskSessionInfo() |
| 150 override { | 150 override { |
| 151 if (kiosk_account_) | 151 if (kiosk_account_) |
| 152 return base::WrapUnique(new policy::DeviceLocalAccount(*kiosk_account_)); | 152 return base::MakeUnique<policy::DeviceLocalAccount>(*kiosk_account_); |
| 153 return std::unique_ptr<policy::DeviceLocalAccount>(); | 153 return std::unique_ptr<policy::DeviceLocalAccount>(); |
| 154 } | 154 } |
| 155 | 155 |
| 156 std::string GetAppVersion(const std::string& app_id) override { | 156 std::string GetAppVersion(const std::string& app_id) override { |
| 157 // Just return the app_id as the version - this makes it easy for tests | 157 // Just return the app_id as the version - this makes it easy for tests |
| 158 // to confirm that the correct app's version was requested. | 158 // to confirm that the correct app's version was requested. |
| 159 return app_id; | 159 return app_id; |
| 160 } | 160 } |
| 161 | 161 |
| 162 void RefreshSampleResourceUsage() { | 162 void RefreshSampleResourceUsage() { |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 user_data_dir_override_(chrome::DIR_USER_DATA), | 270 user_data_dir_override_(chrome::DIR_USER_DATA), |
| 271 update_engine_client_(new chromeos::FakeUpdateEngineClient) { | 271 update_engine_client_(new chromeos::FakeUpdateEngineClient) { |
| 272 // Run this test with a well-known timezone so that Time::LocalMidnight() | 272 // Run this test with a well-known timezone so that Time::LocalMidnight() |
| 273 // returns the same values on all machines. | 273 // returns the same values on all machines. |
| 274 std::unique_ptr<base::Environment> env(base::Environment::Create()); | 274 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
| 275 env->SetVar("TZ", "UTC"); | 275 env->SetVar("TZ", "UTC"); |
| 276 | 276 |
| 277 // Initialize our mock mounted disk volumes. | 277 // Initialize our mock mounted disk volumes. |
| 278 std::unique_ptr<chromeos::disks::MockDiskMountManager> | 278 std::unique_ptr<chromeos::disks::MockDiskMountManager> |
| 279 mock_disk_mount_manager = | 279 mock_disk_mount_manager = |
| 280 base::WrapUnique(new chromeos::disks::MockDiskMountManager()); | 280 base::MakeUnique<chromeos::disks::MockDiskMountManager>(); |
| 281 AddMountPoint("/mount/volume1"); | 281 AddMountPoint("/mount/volume1"); |
| 282 AddMountPoint("/mount/volume2"); | 282 AddMountPoint("/mount/volume2"); |
| 283 EXPECT_CALL(*mock_disk_mount_manager, mount_points()) | 283 EXPECT_CALL(*mock_disk_mount_manager, mount_points()) |
| 284 .WillRepeatedly(ReturnRef(mount_point_map_)); | 284 .WillRepeatedly(ReturnRef(mount_point_map_)); |
| 285 | 285 |
| 286 // Setup a fake file system that should show up in mount points. | 286 // Setup a fake file system that should show up in mount points. |
| 287 storage::ExternalMountPoints::GetSystemInstance()->RevokeAllFileSystems(); | 287 storage::ExternalMountPoints::GetSystemInstance()->RevokeAllFileSystems(); |
| 288 storage::ExternalMountPoints::GetSystemInstance()->RegisterFileSystem( | 288 storage::ExternalMountPoints::GetSystemInstance()->RegisterFileSystem( |
| 289 "c", storage::kFileSystemTypeNativeLocal, | 289 "c", storage::kFileSystemTypeNativeLocal, |
| 290 storage::FileSystemMountOption(), | 290 storage::FileSystemMountOption(), |
| (...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 TEST_F(DeviceStatusCollectorTest, NoSessionStatusIfNotKioskMode) { | 1039 TEST_F(DeviceStatusCollectorTest, NoSessionStatusIfNotKioskMode) { |
| 1040 // Should not report session status if we don't have an active kiosk app. | 1040 // Should not report session status if we don't have an active kiosk app. |
| 1041 settings_helper_.SetBoolean(chromeos::kReportDeviceSessionStatus, true); | 1041 settings_helper_.SetBoolean(chromeos::kReportDeviceSessionStatus, true); |
| 1042 em::SessionStatusReportRequest session_status; | 1042 em::SessionStatusReportRequest session_status; |
| 1043 EXPECT_FALSE(status_collector_->GetDeviceSessionStatus(&session_status)); | 1043 EXPECT_FALSE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| 1044 } | 1044 } |
| 1045 | 1045 |
| 1046 TEST_F(DeviceStatusCollectorTest, NoSessionStatusIfSessionReportingDisabled) { | 1046 TEST_F(DeviceStatusCollectorTest, NoSessionStatusIfSessionReportingDisabled) { |
| 1047 // Should not report session status if session status reporting is disabled. | 1047 // Should not report session status if session status reporting is disabled. |
| 1048 settings_helper_.SetBoolean(chromeos::kReportDeviceSessionStatus, false); | 1048 settings_helper_.SetBoolean(chromeos::kReportDeviceSessionStatus, false); |
| 1049 status_collector_->set_kiosk_account(base::WrapUnique( | 1049 status_collector_->set_kiosk_account( |
| 1050 new policy::DeviceLocalAccount(fake_device_local_account_))); | 1050 base::MakeUnique<policy::DeviceLocalAccount>(fake_device_local_account_)); |
| 1051 // Set up a device-local account for single-app kiosk mode. | 1051 // Set up a device-local account for single-app kiosk mode. |
| 1052 MockRunningKioskApp(fake_device_local_account_); | 1052 MockRunningKioskApp(fake_device_local_account_); |
| 1053 | 1053 |
| 1054 em::SessionStatusReportRequest session_status; | 1054 em::SessionStatusReportRequest session_status; |
| 1055 EXPECT_FALSE(status_collector_->GetDeviceSessionStatus(&session_status)); | 1055 EXPECT_FALSE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| 1056 } | 1056 } |
| 1057 | 1057 |
| 1058 TEST_F(DeviceStatusCollectorTest, ReportSessionStatus) { | 1058 TEST_F(DeviceStatusCollectorTest, ReportSessionStatus) { |
| 1059 settings_helper_.SetBoolean(chromeos::kReportDeviceSessionStatus, true); | 1059 settings_helper_.SetBoolean(chromeos::kReportDeviceSessionStatus, true); |
| 1060 status_collector_->set_kiosk_account(base::WrapUnique( | 1060 status_collector_->set_kiosk_account( |
| 1061 new policy::DeviceLocalAccount(fake_device_local_account_))); | 1061 base::MakeUnique<policy::DeviceLocalAccount>(fake_device_local_account_)); |
| 1062 | 1062 |
| 1063 // Set up a device-local account for single-app kiosk mode. | 1063 // Set up a device-local account for single-app kiosk mode. |
| 1064 MockRunningKioskApp(fake_device_local_account_); | 1064 MockRunningKioskApp(fake_device_local_account_); |
| 1065 | 1065 |
| 1066 em::SessionStatusReportRequest session_status; | 1066 em::SessionStatusReportRequest session_status; |
| 1067 EXPECT_TRUE(status_collector_->GetDeviceSessionStatus(&session_status)); | 1067 EXPECT_TRUE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| 1068 ASSERT_EQ(1, session_status.installed_apps_size()); | 1068 ASSERT_EQ(1, session_status.installed_apps_size()); |
| 1069 EXPECT_EQ(kKioskAccountId, session_status.device_local_account_id()); | 1069 EXPECT_EQ(kKioskAccountId, session_status.device_local_account_id()); |
| 1070 const em::AppStatus app = session_status.installed_apps(0); | 1070 const em::AppStatus app = session_status.installed_apps(0); |
| 1071 EXPECT_EQ(kKioskAppId, app.app_id()); | 1071 EXPECT_EQ(kKioskAppId, app.app_id()); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1147 GetStatus(); | 1147 GetStatus(); |
| 1148 ASSERT_TRUE(status_.has_os_update_status()); | 1148 ASSERT_TRUE(status_.has_os_update_status()); |
| 1149 EXPECT_EQ(em::OsUpdateStatus::OS_UPDATE_NEED_REBOOT, | 1149 EXPECT_EQ(em::OsUpdateStatus::OS_UPDATE_NEED_REBOOT, |
| 1150 status_.os_update_status().update_status()); | 1150 status_.os_update_status().update_status()); |
| 1151 } | 1151 } |
| 1152 | 1152 |
| 1153 TEST_F(DeviceStatusCollectorTest, NoRunningKioskAppByDefault) { | 1153 TEST_F(DeviceStatusCollectorTest, NoRunningKioskAppByDefault) { |
| 1154 MockPlatformVersion("1234.0.0"); | 1154 MockPlatformVersion("1234.0.0"); |
| 1155 MockAutoLaunchKioskAppWithRequiredPlatformVersion(fake_device_local_account_, | 1155 MockAutoLaunchKioskAppWithRequiredPlatformVersion(fake_device_local_account_, |
| 1156 "1234.0.0"); | 1156 "1234.0.0"); |
| 1157 status_collector_->set_kiosk_account(base::WrapUnique( | 1157 status_collector_->set_kiosk_account( |
| 1158 new policy::DeviceLocalAccount(fake_device_local_account_))); | 1158 base::MakeUnique<policy::DeviceLocalAccount>(fake_device_local_account_)); |
| 1159 MockRunningKioskApp(fake_device_local_account_); | 1159 MockRunningKioskApp(fake_device_local_account_); |
| 1160 | 1160 |
| 1161 GetStatus(); | 1161 GetStatus(); |
| 1162 EXPECT_FALSE(status_.has_running_kiosk_app()); | 1162 EXPECT_FALSE(status_.has_running_kiosk_app()); |
| 1163 } | 1163 } |
| 1164 | 1164 |
| 1165 TEST_F(DeviceStatusCollectorTest, NoRunningKioskAppWhenNotInKioskSession) { | 1165 TEST_F(DeviceStatusCollectorTest, NoRunningKioskAppWhenNotInKioskSession) { |
| 1166 settings_helper_.SetBoolean(chromeos::kReportRunningKioskApp, true); | 1166 settings_helper_.SetBoolean(chromeos::kReportRunningKioskApp, true); |
| 1167 MockPlatformVersion("1234.0.0"); | 1167 MockPlatformVersion("1234.0.0"); |
| 1168 MockAutoLaunchKioskAppWithRequiredPlatformVersion(fake_device_local_account_, | 1168 MockAutoLaunchKioskAppWithRequiredPlatformVersion(fake_device_local_account_, |
| 1169 "1234.0.0"); | 1169 "1234.0.0"); |
| 1170 | 1170 |
| 1171 GetStatus(); | 1171 GetStatus(); |
| 1172 EXPECT_FALSE(status_.has_running_kiosk_app()); | 1172 EXPECT_FALSE(status_.has_running_kiosk_app()); |
| 1173 } | 1173 } |
| 1174 | 1174 |
| 1175 TEST_F(DeviceStatusCollectorTest, ReportRunningKioskApp) { | 1175 TEST_F(DeviceStatusCollectorTest, ReportRunningKioskApp) { |
| 1176 settings_helper_.SetBoolean(chromeos::kReportRunningKioskApp, true); | 1176 settings_helper_.SetBoolean(chromeos::kReportRunningKioskApp, true); |
| 1177 MockPlatformVersion("1234.0.0"); | 1177 MockPlatformVersion("1234.0.0"); |
| 1178 MockAutoLaunchKioskAppWithRequiredPlatformVersion(fake_device_local_account_, | 1178 MockAutoLaunchKioskAppWithRequiredPlatformVersion(fake_device_local_account_, |
| 1179 "1235"); | 1179 "1235"); |
| 1180 MockRunningKioskApp(fake_device_local_account_); | 1180 MockRunningKioskApp(fake_device_local_account_); |
| 1181 status_collector_->set_kiosk_account(base::WrapUnique( | 1181 status_collector_->set_kiosk_account( |
| 1182 new policy::DeviceLocalAccount(fake_device_local_account_))); | 1182 base::MakeUnique<policy::DeviceLocalAccount>(fake_device_local_account_)); |
| 1183 | 1183 |
| 1184 GetStatus(); | 1184 GetStatus(); |
| 1185 ASSERT_TRUE(status_.has_running_kiosk_app()); | 1185 ASSERT_TRUE(status_.has_running_kiosk_app()); |
| 1186 const em::AppStatus app = status_.running_kiosk_app(); | 1186 const em::AppStatus app = status_.running_kiosk_app(); |
| 1187 EXPECT_EQ(kKioskAppId, app.app_id()); | 1187 EXPECT_EQ(kKioskAppId, app.app_id()); |
| 1188 EXPECT_EQ("1235", app.required_platform_version()); | 1188 EXPECT_EQ("1235", app.required_platform_version()); |
| 1189 EXPECT_FALSE(app.has_status()); | 1189 EXPECT_FALSE(app.has_status()); |
| 1190 EXPECT_FALSE(app.has_error()); | 1190 EXPECT_FALSE(app.has_error()); |
| 1191 } | 1191 } |
| 1192 | 1192 |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1452 TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NoNetworkStateIfNotKiosk) { | 1452 TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NoNetworkStateIfNotKiosk) { |
| 1453 // If not in an active kiosk session, there should be network interfaces | 1453 // If not in an active kiosk session, there should be network interfaces |
| 1454 // reported, but no network state. | 1454 // reported, but no network state. |
| 1455 GetStatus(); | 1455 GetStatus(); |
| 1456 EXPECT_LT(0, status_.network_interface_size()); | 1456 EXPECT_LT(0, status_.network_interface_size()); |
| 1457 EXPECT_EQ(0, status_.network_state_size()); | 1457 EXPECT_EQ(0, status_.network_state_size()); |
| 1458 } | 1458 } |
| 1459 | 1459 |
| 1460 TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NetworkInterfaces) { | 1460 TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NetworkInterfaces) { |
| 1461 // Mock that we are in kiosk mode so we report network state. | 1461 // Mock that we are in kiosk mode so we report network state. |
| 1462 status_collector_->set_kiosk_account(base::WrapUnique( | 1462 status_collector_->set_kiosk_account( |
| 1463 new policy::DeviceLocalAccount(fake_device_local_account_))); | 1463 base::MakeUnique<policy::DeviceLocalAccount>(fake_device_local_account_)); |
| 1464 | 1464 |
| 1465 // Interfaces should be reported by default. | 1465 // Interfaces should be reported by default. |
| 1466 GetStatus(); | 1466 GetStatus(); |
| 1467 EXPECT_LT(0, status_.network_interface_size()); | 1467 EXPECT_LT(0, status_.network_interface_size()); |
| 1468 EXPECT_LT(0, status_.network_state_size()); | 1468 EXPECT_LT(0, status_.network_state_size()); |
| 1469 | 1469 |
| 1470 // No interfaces should be reported if the policy is off. | 1470 // No interfaces should be reported if the policy is off. |
| 1471 settings_helper_.SetBoolean(chromeos::kReportDeviceNetworkInterfaces, false); | 1471 settings_helper_.SetBoolean(chromeos::kReportDeviceNetworkInterfaces, false); |
| 1472 GetStatus(); | 1472 GetStatus(); |
| 1473 EXPECT_EQ(0, status_.network_interface_size()); | 1473 EXPECT_EQ(0, status_.network_interface_size()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1486 AccountId::FromUserEmail(kPublicAccountId)); | 1486 AccountId::FromUserEmail(kPublicAccountId)); |
| 1487 EXPECT_CALL(*user_manager_, IsLoggedInAsPublicAccount()) | 1487 EXPECT_CALL(*user_manager_, IsLoggedInAsPublicAccount()) |
| 1488 .WillRepeatedly(Return(true)); | 1488 .WillRepeatedly(Return(true)); |
| 1489 | 1489 |
| 1490 settings_helper_.SetBoolean(chromeos::kReportDeviceNetworkInterfaces, true); | 1490 settings_helper_.SetBoolean(chromeos::kReportDeviceNetworkInterfaces, true); |
| 1491 GetStatus(); | 1491 GetStatus(); |
| 1492 VerifyNetworkReporting(); | 1492 VerifyNetworkReporting(); |
| 1493 } | 1493 } |
| 1494 | 1494 |
| 1495 } // namespace policy | 1495 } // namespace policy |
| OLD | NEW |