Index: mojo/services/native_viewport/platform_viewport_android.cc |
diff --git a/mojo/services/native_viewport/platform_viewport_android.cc b/mojo/services/native_viewport/platform_viewport_android.cc |
index ee5d7dd72f1d78136d56f3e1e154fee826e47a8e..124919a4b5258560cdc8049d9802ee2072c94a75 100644 |
--- a/mojo/services/native_viewport/platform_viewport_android.cc |
+++ b/mojo/services/native_viewport/platform_viewport_android.cc |
@@ -61,6 +61,11 @@ PlatformViewportAndroid::PlatformViewportAndroid(Delegate* delegate) |
PlatformViewportAndroid::~PlatformViewportAndroid() { |
if (window_) |
ReleaseWindow(); |
+ if (!java_platform_viewport_android_.is_empty()) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ Java_PlatformViewportAndroid_detach( |
+ env, java_platform_viewport_android_.get(env).obj()); |
+ } |
} |
void PlatformViewportAndroid::Destroy(JNIEnv* env, jobject obj) { |
@@ -161,10 +166,10 @@ bool PlatformViewportAndroid::KeyEvent(JNIEnv* env, |
void PlatformViewportAndroid::Init(const gfx::Rect& bounds) { |
JNIEnv* env = base::android::AttachCurrentThread(); |
- Java_PlatformViewportAndroid_createForActivity( |
- env, |
- base::android::GetApplicationContext(), |
- reinterpret_cast<jlong>(this)); |
+ java_platform_viewport_android_ = JavaObjectWeakGlobalRef( |
+ env, Java_PlatformViewportAndroid_createForActivity( |
+ env, base::android::GetApplicationContext(), |
+ reinterpret_cast<jlong>(this)).obj()); |
} |
void PlatformViewportAndroid::Show() { |