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..05355b98fb28718c50a70b94d09feba64980e49a 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_); |
| + MaybeStart(); |
|
boliu
2015/09/28 23:26:28
Does this need to check that Start has indeed been
mnaganov (inactive)
2015/09/29 00:14:06
Good point! Also we don't want to start if we have
|
| +} |
| + |
| +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 (!delegate_) return; |
| + |
| // 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,6 +166,10 @@ void AndroidStreamReaderURLRequestJob::Start() { |
| weak_factory_.GetWeakPtr()))); |
| } |
| +void AndroidStreamReaderURLRequestJob::Start() { |
| + MaybeStart(); |
| +} |
| + |
| void AndroidStreamReaderURLRequestJob::Kill() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| weak_factory_.InvalidateWeakPtrs(); |