1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "components/policy/core/browser/browser_policy_connector_ios.h"
7 #include "base/sequenced_task_runner.h"
8 #include "base/strings/stringprintf.h"
9 #include "base/sys_info.h"
10 #include "components/policy/core/common/async_policy_provider.h"
11 #include "components/policy/core/common/cloud/device_management_service.h"
12 #include "components/policy/core/common/policy_loader_ios.h"
13 #include "net/url_request/url_request_context_getter.h"
19 class DeviceManagementServiceConfiguration
20 : public DeviceManagementService::Configuration {
22 explicit DeviceManagementServiceConfiguration(const std::string& user_agent)
23 : user_agent_(user_agent) {}
25 virtual ~DeviceManagementServiceConfiguration() {}
27 virtual std::string GetServerUrl() OVERRIDE {
28 return BrowserPolicyConnector::GetDeviceManagementUrl();
31 virtual std::string GetAgentParameter() OVERRIDE {
35 virtual std::string GetPlatformParameter() OVERRIDE {
36 std::string os_name = base::SysInfo::OperatingSystemName();
37 std::string os_hardware = base::SysInfo::OperatingSystemArchitecture();
38 std::string os_version("-");
39 int32 os_major_version = 0;
40 int32 os_minor_version = 0;
41 int32 os_bugfix_version = 0;
42 base::SysInfo::OperatingSystemVersionNumbers(&os_major_version,
45 os_version = base::StringPrintf("%d.%d.%d",
49 return base::StringPrintf(
50 "%s|%s|%s", os_name.c_str(), os_hardware.c_str(), os_version.c_str());
54 std::string user_agent_;
56 DISALLOW_COPY_AND_ASSIGN(DeviceManagementServiceConfiguration);
61 BrowserPolicyConnectorIOS::BrowserPolicyConnectorIOS(
62 const HandlerListFactory& handler_list_factory,
63 const std::string& user_agent,
64 scoped_refptr<base::SequencedTaskRunner> background_task_runner)
65 : BrowserPolicyConnector(handler_list_factory),
66 user_agent_(user_agent) {
67 scoped_ptr<AsyncPolicyLoader> loader(
68 new PolicyLoaderIOS(background_task_runner));
69 scoped_ptr<ConfigurationPolicyProvider> provider(
70 new AsyncPolicyProvider(GetSchemaRegistry(), loader.Pass()));
71 SetPlatformPolicyProvider(provider.Pass());
74 BrowserPolicyConnectorIOS::~BrowserPolicyConnectorIOS() {}
76 void BrowserPolicyConnectorIOS::Init(
77 PrefService* local_state,
78 scoped_refptr<net::URLRequestContextGetter> request_context) {
79 scoped_ptr<DeviceManagementService::Configuration> configuration(
80 new DeviceManagementServiceConfiguration(user_agent_));
81 scoped_ptr<DeviceManagementService> device_management_service(
82 new DeviceManagementService(configuration.Pass()));
84 // Delay initialization of the cloud policy requests by 5 seconds.
85 const int64 kServiceInitializationStartupDelay = 5000;
86 device_management_service->ScheduleInitialization(
87 kServiceInitializationStartupDelay);
89 BrowserPolicyConnector::Init(
90 local_state, request_context, device_management_service.Pass());