Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(630)

Side by Side Diff: android_webview/native/android_stream_reader_url_request_job.cc

Issue 11147021: [Android] Make AndroidStreamReaderURLRequestJob to start loading asynchronously. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698