| Index: chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc
|
| diff --git a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc
|
| index f58ba2529cafeadae96c21131b78e552d7b40647..59482e0ec700b155647796e4154e3dcfd1bd6ef4 100644
|
| --- a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc
|
| +++ b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.h"
|
|
|
| #include "base/bind.h"
|
| +#include "base/command_line.h"
|
| #include "base/location.h"
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| @@ -19,6 +20,7 @@
|
| #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h"
|
| #include "chrome/browser/chromeos/policy/policy_oauth2_token_fetcher.h"
|
| #include "chrome/browser/chromeos/profiles/profile_helper.h"
|
| +#include "chromeos/chromeos_switches.h"
|
| #include "chromeos/dbus/dbus_thread_manager.h"
|
| #include "components/policy/core/common/cloud/cloud_policy_constants.h"
|
| #include "google_apis/gaia/gaia_auth_consumer.h"
|
| @@ -160,15 +162,40 @@ void EnterpriseEnrollmentHelperImpl::DoEnroll(const std::string& token) {
|
| return;
|
| }
|
|
|
| + bool check_license_type = false;
|
| + // The license selection dialog is not used when doing Zero Touch.
|
| + if (!enrollment_config_.is_mode_attestation()) {
|
| + check_license_type = base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| + chromeos::switches::kEnterpriseEnableLicenseTypeSelection);
|
| + }
|
| +
|
| connector->ScheduleServiceInitialization(0);
|
| policy::DeviceCloudPolicyInitializer* dcp_initializer =
|
| connector->GetDeviceCloudPolicyInitializer();
|
| CHECK(dcp_initializer);
|
| - dcp_initializer->StartEnrollment(
|
| + dcp_initializer->PrepareEnrollment(
|
| connector->device_management_service(), ad_join_delegate_,
|
| enrollment_config_, token,
|
| base::Bind(&EnterpriseEnrollmentHelperImpl::OnEnrollmentFinished,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| + if (check_license_type) {
|
| + dcp_initializer->CheckAvailableLicenses(
|
| + base::Bind(&EnterpriseEnrollmentHelperImpl::OnLicenseMapObtained,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| + } else {
|
| + dcp_initializer->StartEnrollment();
|
| + }
|
| +}
|
| +
|
| +void EnterpriseEnrollmentHelperImpl::UseLicenseType(policy::LicenseType type) {
|
| + DCHECK(type != policy::LicenseType::UNKNOWN);
|
| + policy::DeviceCloudPolicyInitializer* dcp_initializer =
|
| + g_browser_process->platform_part()
|
| + ->browser_policy_connector_chromeos()
|
| + ->GetDeviceCloudPolicyInitializer();
|
| +
|
| + CHECK(dcp_initializer);
|
| + dcp_initializer->StartEnrollmentWithLicense(type);
|
| }
|
|
|
| void EnterpriseEnrollmentHelperImpl::GetDeviceAttributeUpdatePermission() {
|
| @@ -250,6 +277,31 @@ void EnterpriseEnrollmentHelperImpl::OnEnrollmentFinished(
|
| }
|
| }
|
|
|
| +void EnterpriseEnrollmentHelperImpl::OnLicenseMapObtained(
|
| + const EnrollmentLicenseMap& licenses) {
|
| + int count = 0;
|
| + policy::LicenseType license_type = policy::LicenseType::UNKNOWN;
|
| + for (const auto& it : licenses) {
|
| + if (it.second > 0) {
|
| + count++;
|
| + license_type = it.first;
|
| + }
|
| + }
|
| + if (count == 0) {
|
| + // No user license type selection allowed, start usual enrollment.
|
| + policy::BrowserPolicyConnectorChromeOS* connector =
|
| + g_browser_process->platform_part()->browser_policy_connector_chromeos();
|
| + policy::DeviceCloudPolicyInitializer* dcp_initializer =
|
| + connector->GetDeviceCloudPolicyInitializer();
|
| + CHECK(dcp_initializer);
|
| + dcp_initializer->StartEnrollment();
|
| + } else if (count == 1) {
|
| + UseLicenseType(license_type);
|
| + } else {
|
| + status_consumer()->OnMultipleLicensesAvailable(licenses);
|
| + }
|
| +}
|
| +
|
| void EnterpriseEnrollmentHelperImpl::OnDeviceAttributeUpdatePermission(
|
| bool granted) {
|
| // TODO(pbond): remove this LOG once http://crbug.com/586961 is fixed.
|
|
|