#include "chromeos/system/statistics_provider.h"
#include "components/policy/core/common/cloud/cloud_policy_constants.h"
#include "components/policy/core/common/cloud/cloud_policy_core.h"
+#include "components/policy/core/common/cloud/device_management_service.h"
#include "components/policy/core/common/cloud/system_policy_request_context.h"
#include "net/url_request/url_request_context_getter.h"
device_store_(device_store),
manager_(manager),
device_settings_service_(device_settings_service),
- on_connected_callback_(on_connected_callback) {
+ on_connected_callback_(on_connected_callback),
+ is_initialized_(false) {
+}
+
+DeviceCloudPolicyInitializer::~DeviceCloudPolicyInitializer() {
+ DCHECK(!is_initialized_);
+}
+
+void DeviceCloudPolicyInitializer::Init() {
+ DCHECK(!is_initialized_);
+
+ is_initialized_ = true;
device_store_->AddObserver(this);
state_keys_update_subscription_ = state_keys_broker_->RegisterUpdateCallback(
base::Bind(&DeviceCloudPolicyInitializer::TryToCreateClient,
TryToCreateClient();
}
-DeviceCloudPolicyInitializer::~DeviceCloudPolicyInitializer() {
-}
-
void DeviceCloudPolicyInitializer::Shutdown() {
+ DCHECK(is_initialized_);
+
device_store_->RemoveObserver(this);
device_status_provider_.reset();
enrollment_handler_.reset();
state_keys_update_subscription_.reset();
+ is_initialized_ = false;
}
void DeviceCloudPolicyInitializer::StartEnrollment(
bool is_auto_enrollment,
const AllowedDeviceModes& allowed_device_modes,
const EnrollmentCallback& enrollment_callback) {
- CHECK(!enrollment_handler_);
+ DCHECK(is_initialized_);
+ DCHECK(!enrollment_handler_);
manager_->core()->Disconnect();
enrollment_handler_.reset(new EnrollmentHandlerChromeOS(