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

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

Issue 1852513003: Convert //android_webview to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git is hard Created 4 years, 8 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/native/android_protocol_handler.h" 5 #include "android_webview/native/android_protocol_handler.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "android_webview/browser/net/android_stream_reader_url_request_job.h" 9 #include "android_webview/browser/net/android_stream_reader_url_request_job.h"
10 #include "android_webview/browser/net/aw_url_request_job_factory.h" 10 #include "android_webview/browser/net/aw_url_request_job_factory.h"
11 #include "android_webview/common/url_constants.h" 11 #include "android_webview/common/url_constants.h"
12 #include "android_webview/native/input_stream_impl.h" 12 #include "android_webview/native/input_stream_impl.h"
13 #include "base/android/context_utils.h" 13 #include "base/android/context_utils.h"
14 #include "base/android/jni_android.h" 14 #include "base/android/jni_android.h"
15 #include "base/android/jni_string.h" 15 #include "base/android/jni_string.h"
16 #include "base/android/jni_weak_ref.h" 16 #include "base/android/jni_weak_ref.h"
17 #include "base/memory/ptr_util.h"
17 #include "content/public/common/url_constants.h" 18 #include "content/public/common/url_constants.h"
18 #include "jni/AndroidProtocolHandler_jni.h" 19 #include "jni/AndroidProtocolHandler_jni.h"
19 #include "net/base/io_buffer.h" 20 #include "net/base/io_buffer.h"
20 #include "net/base/mime_util.h" 21 #include "net/base/mime_util.h"
21 #include "net/base/net_errors.h" 22 #include "net/base/net_errors.h"
22 #include "net/http/http_util.h" 23 #include "net/http/http_util.h"
23 #include "net/url_request/url_request.h" 24 #include "net/url_request/url_request.h"
24 #include "net/url_request/url_request_interceptor.h" 25 #include "net/url_request/url_request_interceptor.h"
25 #include "url/gurl.h" 26 #include "url/gurl.h"
26 #include "url/url_constants.h" 27 #include "url/url_constants.h"
(...skipping 29 matching lines...) Expand all
56 57
57 bool HasRequestPreviouslyFailed(net::URLRequest* request) { 58 bool HasRequestPreviouslyFailed(net::URLRequest* request) {
58 return request->GetUserData(kPreviouslyFailedKey) != NULL; 59 return request->GetUserData(kPreviouslyFailedKey) != NULL;
59 } 60 }
60 61
61 class AndroidStreamReaderURLRequestJobDelegateImpl 62 class AndroidStreamReaderURLRequestJobDelegateImpl
62 : public AndroidStreamReaderURLRequestJob::Delegate { 63 : public AndroidStreamReaderURLRequestJob::Delegate {
63 public: 64 public:
64 AndroidStreamReaderURLRequestJobDelegateImpl(); 65 AndroidStreamReaderURLRequestJobDelegateImpl();
65 66
66 scoped_ptr<InputStream> OpenInputStream(JNIEnv* env, 67 std::unique_ptr<InputStream> OpenInputStream(JNIEnv* env,
67 const GURL& url) override; 68 const GURL& url) override;
68 69
69 void OnInputStreamOpenFailed(net::URLRequest* request, 70 void OnInputStreamOpenFailed(net::URLRequest* request,
70 bool* restart) override; 71 bool* restart) override;
71 72
72 bool GetMimeType(JNIEnv* env, 73 bool GetMimeType(JNIEnv* env,
73 net::URLRequest* request, 74 net::URLRequest* request,
74 InputStream* stream, 75 InputStream* stream,
75 std::string* mime_type) override; 76 std::string* mime_type) override;
76 77
77 bool GetCharset(JNIEnv* env, 78 bool GetCharset(JNIEnv* env,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 121
121 // AndroidStreamReaderURLRequestJobDelegateImpl ------------------------------- 122 // AndroidStreamReaderURLRequestJobDelegateImpl -------------------------------
122 123
123 AndroidStreamReaderURLRequestJobDelegateImpl:: 124 AndroidStreamReaderURLRequestJobDelegateImpl::
124 AndroidStreamReaderURLRequestJobDelegateImpl() {} 125 AndroidStreamReaderURLRequestJobDelegateImpl() {}
125 126
126 AndroidStreamReaderURLRequestJobDelegateImpl:: 127 AndroidStreamReaderURLRequestJobDelegateImpl::
127 ~AndroidStreamReaderURLRequestJobDelegateImpl() { 128 ~AndroidStreamReaderURLRequestJobDelegateImpl() {
128 } 129 }
129 130
130 scoped_ptr<InputStream> 131 std::unique_ptr<InputStream>
131 AndroidStreamReaderURLRequestJobDelegateImpl::OpenInputStream( 132 AndroidStreamReaderURLRequestJobDelegateImpl::OpenInputStream(JNIEnv* env,
132 JNIEnv* env, const GURL& url) { 133 const GURL& url) {
133 DCHECK(url.is_valid()); 134 DCHECK(url.is_valid());
134 DCHECK(env); 135 DCHECK(env);
135 136
136 // Open the input stream. 137 // Open the input stream.
137 ScopedJavaLocalRef<jstring> jurl = 138 ScopedJavaLocalRef<jstring> jurl =
138 ConvertUTF8ToJavaString(env, url.spec()); 139 ConvertUTF8ToJavaString(env, url.spec());
139 ScopedJavaLocalRef<jobject> stream = 140 ScopedJavaLocalRef<jobject> stream =
140 android_webview::Java_AndroidProtocolHandler_open( 141 android_webview::Java_AndroidProtocolHandler_open(
141 env, 142 env,
142 GetResourceContext(env).obj(), 143 GetResourceContext(env).obj(),
143 jurl.obj()); 144 jurl.obj());
144 145
145 if (stream.is_null()) { 146 if (stream.is_null()) {
146 DLOG(ERROR) << "Unable to open input stream for Android URL"; 147 DLOG(ERROR) << "Unable to open input stream for Android URL";
147 return scoped_ptr<InputStream>(); 148 return std::unique_ptr<InputStream>();
148 } 149 }
149 return make_scoped_ptr<InputStream>(new InputStreamImpl(stream)); 150 return base::WrapUnique(new InputStreamImpl(stream));
150 } 151 }
151 152
152 void AndroidStreamReaderURLRequestJobDelegateImpl::OnInputStreamOpenFailed( 153 void AndroidStreamReaderURLRequestJobDelegateImpl::OnInputStreamOpenFailed(
153 net::URLRequest* request, 154 net::URLRequest* request,
154 bool* restart) { 155 bool* restart) {
155 DCHECK(!HasRequestPreviouslyFailed(request)); 156 DCHECK(!HasRequestPreviouslyFailed(request));
156 MarkRequestAsFailed(request); 157 MarkRequestAsFailed(request);
157 *restart = true; 158 *restart = true;
158 } 159 }
159 160
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 // If a request is initially handled here but the job fails due to it being 214 // If a request is initially handled here but the job fails due to it being
214 // unable to open the InputStream for that request the request is marked as 215 // unable to open the InputStream for that request the request is marked as
215 // previously failed and restarted. 216 // previously failed and restarted.
216 // Restarting a request involves creating a new job for that request. This 217 // Restarting a request involves creating a new job for that request. This
217 // handler will ignore requests know to have previously failed to 1) prevent 218 // handler will ignore requests know to have previously failed to 1) prevent
218 // an infinite loop, 2) ensure that the next handler in line gets the 219 // an infinite loop, 2) ensure that the next handler in line gets the
219 // opportunity to create a job for the request. 220 // opportunity to create a job for the request.
220 if (HasRequestPreviouslyFailed(request)) 221 if (HasRequestPreviouslyFailed(request))
221 return NULL; 222 return NULL;
222 223
223 scoped_ptr<AndroidStreamReaderURLRequestJobDelegateImpl> reader_delegate( 224 std::unique_ptr<AndroidStreamReaderURLRequestJobDelegateImpl> reader_delegate(
224 new AndroidStreamReaderURLRequestJobDelegateImpl()); 225 new AndroidStreamReaderURLRequestJobDelegateImpl());
225 226
226 return new AndroidStreamReaderURLRequestJob(request, network_delegate, 227 return new AndroidStreamReaderURLRequestJob(request, network_delegate,
227 std::move(reader_delegate)); 228 std::move(reader_delegate));
228 } 229 }
229 230
230 // AssetFileRequestInterceptor ------------------------------------------------ 231 // AssetFileRequestInterceptor ------------------------------------------------
231 232
232 AssetFileRequestInterceptor::AssetFileRequestInterceptor() { 233 AssetFileRequestInterceptor::AssetFileRequestInterceptor() {
233 } 234 }
(...skipping 15 matching lines...) Expand all
249 250
250 } // namespace 251 } // namespace
251 252
252 namespace android_webview { 253 namespace android_webview {
253 254
254 bool RegisterAndroidProtocolHandler(JNIEnv* env) { 255 bool RegisterAndroidProtocolHandler(JNIEnv* env) {
255 return RegisterNativesImpl(env); 256 return RegisterNativesImpl(env);
256 } 257 }
257 258
258 // static 259 // static
259 scoped_ptr<net::URLRequestInterceptor> 260 std::unique_ptr<net::URLRequestInterceptor>
260 CreateContentSchemeRequestInterceptor() { 261 CreateContentSchemeRequestInterceptor() {
261 return make_scoped_ptr<net::URLRequestInterceptor>( 262 return base::WrapUnique(new ContentSchemeRequestInterceptor());
262 new ContentSchemeRequestInterceptor());
263 } 263 }
264 264
265 // static 265 // static
266 scoped_ptr<net::URLRequestInterceptor> CreateAssetFileRequestInterceptor() { 266 std::unique_ptr<net::URLRequestInterceptor>
267 return scoped_ptr<net::URLRequestInterceptor>( 267 CreateAssetFileRequestInterceptor() {
268 return std::unique_ptr<net::URLRequestInterceptor>(
268 new AssetFileRequestInterceptor()); 269 new AssetFileRequestInterceptor());
269 } 270 }
270 271
271 // Set a context object to be used for resolving resource queries. This can 272 // Set a context object to be used for resolving resource queries. This can
272 // be used to override the default application context and redirect all 273 // be used to override the default application context and redirect all
273 // resource queries to a specific context object, e.g., for the purposes of 274 // resource queries to a specific context object, e.g., for the purposes of
274 // testing. 275 // testing.
275 // 276 //
276 // |context| should be a android.content.Context instance or NULL to enable 277 // |context| should be a android.content.Context instance or NULL to enable
277 // the use of the standard application context. 278 // the use of the standard application context.
(...skipping 13 matching lines...) Expand all
291 return ConvertUTF8ToJavaString(env, android_webview::kAndroidAssetPath); 292 return ConvertUTF8ToJavaString(env, android_webview::kAndroidAssetPath);
292 } 293 }
293 294
294 static ScopedJavaLocalRef<jstring> GetAndroidResourcePath( 295 static ScopedJavaLocalRef<jstring> GetAndroidResourcePath(
295 JNIEnv* env, 296 JNIEnv* env,
296 const JavaParamRef<jclass>& /*clazz*/) { 297 const JavaParamRef<jclass>& /*clazz*/) {
297 return ConvertUTF8ToJavaString(env, android_webview::kAndroidResourcePath); 298 return ConvertUTF8ToJavaString(env, android_webview::kAndroidResourcePath);
298 } 299 }
299 300
300 } // namespace android_webview 301 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/native/android_protocol_handler.h ('k') | android_webview/native/aw_autofill_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698