Index: chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos.cc |
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos.cc b/chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos.cc |
index 0893816d19a97bc2bd6c4e424c8d40c8f729fc6c..7a4ef22c63dc6a775edfd1385e135ac6507609be 100644 |
--- a/chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos.cc |
+++ b/chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos.cc |
@@ -66,18 +66,22 @@ UserCloudPolicyStoreChromeOS::UserCloudPolicyStoreChromeOS( |
chromeos::SessionManagerClient* session_manager_client, |
scoped_refptr<base::SequencedTaskRunner> background_task_runner, |
const AccountId& account_id, |
- const base::FilePath& user_policy_key_dir) |
+ const base::FilePath& user_policy_key_dir, |
+ bool is_active_directory) |
: UserCloudPolicyStoreBase(background_task_runner), |
cryptohome_client_(cryptohome_client), |
session_manager_client_(session_manager_client), |
account_id_(account_id), |
user_policy_key_dir_(user_policy_key_dir), |
+ is_active_directory_(is_active_directory), |
weak_factory_(this) {} |
UserCloudPolicyStoreChromeOS::~UserCloudPolicyStoreChromeOS() {} |
void UserCloudPolicyStoreChromeOS::Store( |
const em::PolicyFetchResponse& policy) { |
+ DCHECK(!is_active_directory_); |
+ |
// Cancel all pending requests. |
weak_factory_.InvalidateWeakPtrs(); |
std::unique_ptr<em::PolicyFetchResponse> response( |
@@ -98,9 +102,9 @@ void UserCloudPolicyStoreChromeOS::Load() { |
} |
void UserCloudPolicyStoreChromeOS::LoadImmediately() { |
- // This blocking DBus call is in the startup path and will block the UI |
+ // This blocking D-Bus call is in the startup path and will block the UI |
// thread. This only happens when the Profile is created synchronously, which |
- // on ChromeOS happens whenever the browser is restarted into the same |
+ // on Chrome OS happens whenever the browser is restarted into the same |
// session. That happens when the browser crashes, or right after signin if |
// the user has flags configured in about:flags. |
// However, on those paths we must load policy synchronously so that the |
@@ -225,10 +229,13 @@ void UserCloudPolicyStoreChromeOS::OnPolicyRetrieved( |
} |
// Load |cached_policy_key_| to verify the loaded policy. |
- EnsurePolicyKeyLoaded( |
- base::Bind(&UserCloudPolicyStoreChromeOS::ValidateRetrievedPolicy, |
- weak_factory_.GetWeakPtr(), |
- base::Passed(&policy))); |
+ if (is_active_directory_) { |
+ ValidateRetrievedPolicy(std::move(policy)); |
+ } else { |
+ EnsurePolicyKeyLoaded( |
emaxx
2016/12/28 19:09:20
Before the refactoring is done to separate out the
Thiemo Nagel
2016/12/29 15:08:27
Done.
|
+ base::Bind(&UserCloudPolicyStoreChromeOS::ValidateRetrievedPolicy, |
+ weak_factory_.GetWeakPtr(), base::Passed(&policy))); |
+ } |
} |
void UserCloudPolicyStoreChromeOS::ValidateRetrievedPolicy( |
@@ -345,11 +352,21 @@ UserCloudPolicyStoreChromeOS::CreateValidatorForLoad( |
std::unique_ptr<em::PolicyFetchResponse> policy) { |
std::unique_ptr<UserCloudPolicyValidator> validator = CreateValidator( |
std::move(policy), CloudPolicyValidatorBase::TIMESTAMP_NOT_BEFORE); |
- validator->ValidateUsername(account_id_.GetUserEmail(), true); |
- // The policy loaded from session manager need not be validated using the |
- // verification key since it is secure, and since there may be legacy policy |
- // data that was stored without a verification key. |
- validator->ValidateSignature(cached_policy_key_); |
+ if (is_active_directory_) { |
+ validator->ValidateTimestamp( |
+ base::Time(), base::Time(), |
+ CloudPolicyValidatorBase::TIMESTAMP_NOT_VALIDATED); |
+ validator->ValidateDMToken(std::string(), |
+ CloudPolicyValidatorBase::DM_TOKEN_NOT_REQUIRED); |
+ validator->ValidateDeviceId( |
+ std::string(), CloudPolicyValidatorBase::DEVICE_ID_NOT_REQUIRED); |
+ } else { |
+ validator->ValidateUsername(account_id_.GetUserEmail(), true); |
+ // The policy loaded from session manager need not be validated using the |
+ // verification key since it is secure, and since there may be legacy policy |
+ // data that was stored without a verification key. |
+ validator->ValidateSignature(cached_policy_key_); |
+ } |
return validator; |
} |