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 |