| 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_protocol_handler.h" | 5 #include "android_webview/native/android_protocol_handler.h" |
| 6 | 6 |
| 7 #include "android_webview/browser/net/android_stream_reader_url_request_job.h" | 7 #include "android_webview/browser/net/android_stream_reader_url_request_job.h" |
| 8 #include "android_webview/browser/net/aw_url_request_job_factory.h" | 8 #include "android_webview/browser/net/aw_url_request_job_factory.h" |
| 9 #include "android_webview/common/url_constants.h" | 9 #include "android_webview/common/url_constants.h" |
| 10 #include "android_webview/native/input_stream_impl.h" | 10 #include "android_webview/native/input_stream_impl.h" |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 JNIEnv* env, | 81 JNIEnv* env, |
| 82 net::HttpResponseHeaders* headers) override; | 82 net::HttpResponseHeaders* headers) override; |
| 83 | 83 |
| 84 virtual ~AndroidStreamReaderURLRequestJobDelegateImpl(); | 84 virtual ~AndroidStreamReaderURLRequestJobDelegateImpl(); |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 class AndroidRequestInterceptorBase : public net::URLRequestInterceptor { | 87 class AndroidRequestInterceptorBase : public net::URLRequestInterceptor { |
| 88 public: | 88 public: |
| 89 virtual net::URLRequestJob* MaybeInterceptRequest( | 89 virtual net::URLRequestJob* MaybeInterceptRequest( |
| 90 net::URLRequest* request, | 90 net::URLRequest* request, |
| 91 net::NetworkDelegate* network_delegate) const override; | 91 net::NetworkDelegate* network_delegate) override; |
| 92 |
| 93 virtual net::URLRequestJob* MaybeInterceptRedirect( |
| 94 net::URLRequest* request, |
| 95 net::NetworkDelegate* network_delegate, |
| 96 const GURL& location) override; |
| 97 |
| 98 virtual net::URLRequestJob* MaybeInterceptResponse( |
| 99 net::URLRequest* request, |
| 100 net::NetworkDelegate* network_delegate) override; |
| 92 | 101 |
| 93 virtual bool ShouldHandleRequest(const net::URLRequest* request) const = 0; | 102 virtual bool ShouldHandleRequest(const net::URLRequest* request) const = 0; |
| 94 }; | 103 }; |
| 95 | 104 |
| 96 class AssetFileRequestInterceptor : public AndroidRequestInterceptorBase { | 105 class AssetFileRequestInterceptor : public AndroidRequestInterceptorBase { |
| 97 public: | 106 public: |
| 98 AssetFileRequestInterceptor(); | 107 AssetFileRequestInterceptor(); |
| 99 | 108 |
| 100 virtual ~AssetFileRequestInterceptor() override; | 109 virtual ~AssetFileRequestInterceptor() override; |
| 101 virtual bool ShouldHandleRequest( | 110 virtual bool ShouldHandleRequest( |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 void AndroidStreamReaderURLRequestJobDelegateImpl::AppendResponseHeaders( | 214 void AndroidStreamReaderURLRequestJobDelegateImpl::AppendResponseHeaders( |
| 206 JNIEnv* env, | 215 JNIEnv* env, |
| 207 net::HttpResponseHeaders* headers) { | 216 net::HttpResponseHeaders* headers) { |
| 208 // no-op | 217 // no-op |
| 209 } | 218 } |
| 210 | 219 |
| 211 // AndroidRequestInterceptorBase ---------------------------------------------- | 220 // AndroidRequestInterceptorBase ---------------------------------------------- |
| 212 | 221 |
| 213 net::URLRequestJob* AndroidRequestInterceptorBase::MaybeInterceptRequest( | 222 net::URLRequestJob* AndroidRequestInterceptorBase::MaybeInterceptRequest( |
| 214 net::URLRequest* request, | 223 net::URLRequest* request, |
| 215 net::NetworkDelegate* network_delegate) const { | 224 net::NetworkDelegate* network_delegate) { |
| 216 if (!ShouldHandleRequest(request)) | 225 if (!ShouldHandleRequest(request)) |
| 217 return NULL; | 226 return NULL; |
| 218 | 227 |
| 219 // For WebViewClassic compatibility this job can only accept URLs that can be | 228 // For WebViewClassic compatibility this job can only accept URLs that can be |
| 220 // opened. URLs that cannot be opened should be resolved by the next handler. | 229 // opened. URLs that cannot be opened should be resolved by the next handler. |
| 221 // | 230 // |
| 222 // If a request is initially handled here but the job fails due to it being | 231 // If a request is initially handled here but the job fails due to it being |
| 223 // unable to open the InputStream for that request the request is marked as | 232 // unable to open the InputStream for that request the request is marked as |
| 224 // previously failed and restarted. | 233 // previously failed and restarted. |
| 225 // Restarting a request involves creating a new job for that request. This | 234 // Restarting a request involves creating a new job for that request. This |
| 226 // handler will ignore requests know to have previously failed to 1) prevent | 235 // handler will ignore requests know to have previously failed to 1) prevent |
| 227 // an infinite loop, 2) ensure that the next handler in line gets the | 236 // an infinite loop, 2) ensure that the next handler in line gets the |
| 228 // opportunity to create a job for the request. | 237 // opportunity to create a job for the request. |
| 229 if (HasRequestPreviouslyFailed(request)) | 238 if (HasRequestPreviouslyFailed(request)) |
| 230 return NULL; | 239 return NULL; |
| 231 | 240 |
| 232 scoped_ptr<AndroidStreamReaderURLRequestJobDelegateImpl> reader_delegate( | 241 scoped_ptr<AndroidStreamReaderURLRequestJobDelegateImpl> reader_delegate( |
| 233 new AndroidStreamReaderURLRequestJobDelegateImpl()); | 242 new AndroidStreamReaderURLRequestJobDelegateImpl()); |
| 234 | 243 |
| 235 return new AndroidStreamReaderURLRequestJob( | 244 return new AndroidStreamReaderURLRequestJob( |
| 236 request, network_delegate, reader_delegate.Pass()); | 245 request, network_delegate, reader_delegate.Pass()); |
| 237 } | 246 } |
| 238 | 247 |
| 248 net::URLRequestJob* AndroidRequestInterceptorBase::MaybeInterceptRedirect( |
| 249 net::URLRequest* request, |
| 250 net::NetworkDelegate* network_delegate, |
| 251 const GURL& location) { |
| 252 return NULL; |
| 253 } |
| 254 |
| 255 net::URLRequestJob* AndroidRequestInterceptorBase::MaybeInterceptResponse( |
| 256 net::URLRequest* request, |
| 257 net::NetworkDelegate* network_delegate) { |
| 258 return NULL; |
| 259 } |
| 260 |
| 239 // AssetFileRequestInterceptor ------------------------------------------------ | 261 // AssetFileRequestInterceptor ------------------------------------------------ |
| 240 | 262 |
| 241 AssetFileRequestInterceptor::AssetFileRequestInterceptor() | 263 AssetFileRequestInterceptor::AssetFileRequestInterceptor() |
| 242 : asset_prefix_(std::string(url::kFileScheme) + | 264 : asset_prefix_(std::string(url::kFileScheme) + |
| 243 std::string(url::kStandardSchemeSeparator) + | 265 std::string(url::kStandardSchemeSeparator) + |
| 244 android_webview::kAndroidAssetPath), | 266 android_webview::kAndroidAssetPath), |
| 245 resource_prefix_(std::string(url::kFileScheme) + | 267 resource_prefix_(std::string(url::kFileScheme) + |
| 246 std::string(url::kStandardSchemeSeparator) + | 268 std::string(url::kStandardSchemeSeparator) + |
| 247 android_webview::kAndroidResourcePath) { | 269 android_webview::kAndroidResourcePath) { |
| 248 } | 270 } |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 env, android_webview::kAndroidAssetPath).Release(); | 339 env, android_webview::kAndroidAssetPath).Release(); |
| 318 } | 340 } |
| 319 | 341 |
| 320 static jstring GetAndroidResourcePath(JNIEnv* env, jclass /*clazz*/) { | 342 static jstring GetAndroidResourcePath(JNIEnv* env, jclass /*clazz*/) { |
| 321 // OK to release, JNI binding. | 343 // OK to release, JNI binding. |
| 322 return ConvertUTF8ToJavaString( | 344 return ConvertUTF8ToJavaString( |
| 323 env, android_webview::kAndroidResourcePath).Release(); | 345 env, android_webview::kAndroidResourcePath).Release(); |
| 324 } | 346 } |
| 325 | 347 |
| 326 } // namespace android_webview | 348 } // namespace android_webview |
| OLD | NEW |