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

Side by Side Diff: android_webview/browser/android_protocol_handler.cc

Issue 2889193004: [WebView] Replace AwContentsIoThreadClient, InputStream and AwWebResourceResponse (Closed)
Patch Set: fix test crash Created 3 years, 7 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
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/browser/android_protocol_handler.h" 5 #include "android_webview/browser/android_protocol_handler.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "android_webview/browser/input_stream_impl.h" 9 #include "android_webview/browser/input_stream.h"
10 #include "android_webview/browser/net/android_stream_reader_url_request_job.h" 10 #include "android_webview/browser/net/android_stream_reader_url_request_job.h"
11 #include "android_webview/browser/net/aw_url_request_job_factory.h" 11 #include "android_webview/browser/net/aw_url_request_job_factory.h"
12 #include "android_webview/common/url_constants.h" 12 #include "android_webview/common/url_constants.h"
13 #include "base/android/jni_android.h" 13 #include "base/android/jni_android.h"
14 #include "base/android/jni_string.h" 14 #include "base/android/jni_string.h"
15 #include "base/android/jni_weak_ref.h" 15 #include "base/android/jni_weak_ref.h"
16 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
17 #include "content/public/common/url_constants.h" 17 #include "content/public/common/url_constants.h"
18 #include "jni/AndroidProtocolHandler_jni.h" 18 #include "jni/AndroidProtocolHandler_jni.h"
19 #include "net/base/io_buffer.h" 19 #include "net/base/io_buffer.h"
20 #include "net/base/mime_util.h" 20 #include "net/base/mime_util.h"
21 #include "net/base/net_errors.h" 21 #include "net/base/net_errors.h"
22 #include "net/http/http_util.h" 22 #include "net/http/http_util.h"
23 #include "net/url_request/url_request.h" 23 #include "net/url_request/url_request.h"
24 #include "net/url_request/url_request_interceptor.h" 24 #include "net/url_request/url_request_interceptor.h"
25 #include "url/gurl.h" 25 #include "url/gurl.h"
26 #include "url/url_constants.h" 26 #include "url/url_constants.h"
27 27
28 using android_webview::AndroidStreamReaderURLRequestJob; 28 using android_webview::AndroidStreamReaderURLRequestJob;
29 using android_webview::InputStream; 29 using android_webview::InputStream;
30 using android_webview::InputStreamImpl; 30 using android_webview::InputStream;
31 using base::android::AttachCurrentThread; 31 using base::android::AttachCurrentThread;
32 using base::android::ClearException; 32 using base::android::ClearException;
33 using base::android::ConvertUTF8ToJavaString; 33 using base::android::ConvertUTF8ToJavaString;
34 using base::android::JavaParamRef; 34 using base::android::JavaParamRef;
35 using base::android::ScopedJavaGlobalRef; 35 using base::android::ScopedJavaGlobalRef;
36 using base::android::ScopedJavaLocalRef; 36 using base::android::ScopedJavaLocalRef;
37 37
38 namespace { 38 namespace {
39 39
40 void* kPreviouslyFailedKey = &kPreviouslyFailedKey; 40 void* kPreviouslyFailedKey = &kPreviouslyFailedKey;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 113
114 // Open the input stream. 114 // Open the input stream.
115 ScopedJavaLocalRef<jstring> jurl = ConvertUTF8ToJavaString(env, url.spec()); 115 ScopedJavaLocalRef<jstring> jurl = ConvertUTF8ToJavaString(env, url.spec());
116 ScopedJavaLocalRef<jobject> stream = 116 ScopedJavaLocalRef<jobject> stream =
117 android_webview::Java_AndroidProtocolHandler_open(env, jurl); 117 android_webview::Java_AndroidProtocolHandler_open(env, jurl);
118 118
119 if (stream.is_null()) { 119 if (stream.is_null()) {
120 DLOG(ERROR) << "Unable to open input stream for Android URL"; 120 DLOG(ERROR) << "Unable to open input stream for Android URL";
121 return std::unique_ptr<InputStream>(); 121 return std::unique_ptr<InputStream>();
122 } 122 }
123 return base::MakeUnique<InputStreamImpl>(stream); 123 return base::MakeUnique<InputStream>(stream);
124 } 124 }
125 125
126 void AndroidStreamReaderURLRequestJobDelegateImpl::OnInputStreamOpenFailed( 126 void AndroidStreamReaderURLRequestJobDelegateImpl::OnInputStreamOpenFailed(
127 net::URLRequest* request, 127 net::URLRequest* request,
128 bool* restart) { 128 bool* restart) {
129 DCHECK(!HasRequestPreviouslyFailed(request)); 129 DCHECK(!HasRequestPreviouslyFailed(request));
130 MarkRequestAsFailed(request); 130 MarkRequestAsFailed(request);
131 *restart = true; 131 *restart = true;
132 } 132 }
133 133
134 bool AndroidStreamReaderURLRequestJobDelegateImpl::GetMimeType( 134 bool AndroidStreamReaderURLRequestJobDelegateImpl::GetMimeType(
135 JNIEnv* env, 135 JNIEnv* env,
136 net::URLRequest* request, 136 net::URLRequest* request,
137 android_webview::InputStream* stream, 137 android_webview::InputStream* stream,
138 std::string* mime_type) { 138 std::string* mime_type) {
139 DCHECK(env); 139 DCHECK(env);
140 DCHECK(request); 140 DCHECK(request);
141 DCHECK(mime_type); 141 DCHECK(mime_type);
142 142
143 // Query the mime type from the Java side. It is possible for the query to 143 // Query the mime type from the Java side. It is possible for the query to
144 // fail, as the mime type cannot be determined for all supported schemes. 144 // fail, as the mime type cannot be determined for all supported schemes.
145 ScopedJavaLocalRef<jstring> url = 145 ScopedJavaLocalRef<jstring> url =
146 ConvertUTF8ToJavaString(env, request->url().spec()); 146 ConvertUTF8ToJavaString(env, request->url().spec());
147 const InputStreamImpl* stream_impl = InputStreamImpl::FromInputStream(stream);
148 ScopedJavaLocalRef<jstring> returned_type = 147 ScopedJavaLocalRef<jstring> returned_type =
149 android_webview::Java_AndroidProtocolHandler_getMimeType( 148 android_webview::Java_AndroidProtocolHandler_getMimeType(
150 env, stream_impl->jobj(), url); 149 env, stream->jobj(), url);
151 if (returned_type.is_null()) 150 if (returned_type.is_null())
152 return false; 151 return false;
153 152
154 *mime_type = base::android::ConvertJavaStringToUTF8(returned_type); 153 *mime_type = base::android::ConvertJavaStringToUTF8(returned_type);
155 return true; 154 return true;
156 } 155 }
157 156
158 bool AndroidStreamReaderURLRequestJobDelegateImpl::GetCharset( 157 bool AndroidStreamReaderURLRequestJobDelegateImpl::GetCharset(
159 JNIEnv* env, 158 JNIEnv* env,
160 net::URLRequest* request, 159 net::URLRequest* request,
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 return ConvertUTF8ToJavaString(env, android_webview::kAndroidAssetPath); 242 return ConvertUTF8ToJavaString(env, android_webview::kAndroidAssetPath);
244 } 243 }
245 244
246 static ScopedJavaLocalRef<jstring> GetAndroidResourcePath( 245 static ScopedJavaLocalRef<jstring> GetAndroidResourcePath(
247 JNIEnv* env, 246 JNIEnv* env,
248 const JavaParamRef<jclass>& /*clazz*/) { 247 const JavaParamRef<jclass>& /*clazz*/) {
249 return ConvertUTF8ToJavaString(env, android_webview::kAndroidResourcePath); 248 return ConvertUTF8ToJavaString(env, android_webview::kAndroidResourcePath);
250 } 249 }
251 250
252 } // namespace android_webview 251 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698