Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / policy / device_cloud_policy_initializer.cc
index 4c6cb9e..7156b10 100644 (file)
@@ -24,6 +24,7 @@
 #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"
 
@@ -67,7 +68,18 @@ DeviceCloudPolicyInitializer::DeviceCloudPolicyInitializer(
       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,
@@ -82,14 +94,14 @@ DeviceCloudPolicyInitializer::DeviceCloudPolicyInitializer(
   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(
@@ -99,7 +111,8 @@ 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(