Chromium Code Reviews| Index: content/browser/media/webrtc_identity_store.cc |
| diff --git a/content/browser/media/webrtc_identity_store.cc b/content/browser/media/webrtc_identity_store.cc |
| index 1c778624ccf2732ce039f33889ecacc905f590a2..32498a270971991e9ab79f00ba672bea38d64286 100644 |
| --- a/content/browser/media/webrtc_identity_store.cc |
| +++ b/content/browser/media/webrtc_identity_store.cc |
| @@ -187,30 +187,30 @@ base::Closure WebRTCIdentityStore::RequestIdentity( |
| const std::string& common_name, |
| const CompletionCallback& callback) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| - |
| - WebRTCIdentityRequestHandle* handle = |
| - new WebRTCIdentityRequestHandle(this, callback); |
| - |
| WebRTCIdentityRequest* request = |
| FindRequest(origin, identity_name, common_name); |
| - |
| // If there is no identical request in flight, create a new one, queue it, |
| // and make the backend request. |
| if (!request) { |
| - request = new WebRTCIdentityRequest(origin, identity_name, common_name); |
| + scoped_ptr<WebRTCIdentityRequest> new_request( |
| + new WebRTCIdentityRequest(origin, identity_name, common_name)); |
| if (!backend_->FindIdentity( |
| origin, |
| identity_name, |
| common_name, |
| base::Bind( |
| - &WebRTCIdentityStore::BackendFindCallback, this, request))) { |
| - delete request; |
| + &WebRTCIdentityStore::BackendFindCallback, |
| + this, new_request.get()))) { |
| return base::Closure(); |
| } |
| + // |request| will delete itself after the result is posted. |
| + request = new_request.release(); |
|
Ami GONE FROM CHROMIUM
2013/08/12 17:56:34
TBH I think the old code made it easier to see how
|
| in_flight_requests_.push_back(request); |
| } |
| + WebRTCIdentityRequestHandle* handle = |
| + new WebRTCIdentityRequestHandle(this, callback); |
| request->AddCallback( |
| handle, |
| base::Bind(&WebRTCIdentityRequestHandle::OnRequestComplete, |