| Index: base/android/jni_helper.cc
|
| diff --git a/base/android/jni_helper.cc b/base/android/jni_helper.cc
|
| index 3ff3bfb1dfb27cafd6499735f4c7b66e283510fa..6eb991e59909823c5fbac29a86ebece992671505 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,12 @@ base::android::ScopedJavaLocalRef<jobject> GetRealObject(
|
| }
|
| return base::android::ScopedJavaLocalRef<jobject>(env, real);
|
| }
|
| +
|
| +void JavaObjectWeakGlobalRef::assign(const JavaObjectWeakGlobalRef& other) {
|
| + JNIEnv* env = AttachCurrentThread();
|
| + base::android::ScopedJavaLocalRef<jobject> pinnedObj = other.get(env);
|
| + if (pinnedObj.is_null())
|
| + obj_ = NULL;
|
| + else
|
| + obj_ = env->NewWeakGlobalRef(pinnedObj.obj());
|
| +}
|
|
|