| 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 <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/environment.h" | 11 #include "base/environment.h" |
| 12 #include "base/logging.h" | 12 #include "base/logging.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
| 15 #include "base/prefs/pref_service.h" | 15 #include "base/prefs/pref_service.h" |
| 16 #include "base/prefs/testing_pref_service.h" | 16 #include "base/prefs/testing_pref_service.h" |
| 17 #include "base/run_loop.h" | 17 #include "base/run_loop.h" |
| 18 #include "base/threading/sequenced_worker_pool.h" | 18 #include "base/threading/sequenced_worker_pool.h" |
| 19 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" | 19 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" |
| 20 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | 20 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
| 21 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 21 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 22 #include "chrome/browser/chromeos/policy/device_local_account.h" |
| 22 #include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h" | 23 #include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h" |
| 23 #include "chrome/browser/chromeos/settings/cros_settings.h" | 24 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 24 #include "chrome/browser/chromeos/settings/device_settings_service.h" | 25 #include "chrome/browser/chromeos/settings/device_settings_service.h" |
| 25 #include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h" | 26 #include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h" |
| 26 #include "chrome/common/pref_names.h" | 27 #include "chrome/common/pref_names.h" |
| 27 #include "chrome/test/base/testing_browser_process.h" | 28 #include "chrome/test/base/testing_browser_process.h" |
| 28 #include "chromeos/dbus/cros_disks_client.h" | 29 #include "chromeos/dbus/cros_disks_client.h" |
| 29 #include "chromeos/dbus/dbus_thread_manager.h" | 30 #include "chromeos/dbus/dbus_thread_manager.h" |
| 30 #include "chromeos/dbus/shill_device_client.h" | 31 #include "chromeos/dbus/shill_device_client.h" |
| 31 #include "chromeos/dbus/shill_ipconfig_client.h" | 32 #include "chromeos/dbus/shill_ipconfig_client.h" |
| 32 #include "chromeos/dbus/shill_service_client.h" | 33 #include "chromeos/dbus/shill_service_client.h" |
| 33 #include "chromeos/disks/disk_mount_manager.h" | 34 #include "chromeos/disks/disk_mount_manager.h" |
| 34 #include "chromeos/disks/mock_disk_mount_manager.h" | 35 #include "chromeos/disks/mock_disk_mount_manager.h" |
| 35 #include "chromeos/network/network_handler.h" | 36 #include "chromeos/network/network_handler.h" |
| 36 #include "chromeos/network/network_state.h" | 37 #include "chromeos/network/network_state.h" |
| 37 #include "chromeos/network/network_state_handler.h" | 38 #include "chromeos/network/network_state_handler.h" |
| 38 #include "chromeos/settings/cros_settings_names.h" | 39 #include "chromeos/settings/cros_settings_names.h" |
| 39 #include "chromeos/settings/cros_settings_provider.h" | 40 #include "chromeos/settings/cros_settings_provider.h" |
| 40 #include "chromeos/system/fake_statistics_provider.h" | 41 #include "chromeos/system/fake_statistics_provider.h" |
| 41 #include "content/public/browser/browser_thread.h" | 42 #include "content/public/browser/browser_thread.h" |
| 42 #include "content/public/browser/geolocation_provider.h" | 43 #include "content/public/browser/geolocation_provider.h" |
| 43 #include "content/public/test/test_browser_thread.h" | 44 #include "content/public/test/test_browser_thread.h" |
| 44 #include "content/public/test/test_utils.h" | 45 #include "content/public/test/test_utils.h" |
| 45 #include "policy/proto/device_management_backend.pb.h" | 46 #include "policy/proto/device_management_backend.pb.h" |
| 46 #include "testing/gmock/include/gmock/gmock.h" | 47 #include "testing/gmock/include/gmock/gmock.h" |
| 47 #include "testing/gtest/include/gtest/gtest.h" | 48 #include "testing/gtest/include/gtest/gtest.h" |
| 48 #include "third_party/cros_system_api/dbus/service_constants.h" | 49 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 49 | 50 |
| 51 using ::testing::Return; |
| 50 using ::testing::ReturnRef; | 52 using ::testing::ReturnRef; |
| 51 using base::Time; | 53 using base::Time; |
| 52 using base::TimeDelta; | 54 using base::TimeDelta; |
| 53 using chromeos::disks::DiskMountManager; | 55 using chromeos::disks::DiskMountManager; |
| 54 | 56 |
| 55 namespace em = enterprise_management; | 57 namespace em = enterprise_management; |
| 56 | 58 |
| 57 namespace { | 59 namespace { |
| 58 | 60 |
| 59 const int64 kMillisecondsPerDay = Time::kMicrosecondsPerDay / 1000; | 61 const int64 kMillisecondsPerDay = Time::kMicrosecondsPerDay / 1000; |
| 62 const char kKioskAccountId[] = "kiosk_user@localhost"; |
| 63 const char kKioskAppId[] = "kiosk_app_id"; |
| 60 | 64 |
| 61 scoped_ptr<content::Geoposition> mock_position_to_return_next; | 65 scoped_ptr<content::Geoposition> mock_position_to_return_next; |
| 62 | 66 |
| 63 void SetMockPositionToReturnNext(const content::Geoposition &position) { | 67 void SetMockPositionToReturnNext(const content::Geoposition &position) { |
| 64 mock_position_to_return_next.reset(new content::Geoposition(position)); | 68 mock_position_to_return_next.reset(new content::Geoposition(position)); |
| 65 } | 69 } |
| 66 | 70 |
| 67 void MockPositionUpdateRequester( | 71 void MockPositionUpdateRequester( |
| 68 const content::GeolocationProvider::LocationUpdateCallback& callback) { | 72 const content::GeolocationProvider::LocationUpdateCallback& callback) { |
| 69 if (!mock_position_to_return_next.get()) | 73 if (!mock_position_to_return_next.get()) |
| (...skipping 16 matching lines...) Expand all Loading... |
| 86 PrefService* local_state, | 90 PrefService* local_state, |
| 87 chromeos::system::StatisticsProvider* provider, | 91 chromeos::system::StatisticsProvider* provider, |
| 88 const policy::DeviceStatusCollector::LocationUpdateRequester& | 92 const policy::DeviceStatusCollector::LocationUpdateRequester& |
| 89 location_update_requester, | 93 location_update_requester, |
| 90 const policy::DeviceStatusCollector::VolumeInfoFetcher& | 94 const policy::DeviceStatusCollector::VolumeInfoFetcher& |
| 91 volume_info_fetcher) | 95 volume_info_fetcher) |
| 92 : policy::DeviceStatusCollector( | 96 : policy::DeviceStatusCollector( |
| 93 local_state, | 97 local_state, |
| 94 provider, | 98 provider, |
| 95 location_update_requester, | 99 location_update_requester, |
| 96 volume_info_fetcher), | 100 volume_info_fetcher) { |
| 97 kiosk_mode_(false) { | 101 |
| 98 // Set the baseline time to a fixed value (1 AM) to prevent test flakiness | 102 // Set the baseline time to a fixed value (1 AM) to prevent test flakiness |
| 99 // due to a single activity period spanning two days. | 103 // due to a single activity period spanning two days. |
| 100 SetBaselineTime(Time::Now().LocalMidnight() + TimeDelta::FromHours(1)); | 104 SetBaselineTime(Time::Now().LocalMidnight() + TimeDelta::FromHours(1)); |
| 101 } | 105 } |
| 102 | 106 |
| 103 void Simulate(ui::IdleState* states, int len) { | 107 void Simulate(ui::IdleState* states, int len) { |
| 104 for (int i = 0; i < len; i++) | 108 for (int i = 0; i < len; i++) |
| 105 IdleStateCallback(states[i]); | 109 IdleStateCallback(states[i]); |
| 106 } | 110 } |
| 107 | 111 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 122 void set_mock_cpu_usage(double total_cpu_usage, int num_processors) { | 126 void set_mock_cpu_usage(double total_cpu_usage, int num_processors) { |
| 123 std::vector<double> usage; | 127 std::vector<double> usage; |
| 124 for (int i = 0; i < num_processors; ++i) | 128 for (int i = 0; i < num_processors; ++i) |
| 125 usage.push_back(total_cpu_usage / num_processors); | 129 usage.push_back(total_cpu_usage / num_processors); |
| 126 | 130 |
| 127 mock_cpu_usage_ = usage; | 131 mock_cpu_usage_ = usage; |
| 128 | 132 |
| 129 RefreshSampleResourceUsage(); | 133 RefreshSampleResourceUsage(); |
| 130 } | 134 } |
| 131 | 135 |
| 132 void set_kiosk_mode(bool is_kiosk) { | 136 void set_kiosk_account(scoped_ptr<policy::DeviceLocalAccount> account) { |
| 133 kiosk_mode_ = is_kiosk; | 137 kiosk_account_ = account.Pass(); |
| 134 } | 138 } |
| 135 | 139 |
| 136 bool IsAutoLaunchedKioskSession() override { | 140 scoped_ptr<policy::DeviceLocalAccount> |
| 137 return kiosk_mode_; | 141 GetAutoLaunchedKioskSessionInfo() override { |
| 142 if (kiosk_account_) |
| 143 return make_scoped_ptr(new policy::DeviceLocalAccount(*kiosk_account_)); |
| 144 return scoped_ptr<policy::DeviceLocalAccount>(); |
| 145 } |
| 146 |
| 147 std::string GetAppVersion(const std::string& app_id) override { |
| 148 // Just return the app_id as the version - this makes it easy for tests |
| 149 // to confirm that the correct app's version was requested. |
| 150 return app_id; |
| 138 } | 151 } |
| 139 | 152 |
| 140 void RefreshSampleResourceUsage() { | 153 void RefreshSampleResourceUsage() { |
| 141 // Refresh our samples. Sample more than kMaxHardwareSamples times to | 154 // Refresh our samples. Sample more than kMaxHardwareSamples times to |
| 142 // make sure that the code correctly caps the number of cached samples. | 155 // make sure that the code correctly caps the number of cached samples. |
| 143 for (int i = 0; i < static_cast<int>(kMaxResourceUsageSamples + 1); ++i) | 156 for (int i = 0; i < static_cast<int>(kMaxResourceUsageSamples + 1); ++i) |
| 144 SampleResourceUsage(); | 157 SampleResourceUsage(); |
| 145 } | 158 } |
| 146 | 159 |
| 147 protected: | 160 protected: |
| (...skipping 16 matching lines...) Expand all Loading... |
| 164 | 177 |
| 165 private: | 178 private: |
| 166 // Baseline time for the fake times returned from GetCurrentTime(). | 179 // Baseline time for the fake times returned from GetCurrentTime(). |
| 167 Time baseline_time_; | 180 Time baseline_time_; |
| 168 | 181 |
| 169 // The number of simulated periods since the baseline time. | 182 // The number of simulated periods since the baseline time. |
| 170 int baseline_offset_periods_; | 183 int baseline_offset_periods_; |
| 171 | 184 |
| 172 std::vector<double> mock_cpu_usage_; | 185 std::vector<double> mock_cpu_usage_; |
| 173 | 186 |
| 174 bool kiosk_mode_; | 187 scoped_ptr<policy::DeviceLocalAccount> kiosk_account_; |
| 175 }; | 188 }; |
| 176 | 189 |
| 177 // Return the total number of active milliseconds contained in a device | 190 // Return the total number of active milliseconds contained in a device |
| 178 // status report. | 191 // status report. |
| 179 int64 GetActiveMilliseconds(em::DeviceStatusReportRequest& status) { | 192 int64 GetActiveMilliseconds(em::DeviceStatusReportRequest& status) { |
| 180 int64 active_milliseconds = 0; | 193 int64 active_milliseconds = 0; |
| 181 for (int i = 0; i < status.active_period_size(); i++) { | 194 for (int i = 0; i < status.active_period_size(); i++) { |
| 182 active_milliseconds += status.active_period(i).active_duration(); | 195 active_milliseconds += status.active_period(i).active_duration(); |
| 183 } | 196 } |
| 184 return active_milliseconds; | 197 return active_milliseconds; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 public: | 235 public: |
| 223 DeviceStatusCollectorTest() | 236 DeviceStatusCollectorTest() |
| 224 : ui_thread_(content::BrowserThread::UI, &message_loop_), | 237 : ui_thread_(content::BrowserThread::UI, &message_loop_), |
| 225 file_thread_(content::BrowserThread::FILE, &message_loop_), | 238 file_thread_(content::BrowserThread::FILE, &message_loop_), |
| 226 io_thread_(content::BrowserThread::IO, &message_loop_), | 239 io_thread_(content::BrowserThread::IO, &message_loop_), |
| 227 install_attributes_("managed.com", | 240 install_attributes_("managed.com", |
| 228 "user@managed.com", | 241 "user@managed.com", |
| 229 "device_id", | 242 "device_id", |
| 230 DEVICE_MODE_ENTERPRISE), | 243 DEVICE_MODE_ENTERPRISE), |
| 231 user_manager_(new chromeos::MockUserManager()), | 244 user_manager_(new chromeos::MockUserManager()), |
| 232 user_manager_enabler_(user_manager_) { | 245 user_manager_enabler_(user_manager_), |
| 246 fake_device_local_account_( |
| 247 policy::DeviceLocalAccount::TYPE_KIOSK_APP, |
| 248 kKioskAccountId, |
| 249 kKioskAppId, |
| 250 std::string() /* kiosk_app_update_url */) { |
| 233 // Run this test with a well-known timezone so that Time::LocalMidnight() | 251 // Run this test with a well-known timezone so that Time::LocalMidnight() |
| 234 // returns the same values on all machines. | 252 // returns the same values on all machines. |
| 235 scoped_ptr<base::Environment> env(base::Environment::Create()); | 253 scoped_ptr<base::Environment> env(base::Environment::Create()); |
| 236 env->SetVar("TZ", "UTC"); | 254 env->SetVar("TZ", "UTC"); |
| 237 | 255 |
| 238 // Initialize our mock mounted disk volumes. | 256 // Initialize our mock mounted disk volumes. |
| 239 scoped_ptr<chromeos::disks::MockDiskMountManager> mock_disk_mount_manager = | 257 scoped_ptr<chromeos::disks::MockDiskMountManager> mock_disk_mount_manager = |
| 240 make_scoped_ptr(new chromeos::disks::MockDiskMountManager()); | 258 make_scoped_ptr(new chromeos::disks::MockDiskMountManager()); |
| 241 AddMountPoint("/mount/volume1"); | 259 AddMountPoint("/mount/volume1"); |
| 242 AddMountPoint("/mount/volume2"); | 260 AddMountPoint("/mount/volume2"); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 | 351 |
| 334 void CheckThatALocationErrorIsReported() { | 352 void CheckThatALocationErrorIsReported() { |
| 335 GetStatus(); | 353 GetStatus(); |
| 336 EXPECT_TRUE(status_.has_device_location()); | 354 EXPECT_TRUE(status_.has_device_location()); |
| 337 em::DeviceLocation location = status_.device_location(); | 355 em::DeviceLocation location = status_.device_location(); |
| 338 EXPECT_TRUE(location.has_error_code()); | 356 EXPECT_TRUE(location.has_error_code()); |
| 339 EXPECT_EQ(em::DeviceLocation::ERROR_CODE_POSITION_UNAVAILABLE, | 357 EXPECT_EQ(em::DeviceLocation::ERROR_CODE_POSITION_UNAVAILABLE, |
| 340 location.error_code()); | 358 location.error_code()); |
| 341 } | 359 } |
| 342 | 360 |
| 361 void MockRunningKioskApp(const DeviceLocalAccount& account) { |
| 362 std::vector<DeviceLocalAccount> accounts; |
| 363 accounts.push_back(account); |
| 364 SetDeviceLocalAccounts(cros_settings_, accounts); |
| 365 user_manager_->CreateKioskAppUser(account.user_id); |
| 366 EXPECT_CALL(*user_manager_, IsLoggedInAsKioskApp()).WillRepeatedly( |
| 367 Return(true)); |
| 368 } |
| 369 |
| 343 protected: | 370 protected: |
| 344 // Convenience method. | 371 // Convenience method. |
| 345 int64 ActivePeriodMilliseconds() { | 372 int64 ActivePeriodMilliseconds() { |
| 346 return policy::DeviceStatusCollector::kIdlePollIntervalSeconds * 1000; | 373 return policy::DeviceStatusCollector::kIdlePollIntervalSeconds * 1000; |
| 347 } | 374 } |
| 348 | 375 |
| 349 // Since this is a unit test running in browser_tests we must do additional | 376 // Since this is a unit test running in browser_tests we must do additional |
| 350 // unit test setup and make a TestingBrowserProcess. Must be first member. | 377 // unit test setup and make a TestingBrowserProcess. Must be first member. |
| 351 TestingBrowserProcessInitializer initializer_; | 378 TestingBrowserProcessInitializer initializer_; |
| 352 base::MessageLoopForUI message_loop_; | 379 base::MessageLoopForUI message_loop_; |
| 353 content::TestBrowserThread ui_thread_; | 380 content::TestBrowserThread ui_thread_; |
| 354 content::TestBrowserThread file_thread_; | 381 content::TestBrowserThread file_thread_; |
| 355 content::TestBrowserThread io_thread_; | 382 content::TestBrowserThread io_thread_; |
| 356 | 383 |
| 357 ScopedStubEnterpriseInstallAttributes install_attributes_; | 384 ScopedStubEnterpriseInstallAttributes install_attributes_; |
| 358 TestingPrefServiceSimple prefs_; | 385 TestingPrefServiceSimple prefs_; |
| 359 chromeos::system::ScopedFakeStatisticsProvider fake_statistics_provider_; | 386 chromeos::system::ScopedFakeStatisticsProvider fake_statistics_provider_; |
| 360 DiskMountManager::MountPointMap mount_point_map_; | 387 DiskMountManager::MountPointMap mount_point_map_; |
| 361 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; | 388 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; |
| 362 chromeos::ScopedTestCrosSettings test_cros_settings_; | 389 chromeos::ScopedTestCrosSettings test_cros_settings_; |
| 363 chromeos::CrosSettings* cros_settings_; | 390 chromeos::CrosSettings* cros_settings_; |
| 364 chromeos::CrosSettingsProvider* device_settings_provider_; | 391 chromeos::CrosSettingsProvider* device_settings_provider_; |
| 365 chromeos::StubCrosSettingsProvider stub_settings_provider_; | 392 chromeos::StubCrosSettingsProvider stub_settings_provider_; |
| 366 chromeos::MockUserManager* user_manager_; | 393 chromeos::MockUserManager* user_manager_; |
| 367 chromeos::ScopedUserManagerEnabler user_manager_enabler_; | 394 chromeos::ScopedUserManagerEnabler user_manager_enabler_; |
| 368 em::DeviceStatusReportRequest status_; | 395 em::DeviceStatusReportRequest status_; |
| 369 scoped_ptr<TestingDeviceStatusCollector> status_collector_; | 396 scoped_ptr<TestingDeviceStatusCollector> status_collector_; |
| 397 const policy::DeviceLocalAccount fake_device_local_account_; |
| 370 }; | 398 }; |
| 371 | 399 |
| 372 TEST_F(DeviceStatusCollectorTest, AllIdle) { | 400 TEST_F(DeviceStatusCollectorTest, AllIdle) { |
| 373 ui::IdleState test_states[] = { | 401 ui::IdleState test_states[] = { |
| 374 ui::IDLE_STATE_IDLE, | 402 ui::IDLE_STATE_IDLE, |
| 375 ui::IDLE_STATE_IDLE, | 403 ui::IDLE_STATE_IDLE, |
| 376 ui::IDLE_STATE_IDLE | 404 ui::IDLE_STATE_IDLE |
| 377 }; | 405 }; |
| 378 cros_settings_->SetBoolean(chromeos::kReportDeviceActivityTimes, true); | 406 cros_settings_->SetBoolean(chromeos::kReportDeviceActivityTimes, true); |
| 379 | 407 |
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 834 status_.cpu_utilization_pct().size()); | 862 status_.cpu_utilization_pct().size()); |
| 835 for (const auto utilization : status_.cpu_utilization_pct()) | 863 for (const auto utilization : status_.cpu_utilization_pct()) |
| 836 EXPECT_EQ(idle_cpu_usage, utilization); | 864 EXPECT_EQ(idle_cpu_usage, utilization); |
| 837 | 865 |
| 838 // Turning off hardware reporting should not report CPU utilization. | 866 // Turning off hardware reporting should not report CPU utilization. |
| 839 cros_settings_->SetBoolean(chromeos::kReportDeviceHardwareStatus, false); | 867 cros_settings_->SetBoolean(chromeos::kReportDeviceHardwareStatus, false); |
| 840 GetStatus(); | 868 GetStatus(); |
| 841 EXPECT_EQ(0, status_.cpu_utilization_pct().size()); | 869 EXPECT_EQ(0, status_.cpu_utilization_pct().size()); |
| 842 } | 870 } |
| 843 | 871 |
| 872 TEST_F(DeviceStatusCollectorTest, NoSessionStatusIfNotKioskMode) { |
| 873 // Should not report session status if we don't have an active kiosk app. |
| 874 cros_settings_->SetBoolean(chromeos::kReportDeviceSessionStatus, true); |
| 875 em::SessionStatusReportRequest session_status; |
| 876 EXPECT_FALSE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| 877 } |
| 878 |
| 879 TEST_F(DeviceStatusCollectorTest, NoSessionStatusIfSessionReportingDisabled) { |
| 880 // Should not report session status if session status reporting is disabled. |
| 881 cros_settings_->SetBoolean(chromeos::kReportDeviceSessionStatus, false); |
| 882 status_collector_->set_kiosk_account(make_scoped_ptr( |
| 883 new policy::DeviceLocalAccount(fake_device_local_account_)).Pass()); |
| 884 // Set up a device-local account for single-app kiosk mode. |
| 885 MockRunningKioskApp(fake_device_local_account_); |
| 886 |
| 887 em::SessionStatusReportRequest session_status; |
| 888 EXPECT_FALSE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| 889 } |
| 890 |
| 891 TEST_F(DeviceStatusCollectorTest, ReportSessionStatus) { |
| 892 cros_settings_->SetBoolean(chromeos::kReportDeviceSessionStatus, true); |
| 893 status_collector_->set_kiosk_account(make_scoped_ptr( |
| 894 new policy::DeviceLocalAccount(fake_device_local_account_)).Pass()); |
| 895 |
| 896 // Set up a device-local account for single-app kiosk mode. |
| 897 MockRunningKioskApp(fake_device_local_account_); |
| 898 |
| 899 em::SessionStatusReportRequest session_status; |
| 900 EXPECT_TRUE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| 901 ASSERT_EQ(1, session_status.installed_apps_size()); |
| 902 EXPECT_EQ(kKioskAccountId, session_status.device_local_account_id()); |
| 903 const em::AppStatus app = session_status.installed_apps(0); |
| 904 EXPECT_EQ(kKioskAppId, app.app_id()); |
| 905 // Test code just sets the version to the app ID. |
| 906 EXPECT_EQ(kKioskAppId, app.extension_version()); |
| 907 EXPECT_FALSE(app.has_status()); |
| 908 EXPECT_FALSE(app.has_error()); |
| 909 } |
| 910 |
| 844 // Fake device state. | 911 // Fake device state. |
| 845 struct FakeDeviceData { | 912 struct FakeDeviceData { |
| 846 const char* device_path; | 913 const char* device_path; |
| 847 const char* type; | 914 const char* type; |
| 848 const char* object_path; | 915 const char* object_path; |
| 849 const char* mac_address; | 916 const char* mac_address; |
| 850 const char* meid; | 917 const char* meid; |
| 851 const char* imei; | 918 const char* imei; |
| 852 int expected_type; // proto enum type value, -1 for not present. | 919 int expected_type; // proto enum type value, -1 for not present. |
| 853 }; | 920 }; |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NoNetworkStateIfNotKiosk) { | 1106 TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NoNetworkStateIfNotKiosk) { |
| 1040 // If not in an active kiosk session, there should be network interfaces | 1107 // If not in an active kiosk session, there should be network interfaces |
| 1041 // reported, but no network state. | 1108 // reported, but no network state. |
| 1042 GetStatus(); | 1109 GetStatus(); |
| 1043 EXPECT_LT(0, status_.network_interface_size()); | 1110 EXPECT_LT(0, status_.network_interface_size()); |
| 1044 EXPECT_EQ(0, status_.network_state_size()); | 1111 EXPECT_EQ(0, status_.network_state_size()); |
| 1045 } | 1112 } |
| 1046 | 1113 |
| 1047 TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NetworkInterfaces) { | 1114 TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NetworkInterfaces) { |
| 1048 // Mock that we are in kiosk mode so we report network state. | 1115 // Mock that we are in kiosk mode so we report network state. |
| 1049 status_collector_->set_kiosk_mode(true); | 1116 status_collector_->set_kiosk_account(make_scoped_ptr( |
| 1117 new policy::DeviceLocalAccount(fake_device_local_account_)).Pass()); |
| 1050 | 1118 |
| 1051 // Interfaces should be reported by default. | 1119 // Interfaces should be reported by default. |
| 1052 GetStatus(); | 1120 GetStatus(); |
| 1053 EXPECT_LT(0, status_.network_interface_size()); | 1121 EXPECT_LT(0, status_.network_interface_size()); |
| 1054 EXPECT_LT(0, status_.network_state_size()); | 1122 EXPECT_LT(0, status_.network_state_size()); |
| 1055 | 1123 |
| 1056 // No interfaces should be reported if the policy is off. | 1124 // No interfaces should be reported if the policy is off. |
| 1057 cros_settings_->SetBoolean(chromeos::kReportDeviceNetworkInterfaces, false); | 1125 cros_settings_->SetBoolean(chromeos::kReportDeviceNetworkInterfaces, false); |
| 1058 GetStatus(); | 1126 GetStatus(); |
| 1059 EXPECT_EQ(0, status_.network_interface_size()); | 1127 EXPECT_EQ(0, status_.network_interface_size()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1117 found_match = true; | 1185 found_match = true; |
| 1118 break; | 1186 break; |
| 1119 } | 1187 } |
| 1120 } | 1188 } |
| 1121 EXPECT_TRUE(found_match) << "No matching state for fake network " | 1189 EXPECT_TRUE(found_match) << "No matching state for fake network " |
| 1122 << " (" << state.name << ")"; | 1190 << " (" << state.name << ")"; |
| 1123 } | 1191 } |
| 1124 } | 1192 } |
| 1125 | 1193 |
| 1126 } // namespace policy | 1194 } // namespace policy |
| OLD | NEW |