| Index: components/gcm_driver/gcm_client_impl.cc | 
| diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc | 
| index 05fcddc7038a554112dae489daba9ef14fa412d1..972cea17a2485a86b548e4679d96c986a7d11d16 100644 | 
| --- a/components/gcm_driver/gcm_client_impl.cc | 
| +++ b/components/gcm_driver/gcm_client_impl.cc | 
| @@ -302,9 +302,6 @@ GCMClientImpl::GCMClientImpl(scoped_ptr<GCMInternalsBuilder> internals_builder) | 
| clock_(internals_builder_->BuildClock()), | 
| gcm_store_reset_(false), | 
| url_request_context_getter_(NULL), | 
| -      pending_registration_requests_deleter_(&pending_registration_requests_), | 
| -      pending_unregistration_requests_deleter_( | 
| -          &pending_unregistration_requests_), | 
| periodic_checkin_ptr_factory_(this), | 
| destroying_gcm_store_ptr_factory_(this), | 
| weak_ptr_factory_(this) { | 
| @@ -839,8 +836,8 @@ void GCMClientImpl::ResetCache() { | 
| mcs_client_.reset(); | 
| checkin_request_.reset(); | 
| // Delete all of the pending registration and unregistration requests. | 
| -  STLDeleteValues(&pending_registration_requests_); | 
| -  STLDeleteValues(&pending_unregistration_requests_); | 
| +  pending_registration_requests_.clear(); | 
| +  pending_unregistration_requests_.clear(); | 
| } | 
|  | 
| void GCMClientImpl::Register( | 
| @@ -917,20 +914,16 @@ void GCMClientImpl::Register( | 
| device_checkin_info_.secret, | 
| registration_info->app_id); | 
|  | 
| -  RegistrationRequest* registration_request = | 
| -      new RegistrationRequest(gservices_settings_.GetRegistrationURL(), | 
| -                              request_info, | 
| -                              request_handler.Pass(), | 
| -                              GetGCMBackoffPolicy(), | 
| -                              base::Bind(&GCMClientImpl::OnRegisterCompleted, | 
| -                                          weak_ptr_factory_.GetWeakPtr(), | 
| -                                          registration_info), | 
| -                              kMaxRegistrationRetries, | 
| -                              url_request_context_getter_, | 
| -                              &recorder_, | 
| -                              source_to_record); | 
| -  pending_registration_requests_[registration_info] = registration_request; | 
| +  scoped_ptr<RegistrationRequest> registration_request(new RegistrationRequest( | 
| +      gservices_settings_.GetRegistrationURL(), request_info, | 
| +      request_handler.Pass(), GetGCMBackoffPolicy(), | 
| +      base::Bind(&GCMClientImpl::OnRegisterCompleted, | 
| +                 weak_ptr_factory_.GetWeakPtr(), registration_info), | 
| +      kMaxRegistrationRetries, url_request_context_getter_, &recorder_, | 
| +      source_to_record)); | 
| registration_request->Start(); | 
| +  pending_registration_requests_.insert(registration_info, | 
| +                                        registration_request.Pass()); | 
| } | 
|  | 
| void GCMClientImpl::OnRegisterCompleted( | 
| @@ -940,7 +933,7 @@ void GCMClientImpl::OnRegisterCompleted( | 
| DCHECK(delegate_); | 
|  | 
| Result result; | 
| -  PendingRegistrationRequests::iterator iter = | 
| +  PendingRegistrationRequests::const_iterator iter = | 
| pending_registration_requests_.find(registration_info); | 
| if (iter == pending_registration_requests_.end()) | 
| result = UNKNOWN_ERROR; | 
| @@ -968,10 +961,8 @@ void GCMClientImpl::OnRegisterCompleted( | 
| result == SUCCESS ? registration_id : std::string(), | 
| result); | 
|  | 
| -  if (iter != pending_registration_requests_.end()) { | 
| -    delete iter->second; | 
| +  if (iter != pending_registration_requests_.end()) | 
| pending_registration_requests_.erase(iter); | 
| -  } | 
| } | 
|  | 
| void GCMClientImpl::Unregister( | 
| @@ -1055,19 +1046,16 @@ void GCMClientImpl::Unregister( | 
| device_checkin_info_.secret, | 
| registration_info->app_id); | 
|  | 
| -  UnregistrationRequest* unregistration_request = new UnregistrationRequest( | 
| -      gservices_settings_.GetRegistrationURL(), | 
| -      request_info, | 
| -      request_handler.Pass(), | 
| -      GetGCMBackoffPolicy(), | 
| -      base::Bind(&GCMClientImpl::OnUnregisterCompleted, | 
| -                  weak_ptr_factory_.GetWeakPtr(), | 
| -                  registration_info), | 
| -      kMaxUnregistrationRetries, | 
| -      url_request_context_getter_, | 
| -      &recorder_); | 
| -  pending_unregistration_requests_[registration_info] = unregistration_request; | 
| +  scoped_ptr<UnregistrationRequest> unregistration_request( | 
| +      new UnregistrationRequest( | 
| +          gservices_settings_.GetRegistrationURL(), request_info, | 
| +          request_handler.Pass(), GetGCMBackoffPolicy(), | 
| +          base::Bind(&GCMClientImpl::OnUnregisterCompleted, | 
| +                     weak_ptr_factory_.GetWeakPtr(), registration_info), | 
| +          kMaxUnregistrationRetries, url_request_context_getter_, &recorder_)); | 
| unregistration_request->Start(); | 
| +  pending_unregistration_requests_.insert(registration_info, | 
| +                                          unregistration_request.Pass()); | 
| } | 
|  | 
| void GCMClientImpl::OnUnregisterCompleted( | 
| @@ -1091,13 +1079,7 @@ void GCMClientImpl::OnUnregisterCompleted( | 
| } | 
| delegate_->OnUnregisterFinished(registration_info, result); | 
|  | 
| -  PendingUnregistrationRequests::iterator iter = | 
| -      pending_unregistration_requests_.find(registration_info); | 
| -  if (iter == pending_unregistration_requests_.end()) | 
| -    return; | 
| - | 
| -  delete iter->second; | 
| -  pending_unregistration_requests_.erase(iter); | 
| +  pending_unregistration_requests_.erase(registration_info); | 
| } | 
|  | 
| void GCMClientImpl::OnGCMStoreDestroyed(bool success) { | 
|  |