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 3 // found in the LICENSE file. 4 5 #include "android_webview/native/intercepted_request_data_impl.h" 6 7 #include "android_webview/native/input_stream_impl.h" 8 #include "base/android/jni_android.h" 9 #include "base/android/jni_string.h" 10 #include "jni/InterceptedRequestData_jni.h" 11 #include "net/url_request/url_request.h" 12 #include "net/url_request/url_request_job.h" 13 14 using base::android::ScopedJavaLocalRef; 15 16 namespace android_webview { 17 InterceptedRequestDataImpl(const base::android::JavaRef<jobject> & obj)18InterceptedRequestDataImpl::InterceptedRequestDataImpl( 19 const base::android::JavaRef<jobject>& obj) 20 : java_object_(obj) { 21 } 22 ~InterceptedRequestDataImpl()23InterceptedRequestDataImpl::~InterceptedRequestDataImpl() { 24 } 25 26 scoped_ptr<InputStream> GetInputStream(JNIEnv * env) const27InterceptedRequestDataImpl::GetInputStream(JNIEnv* env) const { 28 ScopedJavaLocalRef<jobject> jstream = 29 Java_InterceptedRequestData_getData(env, java_object_.obj()); 30 if (jstream.is_null()) 31 return scoped_ptr<InputStream>(); 32 return make_scoped_ptr<InputStream>(new InputStreamImpl(jstream)); 33 } 34 GetMimeType(JNIEnv * env,std::string * mime_type) const35bool InterceptedRequestDataImpl::GetMimeType(JNIEnv* env, 36 std::string* mime_type) const { 37 ScopedJavaLocalRef<jstring> jstring_mime_type = 38 Java_InterceptedRequestData_getMimeType(env, java_object_.obj()); 39 if (jstring_mime_type.is_null()) 40 return false; 41 *mime_type = ConvertJavaStringToUTF8(jstring_mime_type); 42 return true; 43 } 44 GetCharset(JNIEnv * env,std::string * charset) const45bool InterceptedRequestDataImpl::GetCharset( 46 JNIEnv* env, std::string* charset) const { 47 ScopedJavaLocalRef<jstring> jstring_charset = 48 Java_InterceptedRequestData_getCharset(env, java_object_.obj()); 49 if (jstring_charset.is_null()) 50 return false; 51 *charset = ConvertJavaStringToUTF8(jstring_charset); 52 return true; 53 } 54 RegisterInterceptedRequestData(JNIEnv * env)55bool RegisterInterceptedRequestData(JNIEnv* env) { 56 return RegisterNativesImpl(env); 57 } 58 59 } // namespace android_webview 60