| Index: components/proximity_auth/cryptauth/cryptauth_enrollment_manager.cc
|
| diff --git a/components/proximity_auth/cryptauth/cryptauth_enrollment_manager.cc b/components/proximity_auth/cryptauth/cryptauth_enrollment_manager.cc
|
| index 2b87229ce740983759e44183cb819c3978e9cef7..6c080731e8554dd66fffcbb6628472b0faa42bae 100644
|
| --- a/components/proximity_auth/cryptauth/cryptauth_enrollment_manager.cc
|
| +++ b/components/proximity_auth/cryptauth/cryptauth_enrollment_manager.cc
|
| @@ -41,17 +41,19 @@ CryptAuthEnrollmentManager::CryptAuthEnrollmentManager(
|
| const std::string& user_public_key,
|
| const std::string& user_private_key,
|
| const cryptauth::GcmDeviceInfo& device_info,
|
| + CryptAuthGCMManager* gcm_manager,
|
| PrefService* pref_service)
|
| : clock_(clock.Pass()),
|
| enroller_factory_(enroller_factory.Pass()),
|
| user_public_key_(user_public_key),
|
| user_private_key_(user_private_key),
|
| device_info_(device_info),
|
| + gcm_manager_(gcm_manager),
|
| pref_service_(pref_service),
|
| - weak_ptr_factory_(this) {
|
| -}
|
| + weak_ptr_factory_(this) {}
|
|
|
| CryptAuthEnrollmentManager::~CryptAuthEnrollmentManager() {
|
| + gcm_manager_->RemoveObserver(this);
|
| }
|
|
|
| // static
|
| @@ -65,6 +67,8 @@ void CryptAuthEnrollmentManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
| }
|
|
|
| void CryptAuthEnrollmentManager::Start() {
|
| + gcm_manager_->AddObserver(this);
|
| +
|
| bool is_recovering_from_failure =
|
| pref_service_->GetBoolean(
|
| prefs::kCryptAuthEnrollmentIsRecoveringFromFailure) ||
|
| @@ -150,13 +154,37 @@ scoped_ptr<SyncScheduler> CryptAuthEnrollmentManager::CreateSyncScheduler() {
|
| kEnrollmentMaxJitterRatio, "CryptAuth Enrollment"));
|
| }
|
|
|
| +void CryptAuthEnrollmentManager::OnGCMRegistrationResult(bool success) {
|
| + if (!sync_request_)
|
| + return;
|
| +
|
| + PA_LOG(INFO) << "GCM registration for CryptAuth Enrollment completed: "
|
| + << success;
|
| + if (success)
|
| + DoCryptAuthEnrollment();
|
| + else
|
| + OnEnrollmentFinished(false);
|
| +}
|
| +
|
| +void CryptAuthEnrollmentManager::OnReenrollMessage() {
|
| + ForceEnrollmentNow(cryptauth::INVOCATION_REASON_SERVER_INITIATED);
|
| +}
|
| +
|
| void CryptAuthEnrollmentManager::OnSyncRequested(
|
| scoped_ptr<SyncScheduler::SyncRequest> sync_request) {
|
| FOR_EACH_OBSERVER(Observer, observers_, OnEnrollmentStarted());
|
|
|
| sync_request_ = sync_request.Pass();
|
| - cryptauth_enroller_ = enroller_factory_->CreateInstance();
|
|
|
| + if (gcm_manager_->GetRegistrationId().empty()) {
|
| + gcm_manager_->RegisterWithGCM();
|
| + } else {
|
| + DoCryptAuthEnrollment();
|
| + }
|
| +}
|
| +
|
| +void CryptAuthEnrollmentManager::DoCryptAuthEnrollment() {
|
| + DCHECK(sync_request_);
|
| cryptauth::InvocationReason invocation_reason =
|
| cryptauth::INVOCATION_REASON_UNKNOWN;
|
|
|
| @@ -180,6 +208,7 @@ void CryptAuthEnrollmentManager::OnSyncRequested(
|
| }
|
|
|
| PA_LOG(INFO) << "Making enrollment with reason: " << invocation_reason;
|
| + cryptauth_enroller_ = enroller_factory_->CreateInstance();
|
| cryptauth_enroller_->Enroll(
|
| user_public_key_, user_private_key_, device_info_, invocation_reason,
|
| base::Bind(&CryptAuthEnrollmentManager::OnEnrollmentFinished,
|
|
|