diff options
author | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-19 11:08:26 +0000 |
---|---|---|
committer | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-19 11:08:26 +0000 |
commit | ad52295f552b2bd60cdd28314333e1bbe3ff9c9b (patch) | |
tree | 730cf79606095de688148d5af47140820f379347 /base/android | |
parent | 7f803f3ecaed017da5eaffb0c7ce4f5aaa2a2878 (diff) | |
download | chromium_src-ad52295f552b2bd60cdd28314333e1bbe3ff9c9b.zip chromium_src-ad52295f552b2bd60cdd28314333e1bbe3ff9c9b.tar.gz chromium_src-ad52295f552b2bd60cdd28314333e1bbe3ff9c9b.tar.bz2 |
[Android] Add IO thread delegate for request intercepting.
This is to make it possible for a ResourceThrottle (which runs on
the IO thread) to call a WebViewClient method. This requires
caching the RenderViewHost<->WebContents relationship in
a threadsafe way.
BUG=138481
Review URL: https://codereview.chromium.org/10702083
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157533 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/android')
-rwxr-xr-x | base/android/jni_generator/jni_generator.py | 3 | ||||
-rw-r--r-- | base/android/jni_helper.cc | 18 | ||||
-rw-r--r-- | base/android/jni_helper.h | 8 |
3 files changed, 26 insertions, 3 deletions
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py index 9c29099..1b9bf84 100755 --- a/base/android/jni_generator/jni_generator.py +++ b/base/android/jni_generator/jni_generator.py @@ -163,7 +163,9 @@ def JavaParamToJni(param): 'Lorg/chromium/android_webview/AwContents', 'Lorg/chromium/android_webview/AwContentsClient', 'Lorg/chromium/android_webview/AwHttpAuthHandler', + 'Lorg/chromium/android_webview/AwContentsIoThreadClient', 'Lorg/chromium/android_webview/AwWebContentsDelegate', + 'Lorg/chromium/android_webview/InterceptedRequestData', 'Lorg/chromium/base/SystemMessageHandler', 'Lorg/chromium/chrome/browser/ChromeBrowserProvider$BookmarkNode', 'Lorg/chromium/chrome/browser/ChromeWebContentsDelegateAndroid', @@ -177,7 +179,6 @@ def JavaParamToJni(param): 'Lorg/chromium/content/browser/ContentViewCore', 'Lorg/chromium/content/browser/DeviceOrientation', 'Lorg/chromium/content/browser/FindNotificationDetails', - 'Lorg/chromium/content/browser/InterceptedRequestData', 'Lorg/chromium/content/browser/JavaInputStream', 'Lorg/chromium/content/browser/LocationProvider', 'Lorg/chromium/content/browser/SandboxedProcessArgs', diff --git a/base/android/jni_helper.cc b/base/android/jni_helper.cc index 3ff3bfb..c0833c9 100644 --- a/base/android/jni_helper.cc +++ b/base/android/jni_helper.cc @@ -9,6 +9,15 @@ using base::android::AttachCurrentThread; +JavaObjectWeakGlobalRef::JavaObjectWeakGlobalRef() + : obj_(NULL) { +} + +JavaObjectWeakGlobalRef::JavaObjectWeakGlobalRef( + const JavaObjectWeakGlobalRef& orig) { + Assign(orig); +} + JavaObjectWeakGlobalRef::JavaObjectWeakGlobalRef(JNIEnv* env, jobject obj) : obj_(env->NewWeakGlobalRef(obj)) { DCHECK(obj_); @@ -18,6 +27,10 @@ JavaObjectWeakGlobalRef::~JavaObjectWeakGlobalRef() { reset(); } +void JavaObjectWeakGlobalRef::operator=(const JavaObjectWeakGlobalRef& rhs) { + Assign(rhs); +} + void JavaObjectWeakGlobalRef::reset() { if (obj_) { AttachCurrentThread()->DeleteWeakGlobalRef(obj_); @@ -40,3 +53,8 @@ base::android::ScopedJavaLocalRef<jobject> GetRealObject( } return base::android::ScopedJavaLocalRef<jobject>(env, real); } + +void JavaObjectWeakGlobalRef::Assign(const JavaObjectWeakGlobalRef& other) { + JNIEnv* env = AttachCurrentThread(); + obj_ = env->NewWeakGlobalRef(other.obj_); +} diff --git a/base/android/jni_helper.h b/base/android/jni_helper.h index bd3579f..22883cb 100644 --- a/base/android/jni_helper.h +++ b/base/android/jni_helper.h @@ -15,17 +15,21 @@ // calls the destructor) they'll need to provide their own synchronization. class JavaObjectWeakGlobalRef { public: + JavaObjectWeakGlobalRef(); + JavaObjectWeakGlobalRef(const JavaObjectWeakGlobalRef& orig); JavaObjectWeakGlobalRef(JNIEnv* env, jobject obj); virtual ~JavaObjectWeakGlobalRef(); + void operator=(const JavaObjectWeakGlobalRef& rhs); + base::android::ScopedJavaLocalRef<jobject> get(JNIEnv* env) const; void reset(); private: - jweak obj_; + void Assign(const JavaObjectWeakGlobalRef& rhs); - DISALLOW_COPY_AND_ASSIGN(JavaObjectWeakGlobalRef); + jweak obj_; }; // Get the real object stored in the weak reference returned as a |