Move requisition logic out of DeviceCloudPolicyManager.

As requisition has nothing to do with device cloud policy,
it should be extracted to the right place.

This change is just a simple no-op refactoring that doesn't change any
logic or lifetime of the objects. Follow-up ones will change the logic
properly.

Bug: 383695
Test: Run tryjobs
Change-Id: Ic2f8a526bb5fd81f9abfe576baebcf1303c41ec1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2207195
Reviewed-by: Alexander Alekseev <[email protected]>
Reviewed-by: Dominic Battré <[email protected]>
Reviewed-by: Alexander Hendrich <[email protected]>
Commit-Queue: Sergey Poromov <[email protected]>
Cr-Commit-Position: refs/heads/master@{#770301}
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index f7cdd55..4f401e3 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -1921,6 +1921,8 @@
     "policy/enrollment_config.h",
     "policy/enrollment_handler_chromeos.cc",
     "policy/enrollment_handler_chromeos.h",
+    "policy/enrollment_requisition_manager.cc",
+    "policy/enrollment_requisition_manager.h",
     "policy/extension_install_event_log_collector.cc",
     "policy/extension_install_event_log_collector.h",
     "policy/extension_install_event_logger.cc",
diff --git a/chrome/browser/chromeos/login/configuration_based_oobe_browsertest.cc b/chrome/browser/chromeos/login/configuration_based_oobe_browsertest.cc
index 62eaa77..89178d8 100644
--- a/chrome/browser/chromeos/login/configuration_based_oobe_browsertest.cc
+++ b/chrome/browser/chromeos/login/configuration_based_oobe_browsertest.cc
@@ -19,6 +19,7 @@
 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/eula_screen_handler.h"
@@ -277,10 +278,10 @@
 IN_PROC_BROWSER_TEST_F(OobeConfigurationTest, TestDeviceRequisition) {
   LoadConfiguration();
   OobeScreenWaiter(EulaView::kScreenId).Wait();
-  auto* policy_manager = g_browser_process->platform_part()
-                             ->browser_policy_connector_chromeos()
-                             ->GetDeviceCloudPolicyManager();
-  EXPECT_EQ(policy_manager->GetDeviceRequisition(), "some_requisition");
+  auto* requisition_manager = g_browser_process->platform_part()
+                                  ->browser_policy_connector_chromeos()
+                                  ->GetEnrollmentRequisitionManager();
+  EXPECT_EQ(requisition_manager->GetDeviceRequisition(), "some_requisition");
 }
 
 // Check that configuration allows to skip Update screen and get to Enrollment
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
index 9aec9a0..0dab962 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
@@ -29,6 +29,7 @@
 #include "chrome/browser/chromeos/policy/device_local_account.h"
 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h"
 #include "chrome/browser/chromeos/policy/enrollment_config.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
@@ -458,13 +459,13 @@
 
 // static
 void DemoSetupController::ClearDemoRequisition(
-    policy::DeviceCloudPolicyManagerChromeOS* policy_manager) {
-  if (policy_manager->GetDeviceRequisition() == kDemoRequisition) {
-    policy_manager->SetDeviceRequisition(std::string());
+    policy::EnrollmentRequisitionManager* requisition_manager) {
+  if (requisition_manager->GetDeviceRequisition() == kDemoRequisition) {
+    requisition_manager->SetDeviceRequisition(std::string());
     // If device requisition is |kDemoRequisition|, it means the sub
     // organization was also set by the demo setup controller, so remove it as
     // well.
-    policy_manager->SetSubOrganization(std::string());
+    requisition_manager->SetSubOrganization(std::string());
   }
 }
 
@@ -632,13 +633,13 @@
 
   enroll_start_time_ = base::TimeTicks::Now();
 
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+  policy::EnrollmentRequisitionManager* requisition_manager =
       g_browser_process->platform_part()
           ->browser_policy_connector_chromeos()
-          ->GetDeviceCloudPolicyManager();
-  DCHECK(policy_manager->GetDeviceRequisition().empty());
-  policy_manager->SetDeviceRequisition(kDemoRequisition);
-  policy_manager->SetSubOrganization(GetSubOrganizationEmail());
+          ->GetEnrollmentRequisitionManager();
+  DCHECK(requisition_manager->GetDeviceRequisition().empty());
+  requisition_manager->SetDeviceRequisition(kDemoRequisition);
+  requisition_manager->SetSubOrganization(GetSubOrganizationEmail());
   policy::EnrollmentConfig config;
   config.mode = policy::EnrollmentConfig::MODE_ATTESTATION;
   config.management_domain = policy::kDemoModeDomain;
@@ -853,11 +854,11 @@
     device_local_account_policy_store_->RemoveObserver(this);
     device_local_account_policy_store_ = nullptr;
   }
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+  policy::EnrollmentRequisitionManager* requisition_manager =
       g_browser_process->platform_part()
           ->browser_policy_connector_chromeos()
-          ->GetDeviceCloudPolicyManager();
-  ClearDemoRequisition(policy_manager);
+          ->GetEnrollmentRequisitionManager();
+  ClearDemoRequisition(requisition_manager);
 }
 
 void DemoSetupController::OnStoreLoaded(policy::CloudPolicyStore* store) {
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h
index aaf8322..10cbe8d 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h
+++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h
@@ -21,7 +21,7 @@
 class PrefRegistrySimple;
 
 namespace policy {
-class DeviceCloudPolicyManagerChromeOS;
+class EnrollmentRequisitionManager;
 }
 
 namespace chromeos {
@@ -174,7 +174,7 @@
   // Clears demo device enrollment requisition on the given |policy_manager| if
   // it is set.
   static void ClearDemoRequisition(
-      policy::DeviceCloudPolicyManagerChromeOS* policy_manager);
+      policy::EnrollmentRequisitionManager* requisition_manager);
 
   // Utility method that returns whether demo mode is allowed on the device.
   static bool IsDemoModeAllowed();
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller_unittest.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller_unittest.cc
index d5041f7..49981a1 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller_unittest.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller_unittest.cc
@@ -18,7 +18,7 @@
 #include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/settings/device_settings_service.h"
 #include "chrome/browser/component_updater/cros_component_installer_chromeos.h"
 #include "chrome/common/pref_names.h"
@@ -121,7 +121,7 @@
     TestingBrowserProcess::GetGlobal()
         ->platform_part()
         ->browser_policy_connector_chromeos()
-        ->GetDeviceCloudPolicyManager()
+        ->GetEnrollmentRequisitionManager()
         ->Initialize(TestingBrowserProcess::GetGlobal()->local_state());
     helper_ = std::make_unique<DemoSetupControllerTestHelper>();
     tested_controller_ = std::make_unique<DemoSetupController>();
@@ -139,7 +139,7 @@
     return TestingBrowserProcess::GetGlobal()
         ->platform_part()
         ->browser_policy_connector_chromeos()
-        ->GetDeviceCloudPolicyManager()
+        ->GetEnrollmentRequisitionManager()
         ->GetDeviceRequisition();
   }
 
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc
index adef804..88362aa88 100644
--- a/chrome/browser/chromeos/login/wizard_controller.cc
+++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -89,6 +89,7 @@
 #include "chrome/browser/chromeos/net/delay_network_call.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/settings/cros_settings.h"
 #include "chrome/browser/chromeos/settings/stats_reporting_controller.h"
 #include "chrome/browser/chromeos/system/device_disabling_manager.h"
