Index: android_webview/native/android_protocol_handler.cc |
diff --git a/android_webview/native/android_protocol_handler.cc b/android_webview/native/android_protocol_handler.cc |
index de6059f9df6f8c5f98060423e71b9930db16f1d0..839c4e3d5d0c9c5b30cc428434540b50997bab57 100644 |
--- a/android_webview/native/android_protocol_handler.cc |
+++ b/android_webview/native/android_protocol_handler.cc |
@@ -2,12 +2,11 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-// URL request job for reading from resources and assets. |
- |
#include "android_webview/native/android_protocol_handler.h" |
+#include "android_webview/browser/net/android_stream_reader_url_request_job.h" |
#include "android_webview/common/url_constants.h" |
-#include "android_webview/native/android_stream_reader_url_request_job.h" |
+#include "android_webview/native/input_stream_impl.h" |
#include "base/android/jni_android.h" |
#include "base/android/jni_helper.h" |
#include "base/android/jni_string.h" |
@@ -23,6 +22,8 @@ |
#include "net/url_request/url_request.h" |
#include "net/url_request/url_request_job_factory.h" |
+using android_webview::InputStream; |
+using android_webview::InputStreamImpl; |
using base::android::AttachCurrentThread; |
using base::android::ClearException; |
using base::android::ConvertUTF8ToJavaString; |
@@ -47,18 +48,18 @@ class AndroidStreamReaderURLRequestJobDelegateImpl |
public: |
AndroidStreamReaderURLRequestJobDelegateImpl(); |
- virtual ScopedJavaLocalRef<jobject> OpenInputStream( |
+ virtual scoped_ptr<InputStream> OpenInputStream( |
JNIEnv* env, |
net::URLRequest* request) OVERRIDE; |
virtual bool GetMimeType(JNIEnv* env, |
net::URLRequest* request, |
- jobject stream, |
+ const InputStream& stream, |
std::string* mime_type) OVERRIDE; |
virtual bool GetCharset(JNIEnv* env, |
net::URLRequest* request, |
- jobject stream, |
+ const InputStream& stream, |
std::string* charset) OVERRIDE; |
virtual ~AndroidStreamReaderURLRequestJobDelegateImpl(); |
@@ -124,7 +125,7 @@ AndroidStreamReaderURLRequestJobDelegateImpl:: |
~AndroidStreamReaderURLRequestJobDelegateImpl() { |
} |
-ScopedJavaLocalRef<jobject> |
+scoped_ptr<InputStream> |
AndroidStreamReaderURLRequestJobDelegateImpl::OpenInputStream( |
JNIEnv* env, net::URLRequest* request) { |
DCHECK(request); |
@@ -142,32 +143,31 @@ AndroidStreamReaderURLRequestJobDelegateImpl::OpenInputStream( |
// Check and clear pending exceptions. |
if (ClearException(env) || stream.is_null()) { |
DLOG(ERROR) << "Unable to open input stream for Android URL"; |
- return ScopedJavaLocalRef<jobject>(env, NULL); |
+ return scoped_ptr<InputStream>(); |
} |
- return stream; |
+ return make_scoped_ptr<InputStream>(new InputStreamImpl(stream)); |
} |
bool AndroidStreamReaderURLRequestJobDelegateImpl::GetMimeType( |
JNIEnv* env, |
net::URLRequest* request, |
- jobject stream, |
+ const android_webview::InputStream& stream, |
std::string* mime_type) { |
DCHECK(env); |
DCHECK(request); |
DCHECK(mime_type); |
- if (!stream) |
- return false; |
- |
// Query the mime type from the Java side. It is possible for the query to |
// fail, as the mime type cannot be determined for all supported schemes. |
ScopedJavaLocalRef<jstring> url = |
ConvertUTF8ToJavaString(env, request->url().spec()); |
+ const InputStreamImpl* stream_impl = |
+ InputStreamImpl::FromInputStream(&stream); |
ScopedJavaLocalRef<jstring> returned_type = |
android_webview::Java_AndroidProtocolHandler_getMimeType( |
env, |
GetResourceContext(env).obj(), |
- stream, url.obj()); |
+ stream_impl->jobj(), url.obj()); |
if (ClearException(env) || returned_type.is_null()) |
return false; |
@@ -178,7 +178,7 @@ bool AndroidStreamReaderURLRequestJobDelegateImpl::GetMimeType( |
bool AndroidStreamReaderURLRequestJobDelegateImpl::GetCharset( |
JNIEnv* env, |
net::URLRequest* request, |
- jobject stream, |
+ const android_webview::InputStream& stream, |
std::string* charset) { |
// TODO: We should probably be getting this from the managed side. |
return false; |