Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(215)

Side by Side Diff: android_webview/java/src/org/chromium/android_webview/AwContents.java

Issue 23888003: Free memory when the last WebView instance is destroyed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.android_webview; 5 package org.chromium.android_webview;
6 6
7 import android.content.ComponentCallbacks2;
7 import android.content.pm.PackageManager; 8 import android.content.pm.PackageManager;
8 import android.content.res.Configuration; 9 import android.content.res.Configuration;
9 import android.graphics.Bitmap; 10 import android.graphics.Bitmap;
10 import android.graphics.Canvas; 11 import android.graphics.Canvas;
11 import android.graphics.Color; 12 import android.graphics.Color;
12 import android.graphics.Picture; 13 import android.graphics.Picture;
13 import android.graphics.Rect; 14 import android.graphics.Rect;
14 import android.graphics.drawable.Drawable; 15 import android.graphics.drawable.Drawable;
15 import android.net.http.SslCertificate; 16 import android.net.http.SslCertificate;
16 import android.os.AsyncTask; 17 import android.os.AsyncTask;
(...skipping 14 matching lines...) Expand all
31 import android.view.inputmethod.EditorInfo; 32 import android.view.inputmethod.EditorInfo;
32 import android.view.inputmethod.InputConnection; 33 import android.view.inputmethod.InputConnection;
33 import android.webkit.GeolocationPermissions; 34 import android.webkit.GeolocationPermissions;
34 import android.webkit.ValueCallback; 35 import android.webkit.ValueCallback;
35 import android.widget.OverScroller; 36 import android.widget.OverScroller;
36 37
37 import com.google.common.annotations.VisibleForTesting; 38 import com.google.common.annotations.VisibleForTesting;
38 39
39 import org.chromium.base.CalledByNative; 40 import org.chromium.base.CalledByNative;
40 import org.chromium.base.JNINamespace; 41 import org.chromium.base.JNINamespace;
42 import org.chromium.base.MemoryPressureListener;
41 import org.chromium.base.ThreadUtils; 43 import org.chromium.base.ThreadUtils;
42 import org.chromium.content.browser.ContentSettings; 44 import org.chromium.content.browser.ContentSettings;
43 import org.chromium.content.browser.ContentVideoView; 45 import org.chromium.content.browser.ContentVideoView;
44 import org.chromium.content.browser.ContentViewClient; 46 import org.chromium.content.browser.ContentViewClient;
45 import org.chromium.content.browser.ContentViewCore; 47 import org.chromium.content.browser.ContentViewCore;
46 import org.chromium.content.browser.ContentViewStatics; 48 import org.chromium.content.browser.ContentViewStatics;
47 import org.chromium.content.browser.LoadUrlParams; 49 import org.chromium.content.browser.LoadUrlParams;
48 import org.chromium.content.browser.NavigationHistory; 50 import org.chromium.content.browser.NavigationHistory;
49 import org.chromium.content.browser.PageTransitionTypes; 51 import org.chromium.content.browser.PageTransitionTypes;
50 import org.chromium.content.common.CleanupReference; 52 import org.chromium.content.common.CleanupReference;
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 private static final class DestroyRunnable implements Runnable { 189 private static final class DestroyRunnable implements Runnable {
188 private int mNativeAwContents; 190 private int mNativeAwContents;
189 private DestroyRunnable(int nativeAwContents) { 191 private DestroyRunnable(int nativeAwContents) {
190 mNativeAwContents = nativeAwContents; 192 mNativeAwContents = nativeAwContents;
191 } 193 }
192 @Override 194 @Override
193 public void run() { 195 public void run() {
194 // This is a no-op if not currently attached. 196 // This is a no-op if not currently attached.
195 nativeOnDetachedFromWindow(mNativeAwContents); 197 nativeOnDetachedFromWindow(mNativeAwContents);
196 nativeDestroy(mNativeAwContents); 198 nativeDestroy(mNativeAwContents);
199
200 // Send a memory pressure signal for freeing up some memory if this
201 // is the last WebView instance.
202 if (getNativeInstanceCount() == 0) {
203 MemoryPressureListener.simulateMemoryPressureSignal(
204 ComponentCallbacks2.TRIM_MEMORY_COMPLETE);
joth 2013/09/03 18:37:58 It's always a bit hairy adding new code to the Cle
Primiano Tucci (use gerrit) 2013/09/05 11:47:25 Done.
205 }
197 } 206 }
198 } 207 }
199 208
200 // Reference to the active mNativeAwContents pointer while it is active use 209 // Reference to the active mNativeAwContents pointer while it is active use
201 // (ie before it is destroyed). 210 // (ie before it is destroyed).
202 private CleanupReference mCleanupReference; 211 private CleanupReference mCleanupReference;
203 212
204 // A list of references to native pointers where the Java counterpart has be en 213 // A list of references to native pointers where the Java counterpart has be en
205 // destroyed, but are held here because they are waiting for onDetachFromWin dow 214 // destroyed, but are held here because they are waiting for onDetachFromWin dow
206 // to release GL resources. This is cleared inside onDetachFromWindow. 215 // to release GL resources. This is cleared inside onDetachFromWindow.
(...skipping 1711 matching lines...) Expand 10 before | Expand all | Expand 10 after
1918 1927
1919 private native int nativeGetAwDrawGLViewContext(int nativeAwContents); 1928 private native int nativeGetAwDrawGLViewContext(int nativeAwContents);
1920 private native int nativeCapturePicture(int nativeAwContents, int width, int height); 1929 private native int nativeCapturePicture(int nativeAwContents, int width, int height);
1921 private native void nativeEnableOnNewPicture(int nativeAwContents, boolean e nabled); 1930 private native void nativeEnableOnNewPicture(int nativeAwContents, boolean e nabled);
1922 1931
1923 private native void nativeInvokeGeolocationCallback( 1932 private native void nativeInvokeGeolocationCallback(
1924 int nativeAwContents, boolean value, String requestingFrame); 1933 int nativeAwContents, boolean value, String requestingFrame);
1925 1934
1926 private native void nativeSetJsOnlineProperty(int nativeAwContents, boolean networkUp); 1935 private native void nativeSetJsOnlineProperty(int nativeAwContents, boolean networkUp);
1927 } 1936 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698