Chromium Code Reviews| Index: chrome/browser/policy/cloud/device_management_service.cc |
| diff --git a/chrome/browser/policy/cloud/device_management_service.cc b/chrome/browser/policy/cloud/device_management_service.cc |
| index d003c57c253a64257e1b4aef238c7d13ebbc1957..7b957d07328f5fcd7cdb35c8472656d54a9c0690 100644 |
| --- a/chrome/browser/policy/cloud/device_management_service.cc |
| +++ b/chrome/browser/policy/cloud/device_management_service.cc |
| @@ -10,6 +10,9 @@ |
| #include "base/compiler_specific.h" |
| #include "base/message_loop/message_loop.h" |
| #include "base/message_loop/message_loop_proxy.h" |
| +#include "base/strings/stringprintf.h" |
| +#include "base/sys_info.h" |
| +#include "chromeos/system/statistics_provider.h" |
| #include "net/base/escape.h" |
| #include "net/base/load_flags.h" |
| #include "net/base/net_errors.h" |
| @@ -26,6 +29,10 @@ |
| #include "net/url_request/url_request_status.h" |
| #include "url/gurl.h" |
| +#if defined(OS_CHROMEOS) |
| +#include "chromeos/system/statistics_provider.h" |
|
Joao da Silva
2013/10/02 10:06:26
Unfortunately this is a no-go. We are moving this
stevenjb
2013/10/02 16:59:49
Components *can* rely on /src/chromeos. I'll look
stevenjb
2013/10/03 01:17:23
https://codereview.chromium.org/25690003 is defini
|
| +#endif |
| + |
| namespace em = enterprise_management; |
| namespace policy { |
| @@ -214,6 +221,38 @@ DeviceManagementRequestContextGetter::GetNetworkTaskRunner() const { |
| return base_context_getter_->GetNetworkTaskRunner(); |
| } |
| +std::string GetPlatformParameter() { |
| + std::string os_name = base::SysInfo::OperatingSystemName(); |
| + std::string os_hardware = base::SysInfo::OperatingSystemArchitecture(); |
| + |
| +#if defined(OS_CHROMEOS) |
| + std::string hwclass; |
| + if (!chromeos::system::StatisticsProvider::GetInstance() |
| + ->GetMachineStatistic(chromeos::system::kHardwareClassKey, &hwclass)) { |
| + LOG(ERROR) << "Failed to get machine information"; |
| + } |
| + os_name += ",CrOS," + base::SysInfo::GetLsbReleaseBoard(); |
| + os_hardware += "," + hwclass; |
| +#endif |
| + |
| + std::string os_version("-"); |
| +#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) |
| + int32 os_major_version = 0; |
| + int32 os_minor_version = 0; |
| + int32 os_bugfix_version = 0; |
| + base::SysInfo::OperatingSystemVersionNumbers(&os_major_version, |
| + &os_minor_version, |
| + &os_bugfix_version); |
| + os_version = base::StringPrintf("%d.%d.%d", |
| + os_major_version, |
| + os_minor_version, |
| + os_bugfix_version); |
| +#endif |
| + |
| + return base::StringPrintf( |
| + "%s|%s|%s", os_name.c_str(), os_hardware.c_str(), os_version.c_str()); |
| +} |
| + |
| } // namespace |
| // Request job implementation used with DeviceManagementService. |
| @@ -484,6 +523,8 @@ DeviceManagementService::~DeviceManagementService() { |
| DeviceManagementRequestJob* DeviceManagementService::CreateJob( |
| DeviceManagementRequestJob::JobType type) { |
| + if (platform_parameter_.empty()) |
| + platform_parameter_ = GetPlatformParameter(); |
| return new DeviceManagementRequestJobImpl( |
| type, agent_parameter_, platform_parameter_, this); |
| } |
| @@ -526,13 +567,11 @@ DeviceManagementService::DeviceManagementService( |
| scoped_refptr<net::URLRequestContextGetter> request_context, |
| const std::string& server_url, |
| const std::string& user_agent, |
| - const std::string& agent_parameter, |
| - const std::string& platform_parameter) |
| + const std::string& agent_parameter) |
| : request_context_(request_context), |
| server_url_(server_url), |
| user_agent_(user_agent), |
| agent_parameter_(agent_parameter), |
| - platform_parameter_(platform_parameter), |
| initialized_(false), |
| weak_ptr_factory_(this) { |
| } |