@@ -299,11 +300,11 @@
 }
 
 bool IsRemoraRequisition() {
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+  policy::EnrollmentRequisitionManager* requisition_manager =
       g_browser_process->platform_part()
           ->browser_policy_connector_chromeos()
-          ->GetDeviceCloudPolicyManager();
-  return policy_manager && policy_manager->IsRemoraRequisition();
+          ->GetEnrollmentRequisitionManager();
+  return requisition_manager && requisition_manager->IsRemoraRequisition();
 }
 
 chromeos::LoginDisplayHost* GetLoginDisplayHost() {
@@ -1474,13 +1475,13 @@
   auto* requisition_value = oobe_configuration_.FindKeyOfType(
       configuration::kDeviceRequisition, base::Value::Type::STRING);
   if (requisition_value) {
-    auto* policy_manager = g_browser_process->platform_part()
-                               ->browser_policy_connector_chromeos()
-                               ->GetDeviceCloudPolicyManager();
-    if (policy_manager) {
+    auto* requisition_manager = g_browser_process->platform_part()
+                                    ->browser_policy_connector_chromeos()
+                                    ->GetEnrollmentRequisitionManager();
+    if (requisition_manager) {
       VLOG(1) << "Using Device Requisition from configuration"
               << requisition_value->GetString();
-      policy_manager->SetDeviceRequisition(requisition_value->GetString());
+      requisition_manager->SetDeviceRequisition(requisition_value->GetString());
     }
   }
 }
diff --git a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc
index ded86ee..351188ce 100644
--- a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc
+++ b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc
@@ -37,6 +37,7 @@
 #include "chrome/browser/chromeos/policy/device_policy_cloud_external_data_manager.h"
 #include "chrome/browser/chromeos/policy/device_wifi_allowed_handler.h"
 #include "chrome/browser/chromeos/policy/enrollment_config.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/policy/external_data_handlers/device_native_printers_external_data_handler.h"
 #include "chrome/browser/chromeos/policy/external_data_handlers/device_wallpaper_image_external_data_handler.h"
 #include "chrome/browser/chromeos/policy/external_data_handlers/device_wilco_dtc_configuration_external_data_handler.h"
@@ -156,6 +157,8 @@
           std::move(device_cloud_policy_store),
           std::move(external_data_manager), base::ThreadTaskRunnerHandle::Get(),
           state_keys_broker_.get());
+      enrollment_requisition_manager_ =
+          std::make_unique<EnrollmentRequisitionManager>();
       providers_for_init_.push_back(
           base::WrapUnique<ConfigurationPolicyProvider>(
               device_cloud_policy_manager_));
@@ -185,6 +188,7 @@
     // initialized from here instead of BrowserPolicyConnector::Init().
 
     device_cloud_policy_manager_->Initialize(local_state);
+    enrollment_requisition_manager_->Initialize(local_state);
     device_cloud_policy_manager_->AddDeviceCloudPolicyManagerObserver(this);
     RestartDeviceCloudPolicyInitializer();
   }
@@ -496,7 +500,7 @@
           local_state_, device_management_service(), GetBackgroundTaskRunner(),
           chromeos::InstallAttributes::Get(), state_keys_broker_.get(),
           device_cloud_policy_manager_->device_store(),
-          device_cloud_policy_manager_,
+          device_cloud_policy_manager_, enrollment_requisition_manager_.get(),
           cryptohome::AsyncMethodCaller::GetInstance(), CreateAttestationFlow(),
           chromeos::system::StatisticsProvider::GetInstance());
   device_cloud_policy_initializer_->Init();
diff --git a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h
index f9c1cff..d45e74c8 100644
--- a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h
+++ b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h
@@ -48,6 +48,7 @@
 class DeviceNetworkConfigurationUpdater;
 class DeviceWiFiAllowedHandler;
 struct EnrollmentConfig;
+class EnrollmentRequisitionManager;
 class HostnameHandler;
 class MinimumVersionPolicyHandler;
 class MinimumVersionPolicyHandlerDelegateImpl;
@@ -137,6 +138,10 @@
     return device_cloud_policy_manager_;
   }
 
