| 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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 | 53 |
| 54 bool HasRequestPreviouslyFailed(net::URLRequest* request) { | 54 bool HasRequestPreviouslyFailed(net::URLRequest* request) { |
| 55 return request->GetUserData(kPreviouslyFailedKey) != NULL; | 55 return request->GetUserData(kPreviouslyFailedKey) != NULL; |
| 56 } | 56 } |
| 57 | 57 |
| 58 class AndroidStreamReaderURLRequestJobDelegateImpl | 58 class AndroidStreamReaderURLRequestJobDelegateImpl |
| 59 : public AndroidStreamReaderURLRequestJob::Delegate { | 59 : public AndroidStreamReaderURLRequestJob::Delegate { |
| 60 public: | 60 public: |
| 61 AndroidStreamReaderURLRequestJobDelegateImpl(); | 61 AndroidStreamReaderURLRequestJobDelegateImpl(); |
| 62 | 62 |
| 63 virtual scoped_ptr<InputStream> OpenInputStream( | 63 scoped_ptr<InputStream> OpenInputStream(JNIEnv* env, |
| 64 JNIEnv* env, | 64 const GURL& url) override; |
| 65 const GURL& url) override; | |
| 66 | 65 |
| 67 virtual void OnInputStreamOpenFailed(net::URLRequest* request, | 66 void OnInputStreamOpenFailed(net::URLRequest* request, |
| 68 bool* restart) override; | 67 bool* restart) override; |
| 69 | 68 |
| 70 virtual bool GetMimeType(JNIEnv* env, | 69 bool GetMimeType(JNIEnv* env, |
| 71 net::URLRequest* request, | 70 net::URLRequest* request, |
| 72 InputStream* stream, | 71 InputStream* stream, |
| 73 std::string* mime_type) override; | 72 std::string* mime_type) override; |
| 74 | 73 |
| 75 virtual bool GetCharset(JNIEnv* env, | 74 bool GetCharset(JNIEnv* env, |
| 76 net::URLRequest* request, | 75 net::URLRequest* request, |
| 77 InputStream* stream, | 76 InputStream* stream, |
| 78 std::string* charset) override; | 77 std::string* charset) override; |
| 79 | 78 |
| 80 virtual void AppendResponseHeaders( | 79 void AppendResponseHeaders(JNIEnv* env, |
| 81 JNIEnv* env, | 80 net::HttpResponseHeaders* headers) override; |
| 82 net::HttpResponseHeaders* headers) override; | |
| 83 | 81 |
| 84 virtual ~AndroidStreamReaderURLRequestJobDelegateImpl(); | 82 ~AndroidStreamReaderURLRequestJobDelegateImpl() override; |
| 85 }; | 83 }; |
| 86 | 84 |
| 87 class AndroidRequestInterceptorBase : public net::URLRequestInterceptor { | 85 class AndroidRequestInterceptorBase : public net::URLRequestInterceptor { |
| 88 public: | 86 public: |
| 89 virtual net::URLRequestJob* MaybeInterceptRequest( | 87 net::URLRequestJob* MaybeInterceptRequest( |
| 90 net::URLRequest* request, | 88 net::URLRequest* request, |
| 91 net::NetworkDelegate* network_delegate) const override; | 89 net::NetworkDelegate* network_delegate) const override; |
| 92 | 90 |
| 93 virtual bool ShouldHandleRequest(const net::URLRequest* request) const = 0; | 91 virtual bool ShouldHandleRequest(const net::URLRequest* request) const = 0; |
| 94 }; | 92 }; |
| 95 | 93 |
| 96 class AssetFileRequestInterceptor : public AndroidRequestInterceptorBase { | 94 class AssetFileRequestInterceptor : public AndroidRequestInterceptorBase { |
| 97 public: | 95 public: |
| 98 AssetFileRequestInterceptor(); | 96 AssetFileRequestInterceptor(); |
| 99 | 97 |
| 100 virtual ~AssetFileRequestInterceptor() override; | 98 ~AssetFileRequestInterceptor() override; |
| 101 virtual bool ShouldHandleRequest( | 99 bool ShouldHandleRequest(const net::URLRequest* request) const override; |
| 102 const net::URLRequest* request) const override; | |
| 103 | 100 |
| 104 private: | 101 private: |
| 105 // file:///android_asset/ | 102 // file:///android_asset/ |
| 106 const std::string asset_prefix_; | 103 const std::string asset_prefix_; |
| 107 // file:///android_res/ | 104 // file:///android_res/ |
| 108 const std::string resource_prefix_; | 105 const std::string resource_prefix_; |
| 109 }; | 106 }; |
| 110 | 107 |
| 111 // Protocol handler for content:// scheme requests. | 108 // Protocol handler for content:// scheme requests. |
| 112 class ContentSchemeRequestInterceptor : public AndroidRequestInterceptorBase { | 109 class ContentSchemeRequestInterceptor : public AndroidRequestInterceptorBase { |
| 113 public: | 110 public: |
| 114 ContentSchemeRequestInterceptor(); | 111 ContentSchemeRequestInterceptor(); |
| 115 virtual bool ShouldHandleRequest( | 112 bool ShouldHandleRequest(const net::URLRequest* request) const override; |
| 116 const net::URLRequest* request) const override; | |
| 117 }; | 113 }; |
| 118 | 114 |
| 119 static ScopedJavaLocalRef<jobject> GetResourceContext(JNIEnv* env) { | 115 static ScopedJavaLocalRef<jobject> GetResourceContext(JNIEnv* env) { |
| 120 if (g_resource_context) | 116 if (g_resource_context) |
| 121 return g_resource_context->get(env); | 117 return g_resource_context->get(env); |
| 122 ScopedJavaLocalRef<jobject> context; | 118 ScopedJavaLocalRef<jobject> context; |
| 123 // We have to reset as GetApplicationContext() returns a jobject with a | 119 // We have to reset as GetApplicationContext() returns a jobject with a |
| 124 // global ref. The constructor that takes a jobject would expect a local ref | 120 // global ref. The constructor that takes a jobject would expect a local ref |
| 125 // and would assert. | 121 // and would assert. |
| 126 context.Reset(env, base::android::GetApplicationContext()); | 122 context.Reset(env, base::android::GetApplicationContext()); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 env, android_webview::kAndroidAssetPath).Release(); | 313 env, android_webview::kAndroidAssetPath).Release(); |
| 318 } | 314 } |
| 319 | 315 |
| 320 static jstring GetAndroidResourcePath(JNIEnv* env, jclass /*clazz*/) { | 316 static jstring GetAndroidResourcePath(JNIEnv* env, jclass /*clazz*/) { |
| 321 // OK to release, JNI binding. | 317 // OK to release, JNI binding. |
| 322 return ConvertUTF8ToJavaString( | 318 return ConvertUTF8ToJavaString( |
| 323 env, android_webview::kAndroidResourcePath).Release(); | 319 env, android_webview::kAndroidResourcePath).Release(); |
| 324 } | 320 } |
| 325 | 321 |
| 326 } // namespace android_webview | 322 } // namespace android_webview |
| OLD | NEW |