Chromium Code Reviews| 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 <algorithm> | 10 #include <algorithm> |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 36 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 36 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 37 #include "chrome/browser/chromeos/policy/device_local_account.h" | 37 #include "chrome/browser/chromeos/policy/device_local_account.h" |
| 38 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" | 38 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" |
| 39 #include "chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.h" | 39 #include "chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.h" |
| 40 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 40 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 41 #include "chrome/browser/chromeos/settings/cros_settings.h" | 41 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 42 #include "chrome/browser/policy/profile_policy_connector.h" | 42 #include "chrome/browser/policy/profile_policy_connector.h" |
| 43 #include "chrome/browser/policy/profile_policy_connector_factory.h" | 43 #include "chrome/browser/policy/profile_policy_connector_factory.h" |
| 44 #include "chrome/browser/profiles/profile_manager.h" | 44 #include "chrome/browser/profiles/profile_manager.h" |
| 45 #include "chrome/common/pref_names.h" | 45 #include "chrome/common/pref_names.h" |
| 46 #include "chromeos/audio/cras_audio_handler.h" | |
| 46 #include "chromeos/dbus/dbus_thread_manager.h" | 47 #include "chromeos/dbus/dbus_thread_manager.h" |
| 47 #include "chromeos/dbus/update_engine_client.h" | 48 #include "chromeos/dbus/update_engine_client.h" |
| 48 #include "chromeos/disks/disk_mount_manager.h" | 49 #include "chromeos/disks/disk_mount_manager.h" |
| 49 #include "chromeos/network/device_state.h" | 50 #include "chromeos/network/device_state.h" |
| 50 #include "chromeos/network/network_handler.h" | 51 #include "chromeos/network/network_handler.h" |
| 51 #include "chromeos/network/network_state.h" | 52 #include "chromeos/network/network_state.h" |
| 52 #include "chromeos/network/network_state_handler.h" | 53 #include "chromeos/network/network_state_handler.h" |
| 53 #include "chromeos/settings/cros_settings_names.h" | 54 #include "chromeos/settings/cros_settings_names.h" |
| 54 #include "chromeos/system/statistics_provider.h" | 55 #include "chromeos/system/statistics_provider.h" |
| 55 #include "components/arc/arc_bridge_service.h" | 56 #include "components/arc/arc_bridge_service.h" |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 478 users_subscription_ = cros_settings_->AddSettingsObserver( | 479 users_subscription_ = cros_settings_->AddSettingsObserver( |
| 479 chromeos::kReportDeviceUsers, callback); | 480 chromeos::kReportDeviceUsers, callback); |
| 480 hardware_status_subscription_ = cros_settings_->AddSettingsObserver( | 481 hardware_status_subscription_ = cros_settings_->AddSettingsObserver( |
| 481 chromeos::kReportDeviceHardwareStatus, callback); | 482 chromeos::kReportDeviceHardwareStatus, callback); |
| 482 session_status_subscription_ = cros_settings_->AddSettingsObserver( | 483 session_status_subscription_ = cros_settings_->AddSettingsObserver( |
| 483 chromeos::kReportDeviceSessionStatus, callback); | 484 chromeos::kReportDeviceSessionStatus, callback); |
| 484 os_update_status_subscription_ = cros_settings_->AddSettingsObserver( | 485 os_update_status_subscription_ = cros_settings_->AddSettingsObserver( |
| 485 chromeos::kReportOsUpdateStatus, callback); | 486 chromeos::kReportOsUpdateStatus, callback); |
| 486 running_kiosk_app_subscription_ = cros_settings_->AddSettingsObserver( | 487 running_kiosk_app_subscription_ = cros_settings_->AddSettingsObserver( |
| 487 chromeos::kReportRunningKioskApp, callback); | 488 chromeos::kReportRunningKioskApp, callback); |
| 489 sound_volume_subscription_ = cros_settings_->AddSettingsObserver( | |
| 490 chromeos::kReportSoundVolume, callback); | |
| 488 | 491 |
| 489 // Fetch the current values of the policies. | 492 // Fetch the current values of the policies. |
| 490 UpdateReportingSettings(); | 493 UpdateReportingSettings(); |
| 491 | 494 |
| 492 // Get the the OS and firmware version info. | 495 // Get the the OS and firmware version info. |
| 493 base::PostTaskAndReplyWithResult( | 496 base::PostTaskAndReplyWithResult( |
| 494 content::BrowserThread::GetBlockingPool(), | 497 content::BrowserThread::GetBlockingPool(), |
| 495 FROM_HERE, | 498 FROM_HERE, |
| 496 base::Bind(&chromeos::version_loader::GetVersion, | 499 base::Bind(&chromeos::version_loader::GetVersion, |
| 497 chromeos::version_loader::VERSION_FULL), | 500 chromeos::version_loader::VERSION_FULL), |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 551 } | 554 } |
| 552 if (!cros_settings_->GetBoolean( | 555 if (!cros_settings_->GetBoolean( |
| 553 chromeos::kReportDeviceNetworkInterfaces, | 556 chromeos::kReportDeviceNetworkInterfaces, |
| 554 &report_network_interfaces_)) { | 557 &report_network_interfaces_)) { |
| 555 report_network_interfaces_ = true; | 558 report_network_interfaces_ = true; |
| 556 } | 559 } |
| 557 if (!cros_settings_->GetBoolean( | 560 if (!cros_settings_->GetBoolean( |
| 558 chromeos::kReportDeviceUsers, &report_users_)) { | 561 chromeos::kReportDeviceUsers, &report_users_)) { |
| 559 report_users_ = true; | 562 report_users_ = true; |
| 560 } | 563 } |
| 564 if (!cros_settings_->GetBoolean( | |
| 565 chromeos::kReportSoundVolume, &report_sound_volume_)) { | |
| 566 report_sound_volume_ = true; | |
| 567 } | |
| 561 | 568 |
| 562 const bool already_reporting_hardware_status = report_hardware_status_; | 569 const bool already_reporting_hardware_status = report_hardware_status_; |
| 563 if (!cros_settings_->GetBoolean( | 570 if (!cros_settings_->GetBoolean( |
| 564 chromeos::kReportDeviceHardwareStatus, &report_hardware_status_)) { | 571 chromeos::kReportDeviceHardwareStatus, &report_hardware_status_)) { |
| 565 report_hardware_status_ = true; | 572 report_hardware_status_ = true; |
| 566 } | 573 } |
| 567 | 574 |
| 568 if (!cros_settings_->GetBoolean(chromeos::kReportDeviceSessionStatus, | 575 if (!cros_settings_->GetBoolean(chromeos::kReportDeviceSessionStatus, |
| 569 &report_kiosk_session_status_)) { | 576 &report_kiosk_session_status_)) { |
| 570 report_kiosk_session_status_ = true; | 577 report_kiosk_session_status_ = true; |
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 975 scoped_refptr<GetStatusState> state) { | 982 scoped_refptr<GetStatusState> state) { |
| 976 // Sample disk volume info in a background thread. | 983 // Sample disk volume info in a background thread. |
| 977 state->SampleVolumeInfo(volume_info_fetcher_); | 984 state->SampleVolumeInfo(volume_info_fetcher_); |
| 978 | 985 |
| 979 // Sample CPU temperature in a background thread. | 986 // Sample CPU temperature in a background thread. |
| 980 state->SampleCPUTempInfo(cpu_temp_fetcher_); | 987 state->SampleCPUTempInfo(cpu_temp_fetcher_); |
| 981 | 988 |
| 982 // Add CPU utilization and free RAM. Note that these stats are sampled in | 989 // Add CPU utilization and free RAM. Note that these stats are sampled in |
| 983 // regular intervals. Unlike CPU temp and volume info these are not one-time | 990 // regular intervals. Unlike CPU temp and volume info these are not one-time |
| 984 // sampled values, hence the difference in logic. | 991 // sampled values, hence the difference in logic. |
| 985 status->set_system_ram_total(base::SysInfo::AmountOfPhysicalMemory()); | 992 status->set_system_ram_total(base::SysInfo::AmountOfPhysicalMemory()); |
|
Andrew T Wilson (Slow)
2017/03/09 15:56:34
I'd include the volume reporting here.
| |
| 986 status->clear_system_ram_free(); | 993 status->clear_system_ram_free(); |
| 987 status->clear_cpu_utilization_pct(); | 994 status->clear_cpu_utilization_pct(); |
| 988 for (const ResourceUsage& usage : resource_usage_) { | 995 for (const ResourceUsage& usage : resource_usage_) { |
| 989 status->add_cpu_utilization_pct(usage.cpu_usage_percent); | 996 status->add_cpu_utilization_pct(usage.cpu_usage_percent); |
| 990 status->add_system_ram_free(usage.bytes_of_ram_free); | 997 status->add_system_ram_free(usage.bytes_of_ram_free); |
| 991 } | 998 } |
| 992 return true; | 999 return true; |
| 993 } | 1000 } |
| 994 | 1001 |
| 995 bool DeviceStatusCollector::GetOsUpdateStatus( | 1002 bool DeviceStatusCollector::GetOsUpdateStatus( |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1072 | 1079 |
| 1073 chromeos::KioskAppManager::App app_info; | 1080 chromeos::KioskAppManager::App app_info; |
| 1074 if (chromeos::KioskAppManager::Get()->GetApp(account->kiosk_app_id, | 1081 if (chromeos::KioskAppManager::Get()->GetApp(account->kiosk_app_id, |
| 1075 &app_info)) { | 1082 &app_info)) { |
| 1076 running_kiosk_app->set_required_platform_version( | 1083 running_kiosk_app->set_required_platform_version( |
| 1077 app_info.required_platform_version); | 1084 app_info.required_platform_version); |
| 1078 } | 1085 } |
| 1079 return true; | 1086 return true; |
| 1080 } | 1087 } |
| 1081 | 1088 |
| 1089 bool DeviceStatusCollector::GetSoundVolume( | |
| 1090 em::DeviceStatusReportRequest* status) { | |
| 1091 chromeos::CrasAudioHandler* audio_handler = chromeos::CrasAudioHandler::Get(); | |
| 1092 status->set_sound_volume(audio_handler->GetOutputVolumePercent()); | |
| 1093 return true; | |
| 1094 } | |
| 1095 | |
| 1082 void DeviceStatusCollector::GetDeviceAndSessionStatusAsync( | 1096 void DeviceStatusCollector::GetDeviceAndSessionStatusAsync( |
| 1083 const StatusCallback& response) { | 1097 const StatusCallback& response) { |
| 1084 // Must be on creation thread since some stats are written to in that thread | 1098 // Must be on creation thread since some stats are written to in that thread |
| 1085 // and accessing them from another thread would lead to race conditions. | 1099 // and accessing them from another thread would lead to race conditions. |
| 1086 DCHECK(thread_checker_.CalledOnValidThread()); | 1100 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1087 | 1101 |
| 1088 // Some of the data we're collecting is gathered in background threads. | 1102 // Some of the data we're collecting is gathered in background threads. |
| 1089 // This object keeps track of the state of each async request. | 1103 // This object keeps track of the state of each async request. |
| 1090 scoped_refptr<GetStatusState> state( | 1104 scoped_refptr<GetStatusState> state( |
| 1091 new GetStatusState(task_runner_, response)); | 1105 new GetStatusState(task_runner_, response)); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1124 | 1138 |
| 1125 if (report_hardware_status_) | 1139 if (report_hardware_status_) |
| 1126 anything_reported |= GetHardwareStatus(status, state); | 1140 anything_reported |= GetHardwareStatus(status, state); |
| 1127 | 1141 |
| 1128 if (report_os_update_status_) | 1142 if (report_os_update_status_) |
| 1129 anything_reported |= GetOsUpdateStatus(status); | 1143 anything_reported |= GetOsUpdateStatus(status); |
| 1130 | 1144 |
| 1131 if (report_running_kiosk_app_) | 1145 if (report_running_kiosk_app_) |
| 1132 anything_reported |= GetRunningKioskApp(status); | 1146 anything_reported |= GetRunningKioskApp(status); |
| 1133 | 1147 |
| 1148 if (report_sound_volume_) | |
| 1149 anything_reported |= GetSoundVolume(status); | |
| 1150 | |
| 1134 // Wipe pointer if we didn't actually add any data. | 1151 // Wipe pointer if we didn't actually add any data. |
| 1135 if (!anything_reported) | 1152 if (!anything_reported) |
| 1136 state->ResetDeviceStatus(); | 1153 state->ResetDeviceStatus(); |
| 1137 } | 1154 } |
| 1138 | 1155 |
| 1139 std::string DeviceStatusCollector::GetDMTokenForProfile(Profile* profile) { | 1156 std::string DeviceStatusCollector::GetDMTokenForProfile(Profile* profile) { |
| 1140 CloudPolicyManager* user_cloud_policy_manager = | 1157 CloudPolicyManager* user_cloud_policy_manager = |
| 1141 UserPolicyManagerFactoryChromeOS::GetCloudPolicyManagerForProfile( | 1158 UserPolicyManagerFactoryChromeOS::GetCloudPolicyManagerForProfile( |
| 1142 profile); | 1159 profile); |
| 1143 if (!user_cloud_policy_manager) { | 1160 if (!user_cloud_policy_manager) { |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1245 | 1262 |
| 1246 void DeviceStatusCollector::OnOSVersion(const std::string& version) { | 1263 void DeviceStatusCollector::OnOSVersion(const std::string& version) { |
| 1247 os_version_ = version; | 1264 os_version_ = version; |
| 1248 } | 1265 } |
| 1249 | 1266 |
| 1250 void DeviceStatusCollector::OnOSFirmware(const std::string& version) { | 1267 void DeviceStatusCollector::OnOSFirmware(const std::string& version) { |
| 1251 firmware_version_ = version; | 1268 firmware_version_ = version; |
| 1252 } | 1269 } |
| 1253 | 1270 |
| 1254 } // namespace policy | 1271 } // namespace policy |
| OLD | NEW |