summaryrefslogtreecommitdiffstats
path: root/base/android
diff options
context:
space:
mode:
authormkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-19 11:08:26 +0000
committermkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-19 11:08:26 +0000
commitad52295f552b2bd60cdd28314333e1bbe3ff9c9b (patch)
tree730cf79606095de688148d5af47140820f379347 /base/android
parent7f803f3ecaed017da5eaffb0c7ce4f5aaa2a2878 (diff)
downloadchromium_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-xbase/android/jni_generator/jni_generator.py3
-rw-r--r--base/android/jni_helper.cc18
-rw-r--r--base/android/jni_helper.h8
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