+  EnrollmentRequisitionManager* GetEnrollmentRequisitionManager() const {
+    return enrollment_requisition_manager_.get();
+  }
+
   // May be nullptr, e.g. for cloud-managed devices.
   DeviceActiveDirectoryPolicyManager* GetDeviceActiveDirectoryPolicyManager()
       const {
@@ -246,6 +251,7 @@
   std::unique_ptr<AffiliatedInvalidationServiceProvider>
       affiliated_invalidation_service_provider_;
   DeviceCloudPolicyManagerChromeOS* device_cloud_policy_manager_ = nullptr;
+  std::unique_ptr<EnrollmentRequisitionManager> enrollment_requisition_manager_;
   DeviceActiveDirectoryPolicyManager* device_active_directory_policy_manager_ =
       nullptr;
   PrefService* local_state_ = nullptr;
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_initializer.cc b/chrome/browser/chromeos/policy/device_cloud_policy_initializer.cc
index f576a730..d544f928 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_initializer.cc
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_initializer.cc
@@ -20,6 +20,7 @@
 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
 #include "chrome/browser/chromeos/policy/enrollment_config.h"
 #include "chrome/browser/chromeos/policy/enrollment_handler_chromeos.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/policy/server_backed_device_state.h"
 #include "chrome/browser/chromeos/policy/status_collector/device_status_collector.h"
 #include "chrome/browser/net/system_network_context_manager.h"
@@ -61,8 +62,9 @@
     const scoped_refptr<base::SequencedTaskRunner>& background_task_runner,
     chromeos::InstallAttributes* install_attributes,
     ServerBackedStateKeysBroker* state_keys_broker,
-    DeviceCloudPolicyStoreChromeOS* device_store,
-    DeviceCloudPolicyManagerChromeOS* manager,
+    DeviceCloudPolicyStoreChromeOS* policy_store,
+    DeviceCloudPolicyManagerChromeOS* policy_manager,
+    EnrollmentRequisitionManager* requisition_manager,
     cryptohome::AsyncMethodCaller* async_method_caller,
     std::unique_ptr<chromeos::attestation::AttestationFlow> attestation_flow,
     chromeos::system::StatisticsProvider* statistics_provider)
@@ -71,8 +73,9 @@
       background_task_runner_(background_task_runner),
       install_attributes_(install_attributes),
       state_keys_broker_(state_keys_broker),
