Index: services/native_viewport/platform_viewport_android.cc |
diff --git a/services/native_viewport/platform_viewport_android.cc b/services/native_viewport/platform_viewport_android.cc |
index 31b7ea22cd6ee7220bb6da1cda2d5624b253f83a..3a7a1bf349c0348cd68ffb2ba509f319d06e3469 100644 |
--- a/services/native_viewport/platform_viewport_android.cc |
+++ b/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() { |