Index: android_webview/java/src/org/chromium/android_webview/AwContents.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
index f0f286ffb8adcaf325ccd72bb5cb971b6c1d55ae..08f191d513f4c3a7499013fea7582c4cb99b182b 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java |
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
@@ -4,6 +4,8 @@ |
package org.chromium.android_webview; |
+import android.content.ComponentCallbacks2; |
+import android.content.Context; |
import android.content.pm.PackageManager; |
import android.content.res.Configuration; |
import android.graphics.Bitmap; |
@@ -193,6 +195,8 @@ public class AwContents { |
private AwAutofillManagerDelegate mAwAutofillManagerDelegate; |
+ private ComponentCallbacks2 mComponentCallbacks; |
+ |
private static final class DestroyRunnable implements Runnable { |
private int mNativeAwContents; |
private DestroyRunnable(int nativeAwContents) { |
@@ -431,6 +435,22 @@ public class AwContents { |
} |
} |
+ private class AwComponentCallbacks implements ComponentCallbacks2 { |
+ @Override |
+ public void onTrimMemory(int level) { |
+ if (mNativeAwContents == 0) return; |
+ nativeTrimMemory(mNativeAwContents, level); |
+ } |
+ |
+ @Override |
+ public void onLowMemory() { |
+ } |
+ |
+ @Override |
+ public void onConfigurationChanged(Configuration configuration) { |
+ } |
+ }; |
+ |
/** |
* @param browserContext the browsing context to associate this view contents with. |
* @param containerView the view-hierarchy item this object will be bound to. |
@@ -1480,6 +1500,10 @@ public class AwContents { |
mContentViewCore.onAttachedToWindow(); |
nativeOnAttachedToWindow(mNativeAwContents, mContainerView.getWidth(), |
mContainerView.getHeight()); |
+ |
+ if (mComponentCallbacks != null) return; |
+ mComponentCallbacks = new AwComponentCallbacks(); |
+ mContainerView.getContext().registerComponentCallbacks(mComponentCallbacks); |
} |
/** |
@@ -1494,6 +1518,11 @@ public class AwContents { |
mContentViewCore.onDetachedFromWindow(); |
+ if (mComponentCallbacks != null) { |
+ mContainerView.getContext().unregisterComponentCallbacks(mComponentCallbacks); |
+ mComponentCallbacks = null; |
+ } |
+ |
if (mPendingDetachCleanupReferences != null) { |
for (int i = 0; i < mPendingDetachCleanupReferences.size(); ++i) { |
mPendingDetachCleanupReferences.get(i).cleanupNow(); |
@@ -1967,4 +1996,6 @@ public class AwContents { |
int nativeAwContents, boolean value, String requestingFrame); |
private native void nativeSetJsOnlineProperty(int nativeAwContents, boolean networkUp); |
+ |
+ private native void nativeTrimMemory(int nativeAwContents, int level); |
} |