Chromium Code Reviews| Index: android_webview/browser/net/android_stream_reader_url_request_job.cc |
| diff --git a/android_webview/browser/net/android_stream_reader_url_request_job.cc b/android_webview/browser/net/android_stream_reader_url_request_job.cc |
| index 2f2d68428cd0619fb27ec650f92a1f343f8b05cf..7b66219551c1b8cb1fb3946cdd2349093caebe77 100644 |
| --- a/android_webview/browser/net/android_stream_reader_url_request_job.cc |
| +++ b/android_webview/browser/net/android_stream_reader_url_request_job.cc |
| @@ -87,6 +87,13 @@ class InputStreamReaderWrapper : |
| AndroidStreamReaderURLRequestJob::AndroidStreamReaderURLRequestJob( |
| net::URLRequest* request, |
| + net::NetworkDelegate* network_delegate) |
| + : URLRequestJob(request, network_delegate), |
| + weak_factory_(this) { |
| +} |
| + |
| +AndroidStreamReaderURLRequestJob::AndroidStreamReaderURLRequestJob( |
| + net::URLRequest* request, |
| net::NetworkDelegate* network_delegate, |
| scoped_ptr<Delegate> delegate) |
| : URLRequestJob(request, network_delegate), |
| @@ -98,6 +105,19 @@ AndroidStreamReaderURLRequestJob::AndroidStreamReaderURLRequestJob( |
| AndroidStreamReaderURLRequestJob::~AndroidStreamReaderURLRequestJob() { |
| } |
| +void AndroidStreamReaderURLRequestJob::DeliverResponseFromDelegate( |
| + scoped_ptr<Delegate> delegate) { |
| + DCHECK(!delegate_); |
| + delegate_ = delegate.Pass(); |
| + DCHECK(delegate_); |
|
mmenke
2015/09/29 15:56:06
optional: Think DCHECK(delegate); one or two line
mnaganov (inactive)
2015/09/29 23:45:35
Done.
|
| + MaybeStart(); |
| +} |
| + |
| +void AndroidStreamReaderURLRequestJob::DeliverResponseFromNetwork() { |
| + DCHECK(!delegate_); |
| + NotifyRestartRequired(); |
| +} |
| + |
| namespace { |
| typedef base::Callback< |
| @@ -121,8 +141,10 @@ void OpenInputStreamOnWorkerThread( |
| } // namespace |
| -void AndroidStreamReaderURLRequestJob::Start() { |
| +void AndroidStreamReaderURLRequestJob::MaybeStart() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| + if (!has_been_started() || has_been_killed() || !delegate_) return; |
|
mmenke
2015/09/29 15:56:06
has_been_killed() won't be true here - can DCHECK
mmenke
2015/09/29 15:56:06
Move return to next line.
mnaganov (inactive)
2015/09/29 23:45:35
Done.
mnaganov (inactive)
2015/09/29 23:45:35
Done.
|
| + |
| // Start reading asynchronously so that all error reporting and data |
| // callbacks happen as they would for network requests. |
| SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, |
| @@ -144,8 +166,15 @@ void AndroidStreamReaderURLRequestJob::Start() { |
| weak_factory_.GetWeakPtr()))); |
| } |
| +void AndroidStreamReaderURLRequestJob::Start() { |
| + DCHECK(!has_been_started()); |
| + has_been_started_ = true; |
| + MaybeStart(); |
| +} |
| + |
| void AndroidStreamReaderURLRequestJob::Kill() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| + has_been_killed_ = true; |
| weak_factory_.InvalidateWeakPtrs(); |
| URLRequestJob::Kill(); |
| } |