diff options
Diffstat (limited to 'chrome/browser/google_apis/request_registry.cc')
-rw-r--r-- | chrome/browser/google_apis/request_registry.cc | 77 |
1 files changed, 1 insertions, 76 deletions
diff --git a/chrome/browser/google_apis/request_registry.cc b/chrome/browser/google_apis/request_registry.cc index f2f773c..e7b8f74 100644 --- a/chrome/browser/google_apis/request_registry.cc +++ b/chrome/browser/google_apis/request_registry.cc @@ -29,7 +29,6 @@ RequestRegistry::Request::Request(RequestRegistry* registry, RequestRegistry::Request::~Request() { DCHECK(progress_status_.transfer_state == REQUEST_COMPLETED || - progress_status_.transfer_state == REQUEST_SUSPENDED || progress_status_.transfer_state == REQUEST_FAILED); } @@ -56,21 +55,6 @@ void RequestRegistry::Request::NotifyFinish( registry_->OnRequestFinish(progress_status().request_id); } -void RequestRegistry::Request::NotifySuspend() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - DCHECK(progress_status_.transfer_state >= REQUEST_STARTED); - progress_status_.transfer_state = REQUEST_SUSPENDED; - registry_->OnRequestSuspend(progress_status().request_id); -} - -void RequestRegistry::Request::NotifyResume() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - if (progress_status_.transfer_state == REQUEST_NOT_STARTED) { - progress_status_.transfer_state = REQUEST_IN_PROGRESS; - registry_->OnRequestResume(this, &progress_status_); - } -} - RequestRegistry::RequestRegistry() { in_flight_requests_.set_check_on_null_data(true); } @@ -109,16 +93,7 @@ bool RequestRegistry::CancelForFilePath(const base::FilePath& file_path) { } void RequestRegistry::CancelRequest(Request* request) { - if (request->progress_status().transfer_state == REQUEST_SUSPENDED) { - // SUSPENDED request already completed its job (like calling back to - // its client code). Invoking request->Cancel() again on it is a kind of - // 'double deletion'. So here we directly call OnRequestFinish and just - // unregister the request from the registry. - // TODO(kinaba): http://crbug.com/164098 Get rid of the hack. - OnRequestFinish(request->progress_status().request_id); - } else { - request->Cancel(); - } + request->Cancel(); } void RequestRegistry::OnRequestStart( @@ -140,54 +115,4 @@ void RequestRegistry::OnRequestFinish(RequestID id) { in_flight_requests_.Remove(id); } -void RequestRegistry::OnRequestResume( - RequestRegistry::Request* request, - RequestProgressStatus* new_status) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - - // Find the corresponding suspended task. - Request* suspended = NULL; - for (RequestIDMap::iterator iter(&in_flight_requests_); - !iter.IsAtEnd(); - iter.Advance()) { - Request* in_flight_request = iter.GetCurrentValue(); - const RequestProgressStatus& status = - in_flight_request->progress_status(); - if (status.transfer_state == REQUEST_SUSPENDED && - status.file_path == request->progress_status().file_path) { - suspended = in_flight_request; - break; - } - } - - if (!suspended) { - // Preceding suspended requests was not found. Assume it was canceled. - // - // request->Cancel() needs to be called to properly shut down the - // current request, but request->Cancel() tries to unregister itself - // from the registry. So, as a hack, temporarily assign it an ID. - // TODO(kinaba): http://crbug.com/164098 Get rid of it. - new_status->request_id = in_flight_requests_.Add(request); - CancelRequest(request); - return; - } - - // Remove the old one and initiate the new request. - const RequestProgressStatus& old_status = suspended->progress_status(); - RequestID old_id = old_status.request_id; - in_flight_requests_.Remove(old_id); - new_status->request_id = in_flight_requests_.Add(request); - DVLOG(1) << "Request[" << old_id << " -> " << - new_status->request_id << "] resumed."; -} - -void RequestRegistry::OnRequestSuspend(RequestID id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - - Request* request = in_flight_requests_.Lookup(id); - DCHECK(request); - - DVLOG(1) << "Request[" << id << "] suspended."; -} - } // namespace google_apis |