| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "android_webview/native/android_stream_reader_url_request_job.h" | 5 #include "android_webview/native/android_stream_reader_url_request_job.h" |
| 6 | 6 |
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
| 8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
| 9 #include "base/bind.h" |
| 10 #include "base/message_loop.h" |
| 9 #include "net/base/io_buffer.h" | 11 #include "net/base/io_buffer.h" |
| 10 #include "net/base/mime_util.h" | 12 #include "net/base/mime_util.h" |
| 11 #include "net/base/net_errors.h" | 13 #include "net/base/net_errors.h" |
| 12 #include "net/base/net_util.h" | 14 #include "net/base/net_util.h" |
| 13 #include "net/http/http_util.h" | 15 #include "net/http/http_util.h" |
| 14 #include "net/url_request/url_request.h" | 16 #include "net/url_request/url_request.h" |
| 15 #include "net/url_request/url_request_error_job.h" | 17 #include "net/url_request/url_request_error_job.h" |
| 16 #include "net/url_request/url_request_file_job.h" | 18 #include "net/url_request/url_request_file_job.h" |
| 17 #include "net/url_request/url_request_job_manager.h" | 19 #include "net/url_request/url_request_job_manager.h" |
| 18 // Disable "Warnings treated as errors" for input_stream_jni as it's a Java | 20 // Disable "Warnings treated as errors" for input_stream_jni as it's a Java |
| (...skipping 21 matching lines...) Expand all Loading... |
| 40 | 42 |
| 41 bool RegisterAndroidStreamReaderUrlRequestJob(JNIEnv* env) { | 43 bool RegisterAndroidStreamReaderUrlRequestJob(JNIEnv* env) { |
| 42 return JNI_InputStream::RegisterNativesImpl(env); | 44 return JNI_InputStream::RegisterNativesImpl(env); |
| 43 } | 45 } |
| 44 | 46 |
| 45 AndroidStreamReaderURLRequestJob::AndroidStreamReaderURLRequestJob( | 47 AndroidStreamReaderURLRequestJob::AndroidStreamReaderURLRequestJob( |
| 46 net::URLRequest* request, | 48 net::URLRequest* request, |
| 47 net::NetworkDelegate* network_delegate, | 49 net::NetworkDelegate* network_delegate, |
| 48 scoped_ptr<Delegate> delegate) | 50 scoped_ptr<Delegate> delegate) |
| 49 : URLRequestJob(request, network_delegate), | 51 : URLRequestJob(request, network_delegate), |
| 50 delegate_(delegate.Pass()) { | 52 delegate_(delegate.Pass()), |
| 53 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
| 51 DCHECK(delegate_.get()); | 54 DCHECK(delegate_.get()); |
| 52 } | 55 } |
| 53 | 56 |
| 54 AndroidStreamReaderURLRequestJob::~AndroidStreamReaderURLRequestJob() { | 57 AndroidStreamReaderURLRequestJob::~AndroidStreamReaderURLRequestJob() { |
| 55 } | 58 } |
| 56 | 59 |
| 57 void AndroidStreamReaderURLRequestJob::Start() { | 60 void AndroidStreamReaderURLRequestJob::Start() { |
| 61 // Start reading asynchronously so that all error reporting and data |
| 62 // callbacks happen as they would for network requests. |
| 63 MessageLoop::current()->PostTask( |
| 64 FROM_HERE, |
| 65 base::Bind(&AndroidStreamReaderURLRequestJob::StartAsync, |
| 66 weak_factory_.GetWeakPtr())); |
| 67 } |
| 68 |
| 69 void AndroidStreamReaderURLRequestJob::StartAsync() { |
| 58 JNIEnv* env = AttachCurrentThread(); | 70 JNIEnv* env = AttachCurrentThread(); |
| 59 DCHECK(env); | 71 DCHECK(env); |
| 60 | 72 |
| 61 stream_.Reset(env, delegate_->OpenInputStream(env, request()).obj()); | 73 stream_.Reset(env, delegate_->OpenInputStream(env, request()).obj()); |
| 62 if (!stream_.obj()) { | 74 if (!stream_.obj()) { |
| 63 NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED, | 75 NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
| 64 net::ERR_FAILED)); | 76 net::ERR_FAILED)); |
| 65 return; | 77 return; |
| 66 } | 78 } |
| 67 | 79 |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 } else { | 231 } else { |
| 220 // We don't support multiple range requests in one single URL request, | 232 // We don't support multiple range requests in one single URL request, |
| 221 // because we need to do multipart encoding here. | 233 // because we need to do multipart encoding here. |
| 222 NotifyDone(net::URLRequestStatus( | 234 NotifyDone(net::URLRequestStatus( |
| 223 net::URLRequestStatus::FAILED, | 235 net::URLRequestStatus::FAILED, |
| 224 net::ERR_REQUEST_RANGE_NOT_SATISFIABLE)); | 236 net::ERR_REQUEST_RANGE_NOT_SATISFIABLE)); |
| 225 } | 237 } |
| 226 } | 238 } |
| 227 } | 239 } |
| 228 } | 240 } |
| OLD | NEW |