-      device_store_(device_store),
-      manager_(manager),
+      policy_store_(policy_store),
+      policy_manager_(policy_manager),
+      requisition_manager_(requisition_manager),
       attestation_flow_(std::move(attestation_flow)),
       statistics_provider_(statistics_provider),
       signing_service_(std::make_unique<TpmEnrollmentKeySigningService>(
@@ -101,7 +104,7 @@
   DCHECK(!is_initialized_);
 
   is_initialized_ = true;
-  device_store_->AddObserver(this);
+  policy_store_->AddObserver(this);
   state_keys_update_subscription_ = state_keys_broker_->RegisterUpdateCallback(
       base::Bind(&DeviceCloudPolicyInitializer::TryToCreateClient,
                  base::Unretained(this)));
@@ -112,7 +115,7 @@
 void DeviceCloudPolicyInitializer::Shutdown() {
   DCHECK(is_initialized_);
 
-  device_store_->RemoveObserver(this);
+  policy_store_->RemoveObserver(this);
   enrollment_handler_.reset();
   state_keys_update_subscription_.reset();
   is_initialized_ = false;
@@ -127,14 +130,15 @@
   DCHECK(is_initialized_);
   DCHECK(!enrollment_handler_);
 
-  manager_->core()->Disconnect();
+  policy_manager_->core()->Disconnect();
 
   enrollment_handler_.reset(new EnrollmentHandlerChromeOS(
-      device_store_, install_attributes_, state_keys_broker_,
+      policy_store_, install_attributes_, state_keys_broker_,
       attestation_flow_.get(), CreateClient(device_management_service),
       background_task_runner_, ad_join_delegate, enrollment_config,
       std::move(dm_auth), install_attributes_->GetDeviceId(),
-      manager_->GetDeviceRequisition(), manager_->GetSubOrganization(),
+      requisition_manager_->GetDeviceRequisition(),
+      requisition_manager_->GetSubOrganization(),
       base::Bind(&DeviceCloudPolicyInitializer::EnrollmentCompleted,
                  base::Unretained(this), enrollment_callback)));
 }
@@ -344,7 +348,7 @@
 }
 
 void DeviceCloudPolicyInitializer::TryToCreateClient() {
-  if (!device_store_->is_initialized() || !device_store_->has_policy() ||
+  if (!policy_store_->is_initialized() || !policy_store_->has_policy() ||
       !state_keys_broker_->available() || enrollment_handler_ ||
       install_attributes_->IsActiveDirectoryManaged()) {
     return;
@@ -354,8 +358,8 @@
 
 void DeviceCloudPolicyInitializer::StartConnection(
     std::unique_ptr<CloudPolicyClient> client) {
-  if (!manager_->core()->service())
-    manager_->StartConnection(std::move(client), install_attributes_);
+  if (!policy_manager_->core()->service())
+    policy_manager_->StartConnection(std::move(client), install_attributes_);
 }
 
 bool DeviceCloudPolicyInitializer::GetMachineFlag(const std::string& key,
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_initializer.h b/chrome/browser/chromeos/policy/device_cloud_policy_initializer.h
index 9da8b347..d9c06a1 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_initializer.h
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_initializer.h
@@ -53,6 +53,7 @@
 class DMAuth;
 struct EnrollmentConfig;
 class EnrollmentHandlerChromeOS;
+class EnrollmentRequisitionManager;
 class EnrollmentStatus;
 
 // This class connects DCPM to the correct device management service, and
@@ -69,8 +70,9 @@
       const scoped_refptr<base::SequencedTaskRunner>& background_task_runner,
       chromeos::InstallAttributes* install_attributes,
       ServerBackedStateKeysBroker* state_keys_broker,
-      DeviceCloudPolicyStoreChromeOS* device_store,
-      DeviceCloudPolicyManagerChromeOS* manager,
+      DeviceCloudPolicyStoreChromeOS* policy_store,
+      DeviceCloudPolicyManagerChromeOS* policy_manager,
+      EnrollmentRequisitionManager* requisition_manager,
       cryptohome::AsyncMethodCaller* async_method_caller,
       std::unique_ptr<chromeos::attestation::AttestationFlow> attestation_flow,
       chromeos::system::StatisticsProvider* statistics_provider);
@@ -161,8 +163,9 @@
   scoped_refptr<base::SequencedTaskRunner> background_task_runner_;
   chromeos::InstallAttributes* install_attributes_;
   ServerBackedStateKeysBroker* state_keys_broker_;
-  DeviceCloudPolicyStoreChromeOS* device_store_;
-  DeviceCloudPolicyManagerChromeOS* manager_;
+  DeviceCloudPolicyStoreChromeOS* policy_store_;
+  DeviceCloudPolicyManagerChromeOS* policy_manager_;
+  EnrollmentRequisitionManager* requisition_manager_;
   std::unique_ptr<chromeos::attestation::AttestationFlow> attestation_flow_;
   chromeos::system::StatisticsProvider* statistics_provider_;
   bool is_initialized_ = false;
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_initializer_unittest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_initializer_unittest.cc
index b79887f4..038a141 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_initializer_unittest.cc
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_initializer_unittest.cc
@@ -46,6 +46,7 @@
             nullptr,
             nullptr,
             nullptr,
+            nullptr,
             std::make_unique<chromeos::attestation::MockAttestationFlow>(),
             &statistics_provider_) {
     RegisterLocalState(local_state_.registry());
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc
index 07f5867..488dd5e 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc
@@ -13,7 +13,6 @@
 #include "base/callback.h"
 #include "base/command_line.h"
 #include "base/files/file_path.h"
-#include "base/logging.h"
 #include "base/macros.h"
 #include "base/path_service.h"
 #include "base/strings/string_number_conversions.h"
@@ -24,9 +23,7 @@
 #include "chrome/browser/chromeos/attestation/enrollment_certificate_uploader_impl.h"
 #include "chrome/browser/chromeos/attestation/enrollment_policy_observer.h"
 #include "chrome/browser/chromeos/attestation/machine_certificate_uploader_impl.h"
-#include "chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h"
 #include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h"
-#include "chrome/browser/chromeos/login/startup_utils.h"
 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
 #include "chrome/browser/chromeos/policy/heartbeat_scheduler.h"
 #include "chrome/browser/chromeos/policy/policy_pref_names.h"
@@ -65,12 +62,6 @@
 
 namespace {
 
-// Well-known requisition types.
-const char kNoRequisition[] = "none";
-const char kRemoraRequisition[] = "remora";
-const char kSharkRequisition[] = "shark";
-const char kRialtoRequisition[] = "rialto";
-
 // Zero-touch enrollment flag values.
 
 const char kZeroTouchEnrollmentForced[] = "forced";
@@ -81,30 +72,6 @@
 constexpr base::TimeDelta kDeviceStatusUploadFrequency =
     base::TimeDelta::FromHours(3);
 
-// Fetches a machine statistic value from StatisticsProvider, returns an empty
-// string on failure.
-std::string GetMachineStatistic(const std::string& key) {
-  std::string value;
-  chromeos::system::StatisticsProvider* provider =
-      chromeos::system::StatisticsProvider::GetInstance();
-  if (!provider->GetMachineStatistic(key, &value))
-    return std::string();
-
-  return value;
-}
-
-// Gets a machine flag from StatisticsProvider, returns the given
-// |default_value| if not present.
-bool GetMachineFlag(const std::string& key, bool default_value) {
-  bool value = default_value;
-  chromeos::system::StatisticsProvider* provider =
-      chromeos::system::StatisticsProvider::GetInstance();
-  if (!provider->GetMachineFlag(key, &value))
-    return default_value;
-
-  return value;
-}
-
 // Checks whether forced re-enrollment is enabled.
 bool ForcedReEnrollmentEnabled() {
   return chromeos::AutoEnrollmentController::IsFREEnabled();
@@ -139,8 +106,6 @@
   state_keys_update_subscription_ = state_keys_broker_->RegisterUpdateCallback(
       base::Bind(&DeviceCloudPolicyManagerChromeOS::OnStateKeysUpdated,
                  base::Unretained(this)));
-
-  InitializeRequisition();
 }
 
 void DeviceCloudPolicyManagerChromeOS::AddDeviceCloudPolicyManagerObserver(
@@ -153,76 +118,6 @@
   observers_.RemoveObserver(observer);
 }
 
-std::string DeviceCloudPolicyManagerChromeOS::GetDeviceRequisition() const {
-  std::string requisition;
-  const PrefService::Preference* pref = local_state_->FindPreference(
-      prefs::kDeviceEnrollmentRequisition);
-  if (!pref->IsDefaultValue())
-    pref->GetValue()->GetAsString(&requisition);
-
-  if (requisition == kNoRequisition)
-    requisition.clear();
-
-  return requisition;
-}
-
-void DeviceCloudPolicyManagerChromeOS::SetDeviceRequisition(
-    const std::string& requisition) {
-  VLOG(1) << "SetDeviceRequisition " << requisition;
-  if (local_state_) {
-    if (requisition.empty()) {
-      local_state_->ClearPref(prefs::kDeviceEnrollmentRequisition);
-      local_state_->ClearPref(prefs::kDeviceEnrollmentAutoStart);
-      local_state_->ClearPref(prefs::kDeviceEnrollmentCanExit);
-    } else {
-      local_state_->SetString(prefs::kDeviceEnrollmentRequisition, requisition);
-      if (requisition == kNoRequisition) {
-        local_state_->ClearPref(prefs::kDeviceEnrollmentAutoStart);
-        local_state_->ClearPref(prefs::kDeviceEnrollmentCanExit);
-      } else {
-        SetDeviceEnrollmentAutoStart();
-      }
-    }
-  }
-}
-
-bool DeviceCloudPolicyManagerChromeOS::IsRemoraRequisition() const {
-  return GetDeviceRequisition() == kRemoraRequisition;
-}
-
-bool DeviceCloudPolicyManagerChromeOS::IsSharkRequisition() const {
-  return GetDeviceRequisition() == kSharkRequisition;
-}
-
-std::string DeviceCloudPolicyManagerChromeOS::GetSubOrganization() const {
-  if (!local_state_)
-    return std::string();
-  std::string sub_organization;
-  const PrefService::Preference* pref =
-      local_state_->FindPreference(prefs::kDeviceEnrollmentSubOrganization);
-  if (!pref->IsDefaultValue())
-    pref->GetValue()->GetAsString(&sub_organization);
-  return sub_organization;
-}
-
-void DeviceCloudPolicyManagerChromeOS::SetSubOrganization(
-    const std::string& sub_organization) {
-  if (!local_state_)
-    return;
-  if (sub_organization.empty())
-    local_state_->ClearPref(prefs::kDeviceEnrollmentSubOrganization);
-  else
-    local_state_->SetString(prefs::kDeviceEnrollmentSubOrganization,
-                            sub_organization);
-}
-
-void DeviceCloudPolicyManagerChromeOS::SetDeviceEnrollmentAutoStart() {
-  if (local_state_) {
-    local_state_->SetBoolean(prefs::kDeviceEnrollmentAutoStart, true);
-    local_state_->SetBoolean(prefs::kDeviceEnrollmentCanExit, false);
-  }
-}
-
 // Keep clean up order as the reversed creation order.
 void DeviceCloudPolicyManagerChromeOS::Shutdown() {
   heartbeat_scheduler_.reset();
@@ -237,12 +132,6 @@
 // static
 void DeviceCloudPolicyManagerChromeOS::RegisterPrefs(
     PrefRegistrySimple* registry) {
-  registry->RegisterStringPref(prefs::kDeviceEnrollmentRequisition,
-                               std::string());
-  registry->RegisterStringPref(prefs::kDeviceEnrollmentSubOrganization,
-                               std::string());
-  registry->RegisterBooleanPref(prefs::kDeviceEnrollmentAutoStart, false);
-  registry->RegisterBooleanPref(prefs::kDeviceEnrollmentCanExit, true);
   registry->RegisterDictionaryPref(prefs::kServerBackedDeviceState);
   registry->RegisterBooleanPref(prefs::kRemoveUsersRemoteCommand, false);
   registry->RegisterStringPref(prefs::kLastRsuDeviceIdUploaded, std::string());
@@ -380,41 +269,6 @@
     client()->SetStateKeysToUpload(state_keys_broker_->state_keys());
 }
 
-void DeviceCloudPolicyManagerChromeOS::InitializeRequisition() {
-  // OEM statistics are only loaded when OOBE is not completed.
-  if (chromeos::StartupUtils::IsOobeCompleted())
-    return;
-
-  // Demo requisition may have been set in a prior enrollment attempt that was
-  // interrupted.
-  chromeos::DemoSetupController::ClearDemoRequisition(this);
-  const PrefService::Preference* pref = local_state_->FindPreference(
-      prefs::kDeviceEnrollmentRequisition);
-  if (pref->IsDefaultValue()) {
-    std::string requisition =
-        GetMachineStatistic(chromeos::system::kOemDeviceRequisitionKey);
-
-    if (!requisition.empty()) {
-      local_state_->SetString(prefs::kDeviceEnrollmentRequisition,
-                              requisition);
-      if (requisition == kRemoraRequisition ||
-          requisition == kSharkRequisition ||
-          requisition == kRialtoRequisition) {
-        SetDeviceEnrollmentAutoStart();
-      } else {
-        local_state_->SetBoolean(
-            prefs::kDeviceEnrollmentAutoStart,
-            GetMachineFlag(chromeos::system::kOemIsEnterpriseManagedKey,
-                           false));
-        local_state_->SetBoolean(
-            prefs::kDeviceEnrollmentCanExit,
-            GetMachineFlag(chromeos::system::kOemCanExitEnterpriseEnrollmentKey,
-                           false));
-      }
-    }
-  }
-}
-
 void DeviceCloudPolicyManagerChromeOS::NotifyConnected() {
   for (auto& observer : observers_)
     observer.OnDeviceCloudPolicyManagerConnected();
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h
index 6fee8da..81fdcb4 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h
@@ -80,21 +80,6 @@
   void AddDeviceCloudPolicyManagerObserver(Observer* observer);
   void RemoveDeviceCloudPolicyManagerObserver(Observer* observer);
 
-  // TODO(davidyu): Move these two functions to a more appropriate place. See
-  // http://crbug.com/383695.
-  // Gets/Sets the device requisition.
-  std::string GetDeviceRequisition() const;
-  void SetDeviceRequisition(const std::string& requisition);
-  bool IsRemoraRequisition() const;
-  bool IsSharkRequisition() const;
-
-  // Gets/Sets the sub organization.
-  std::string GetSubOrganization() const;
-  void SetSubOrganization(const std::string& sub_organization);
-
-  // If set, the device will start the enterprise enrollment OOBE.
-  void SetDeviceEnrollmentAutoStart();
-
   // CloudPolicyManager:
   void Shutdown() override;
 
@@ -167,9 +152,6 @@
   // Saves the state keys received from |session_manager_client_|.
   void OnStateKeysUpdated();
 
-  // Initializes requisition settings at OOBE with values from VPD.
-  void InitializeRequisition();
-
   void NotifyConnected();
   void NotifyDisconnected();
 
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc
index b508aa6..83d5231 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc
@@ -24,6 +24,7 @@
 #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h"
 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
 #include "chrome/browser/chromeos/policy/enrollment_config.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/settings/cros_settings.h"
 #include "chrome/browser/chromeos/settings/device_settings_service.h"
 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h"
@@ -172,6 +173,7 @@
     manager_ = std::make_unique<TestingDeviceCloudPolicyManagerChromeOS>(
         base::WrapUnique(store_), std::move(external_data_manager),
         base::ThreadTaskRunnerHandle::Get(), &state_keys_broker_);
+    requisition_manager_ = std::make_unique<EnrollmentRequisitionManager>();
 
     RegisterLocalState(local_state_.registry());
     manager_->Init(&schema_registry_);
@@ -241,10 +243,11 @@
     std::unique_ptr<chromeos::attestation::AttestationFlow> unique_flow(
         CreateAttestationFlow());
     manager_->Initialize(&local_state_);
+    requisition_manager_->Initialize(&local_state_);
     initializer_ = std::make_unique<DeviceCloudPolicyInitializer>(
         &local_state_, &device_management_service_,
         base::ThreadTaskRunnerHandle::Get(), install_attributes_.get(),
-        &state_keys_broker_, store_, manager_.get(),
+        &state_keys_broker_, store_, manager_.get(), requisition_manager_.get(),
         cryptohome::AsyncMethodCaller::GetInstance(), std::move(unique_flow),
         &fake_statistics_provider_);
     initializer_->SetSigningServiceForTesting(
@@ -311,6 +314,7 @@
   SchemaRegistry schema_registry_;
   MockCloudExternalDataManager* external_data_manager_;
   std::unique_ptr<TestingDeviceCloudPolicyManagerChromeOS> manager_;
+  std::unique_ptr<EnrollmentRequisitionManager> requisition_manager_;
   std::unique_ptr<DeviceCloudPolicyInitializer> initializer_;
   network::TestURLLoaderFactory test_url_loader_factory_;
 
diff --git a/chrome/browser/chromeos/policy/enrollment_requisition_manager.cc b/chrome/browser/chromeos/policy/enrollment_requisition_manager.cc
new file mode 100644
index 0000000..127348a17
--- /dev/null
+++ b/chrome/browser/chromeos/policy/enrollment_requisition_manager.cc
@@ -0,0 +1,176 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
+
+#include "base/logging.h"
+#include "chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h"
+#include "chrome/browser/chromeos/login/startup_utils.h"
+#include "chrome/common/pref_names.h"
+#include "chromeos/system/statistics_provider.h"
+#include "components/prefs/pref_registry_simple.h"
+#include "components/prefs/pref_service.h"
+
+namespace policy {
+
+namespace {
+
+// Well-known requisition types.
+const char kNoRequisition[] = "none";
+const char kRemoraRequisition[] = "remora";
+const char kSharkRequisition[] = "shark";
+const char kRialtoRequisition[] = "rialto";
+
+// Fetches a machine statistic value from StatisticsProvider, returns an empty
+// string on failure.
+std::string GetMachineStatistic(const std::string& key) {
+  std::string value;
+  chromeos::system::StatisticsProvider* provider =
+      chromeos::system::StatisticsProvider::GetInstance();
+  if (!provider->GetMachineStatistic(key, &value))
+    return std::string();
+
+  return value;
+}
+
+// Gets a machine flag from StatisticsProvider, returns the given
+// |default_value| if not present.
+bool GetMachineFlag(const std::string& key, bool default_value) {
+  bool value = default_value;
+  chromeos::system::StatisticsProvider* provider =
+      chromeos::system::StatisticsProvider::GetInstance();
+  if (!provider->GetMachineFlag(key, &value))
+    return default_value;
+
+  return value;
+}
+
+}  // namespace
+
+EnrollmentRequisitionManager::EnrollmentRequisitionManager()
+    : local_state_(nullptr) {}
+
+void EnrollmentRequisitionManager::Initialize(PrefService* local_state) {
+  CHECK(local_state);
+
+  local_state_ = local_state;
+
+  InitializeRequisition();
+}
+
+std::string EnrollmentRequisitionManager::GetDeviceRequisition() const {
+  std::string requisition;
+  const PrefService::Preference* pref =
+      local_state_->FindPreference(prefs::kDeviceEnrollmentRequisition);
+  if (!pref->IsDefaultValue())
+    pref->GetValue()->GetAsString(&requisition);
+
+  if (requisition == kNoRequisition)
+    requisition.clear();
+
+  return requisition;
+}
+
+void EnrollmentRequisitionManager::SetDeviceRequisition(
+    const std::string& requisition) {
+  VLOG(1) << "SetDeviceRequisition " << requisition;
+  if (!local_state_)
+    return;
+  if (requisition.empty()) {
+    local_state_->ClearPref(prefs::kDeviceEnrollmentRequisition);
+    local_state_->ClearPref(prefs::kDeviceEnrollmentAutoStart);
+    local_state_->ClearPref(prefs::kDeviceEnrollmentCanExit);
+  } else {
+    local_state_->SetString(prefs::kDeviceEnrollmentRequisition, requisition);
+    if (requisition == kNoRequisition) {
+      local_state_->ClearPref(prefs::kDeviceEnrollmentAutoStart);
+      local_state_->ClearPref(prefs::kDeviceEnrollmentCanExit);
+    } else {
+      SetDeviceEnrollmentAutoStart();
+    }
+  }
+}
+
+bool EnrollmentRequisitionManager::IsRemoraRequisition() const {
+  return GetDeviceRequisition() == kRemoraRequisition;
+}
+
+bool EnrollmentRequisitionManager::IsSharkRequisition() const {
+  return GetDeviceRequisition() == kSharkRequisition;
+}
+
+std::string EnrollmentRequisitionManager::GetSubOrganization() const {
+  if (!local_state_)
+    return std::string();
+  std::string sub_organization;
+  const PrefService::Preference* pref =
+      local_state_->FindPreference(prefs::kDeviceEnrollmentSubOrganization);
+  if (!pref->IsDefaultValue())
+    pref->GetValue()->GetAsString(&sub_organization);
+  return sub_organization;
+}
+
+void EnrollmentRequisitionManager::SetSubOrganization(
+    const std::string& sub_organization) {
+  if (!local_state_)
+    return;
+  if (sub_organization.empty())
+    local_state_->ClearPref(prefs::kDeviceEnrollmentSubOrganization);
+  else
+    local_state_->SetString(prefs::kDeviceEnrollmentSubOrganization,
+                            sub_organization);
+}
+
+void EnrollmentRequisitionManager::SetDeviceEnrollmentAutoStart() {
+  if (local_state_) {
+    local_state_->SetBoolean(prefs::kDeviceEnrollmentAutoStart, true);
+    local_state_->SetBoolean(prefs::kDeviceEnrollmentCanExit, false);
+  }
+}
+
+// static
+void EnrollmentRequisitionManager::RegisterPrefs(PrefRegistrySimple* registry) {
+  registry->RegisterStringPref(prefs::kDeviceEnrollmentRequisition,
+                               std::string());
+  registry->RegisterStringPref(prefs::kDeviceEnrollmentSubOrganization,
+                               std::string());
+  registry->RegisterBooleanPref(prefs::kDeviceEnrollmentAutoStart, false);
+  registry->RegisterBooleanPref(prefs::kDeviceEnrollmentCanExit, true);
+}
+
+void EnrollmentRequisitionManager::InitializeRequisition() {
+  // OEM statistics are only loaded when OOBE is not completed.
+  if (chromeos::StartupUtils::IsOobeCompleted())
+    return;
+
+  // Demo requisition may have been set in a prior enrollment attempt that was
+  // interrupted.
+  chromeos::DemoSetupController::ClearDemoRequisition(this);
+  const PrefService::Preference* pref =
+      local_state_->FindPreference(prefs::kDeviceEnrollmentRequisition);
+  if (pref->IsDefaultValue()) {
+    std::string requisition =
+        GetMachineStatistic(chromeos::system::kOemDeviceRequisitionKey);
+
+    if (!requisition.empty()) {
+      local_state_->SetString(prefs::kDeviceEnrollmentRequisition, requisition);
+      if (requisition == kRemoraRequisition ||
+          requisition == kSharkRequisition ||
+          requisition == kRialtoRequisition) {
+        SetDeviceEnrollmentAutoStart();
+      } else {
+        local_state_->SetBoolean(
+            prefs::kDeviceEnrollmentAutoStart,
+            GetMachineFlag(chromeos::system::kOemIsEnterpriseManagedKey,
+                           false));
+        local_state_->SetBoolean(
+            prefs::kDeviceEnrollmentCanExit,
+            GetMachineFlag(chromeos::system::kOemCanExitEnterpriseEnrollmentKey,
+                           false));
+      }
+    }
+  }
+}
+
+}  // namespace policy
diff --git a/chrome/browser/chromeos/policy/enrollment_requisition_manager.h b/chrome/browser/chromeos/policy/enrollment_requisition_manager.h
new file mode 100644
index 0000000..dd52282a
--- /dev/null
+++ b/chrome/browser/chromeos/policy/enrollment_requisition_manager.h
@@ -0,0 +1,54 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_POLICY_ENROLLMENT_REQUISITION_MANAGER_H_
+#define CHROME_BROWSER_CHROMEOS_POLICY_ENROLLMENT_REQUISITION_MANAGER_H_
+
+#include <string>
+
+class PrefRegistrySimple;
+class PrefService;
+
+namespace policy {
+
+// Managed device requisition that is being stored in local state and is used
+// during enrollment to specify the intended use of the device.
+class EnrollmentRequisitionManager {
+ public:
+  EnrollmentRequisitionManager();
+  ~EnrollmentRequisitionManager() = default;
+  EnrollmentRequisitionManager(const EnrollmentRequisitionManager&) = delete;
+  EnrollmentRequisitionManager* operator=(const EnrollmentRequisitionManager&) =
+      delete;
+
+  // Initializes requisition information.
+  void Initialize(PrefService* local_state);
+
+  // Gets/Sets the device requisition.
+  std::string GetDeviceRequisition() const;
+  void SetDeviceRequisition(const std::string& requisition);
+  bool IsRemoraRequisition() const;
+  bool IsSharkRequisition() const;
+
+  // Gets/Sets the sub organization.
+  std::string GetSubOrganization() const;
+  void SetSubOrganization(const std::string& sub_organization);
+
+  // If set, the device will start the enterprise enrollment OOBE.
+  void SetDeviceEnrollmentAutoStart();
+
+  // Pref registration helper.
+  static void RegisterPrefs(PrefRegistrySimple* registry);
+
+ private:
+  // Initializes requisition settings at OOBE with values from VPD.
+  void InitializeRequisition();
+
+  // PrefService instance to read the requisition from.
+  PrefService* local_state_;
+};
+
+}  // namespace policy
+
+#endif  // CHROME_BROWSER_CHROMEOS_POLICY_ENROLLMENT_REQUISITION_MANAGER_H_
diff --git a/chrome/browser/chromeos/policy/fake_device_cloud_policy_initializer.cc b/chrome/browser/chromeos/policy/fake_device_cloud_policy_initializer.cc
index 54c05e7d..2c4a8fc 100644
--- a/chrome/browser/chromeos/policy/fake_device_cloud_policy_initializer.cc
+++ b/chrome/browser/chromeos/policy/fake_device_cloud_policy_initializer.cc
@@ -22,7 +22,8 @@
           nullptr,  // install_attributes
           nullptr,  // state_keys_broker
           nullptr,  // device_store
-          nullptr,  // manager
+          nullptr,  // policy_manager
+          nullptr,  // requisition_manager
           nullptr,  // async_caller
           std::make_unique<chromeos::attestation::MockAttestationFlow>(),
           nullptr),  // statistics_provider
diff --git a/chrome/browser/chromeos/system/input_device_settings.cc b/chrome/browser/chromeos/system/input_device_settings.cc
index ac464df..7141792 100644
--- a/chrome/browser/chromeos/system/input_device_settings.cc
+++ b/chrome/browser/chromeos/system/input_device_settings.cc
@@ -7,7 +7,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browser_process_platform_part.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chromeos/system/statistics_provider.h"
 #include "chromeos/tpm/install_attributes.h"
 #include "components/prefs/pref_service.h"
@@ -363,13 +363,13 @@
   if (!connector)
     return false;
 
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
-      connector->GetDeviceCloudPolicyManager();
-  if (!policy_manager)
+  policy::EnrollmentRequisitionManager* requisition_manager =
+      connector->GetEnrollmentRequisitionManager();
+  if (!requisition_manager)
     return false;
 
-  if (policy_manager->IsRemoraRequisition() ||
-      policy_manager->IsSharkRequisition()) {
+  if (requisition_manager->IsRemoraRequisition() ||
+      requisition_manager->IsSharkRequisition()) {
     return true;
   }
 
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 95485d7..5b42e630 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -307,6 +307,7 @@
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
 #include "chrome/browser/chromeos/policy/dm_token_storage.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/policy/external_data_handlers/device_wallpaper_image_external_data_handler.h"
 #include "chrome/browser/chromeos/policy/minimum_version_policy_handler.h"
 #include "chrome/browser/chromeos/policy/policy_cert_service_factory.h"
@@ -763,6 +764,7 @@
   policy::DeviceStatusCollector::RegisterPrefs(registry);
   policy::DeviceWallpaperImageExternalDataHandler::RegisterPrefs(registry);
   policy::DMTokenStorage::RegisterPrefs(registry);
+  policy::EnrollmentRequisitionManager::RegisterPrefs(registry);
   policy::MinimumVersionPolicyHandler::RegisterPrefs(registry);
   policy::PolicyCertServiceFactory::RegisterPrefs(registry);
   policy::TPMAutoUpdateModePolicyHandler::RegisterPrefs(registry);
diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
index c54f2211..e86c9c76 100644
--- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
@@ -30,7 +30,7 @@
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/system/input_device_settings.h"
 #include "chrome/browser/chromeos/system/timezone_resolver_manager.h"
 #include "chrome/browser/lifetime/application_lifetime.h"
@@ -65,11 +65,11 @@
 namespace {
 
 bool IsRemoraRequisition() {
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+  policy::EnrollmentRequisitionManager* requisition_manager =
       g_browser_process->platform_part()
           ->browser_policy_connector_chromeos()
-          ->GetDeviceCloudPolicyManager();
-  return policy_manager && policy_manager->IsRemoraRequisition();
+          ->GetEnrollmentRequisitionManager();
+  return requisition_manager && requisition_manager->IsRemoraRequisition();
 }
 
 void LaunchResetScreen() {
@@ -386,8 +386,9 @@
   policy::BrowserPolicyConnectorChromeOS* connector =
       g_browser_process->platform_part()->browser_policy_connector_chromeos();
   std::string initial_requisition =
-      connector->GetDeviceCloudPolicyManager()->GetDeviceRequisition();
-  connector->GetDeviceCloudPolicyManager()->SetDeviceRequisition(requisition);
+      connector->GetEnrollmentRequisitionManager()->GetDeviceRequisition();
+  connector->GetEnrollmentRequisitionManager()->SetDeviceRequisition(
+      requisition);
 
   if (IsRemoraRequisition()) {
     // CfM devices default to static timezone.
@@ -399,7 +400,7 @@
 
   // Exit Chrome to force the restart as soon as a new requisition is set.
   if (initial_requisition !=
-      connector->GetDeviceCloudPolicyManager()->GetDeviceRequisition()) {
+      connector->GetEnrollmentRequisitionManager()->GetDeviceRequisition()) {
     chrome::AttemptRestart();
   }
 }
@@ -523,13 +524,13 @@
 }
 
 void CoreOobeHandler::UpdateDeviceRequisition() {
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+  policy::EnrollmentRequisitionManager* requisition_manager =
       g_browser_process->platform_part()
           ->browser_policy_connector_chromeos()
-          ->GetDeviceCloudPolicyManager();
-  if (policy_manager) {
+          ->GetEnrollmentRequisitionManager();
+  if (requisition_manager) {
     CallJS("cr.ui.Oobe.updateDeviceRequisition",
-           policy_manager->GetDeviceRequisition());
+           requisition_manager->GetDeviceRequisition());
   }
 }
 
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
index 7386bb7..d0638294 100644
--- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
@@ -27,7 +27,7 @@
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/policy/policy_oauth2_token_fetcher.h"
 #include "chrome/browser/policy/enrollment_status.h"
 #include "chrome/browser/profiles/profile.h"
@@ -883,11 +883,12 @@
   if (!app_locale.empty())
     screen_data.SetString("hl", app_locale);
 
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+  policy::EnrollmentRequisitionManager* requisition_manager =
       g_browser_process->platform_part()
           ->browser_policy_connector_chromeos()
-          ->GetDeviceCloudPolicyManager();
-  const bool cfm = policy_manager && policy_manager->IsRemoraRequisition();
+          ->GetEnrollmentRequisitionManager();
+  const bool cfm =
+      requisition_manager && requisition_manager->IsRemoraRequisition();
   screen_data.SetString("flow", cfm ? "cfm" : "enterprise");
 
   ShowScreenWithData(EnrollmentScreenView::kScreenId, &screen_data);
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
index f1d0d86..3e5c521 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -31,6 +31,7 @@
 #include "chrome/browser/chromeos/login/wizard_controller.h"
 #include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_service_factory.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
 #include "chrome/browser/chromeos/settings/shutdown_policy_handler.h"
 #include "chrome/browser/chromeos/system/input_device_settings.h"
 #include "chrome/browser/extensions/tab_helper.h"
@@ -350,11 +351,11 @@
 }
 
 bool IsRemoraRequisitioned() {
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+  policy::EnrollmentRequisitionManager* requisition_manager =
       g_browser_process->platform_part()
           ->browser_policy_connector_chromeos()
-          ->GetDeviceCloudPolicyManager();
-  return policy_manager && policy_manager->IsRemoraRequisition();
+          ->GetEnrollmentRequisitionManager();
+  return requisition_manager && requisition_manager->IsRemoraRequisition();
 }
 
 }  // namespace