Remove gc root from PowerSaveBlocker
Views used by PowerSaveBlocker should be allowed to be garbage collected. WebView relies on this in order to not leak. Bug: 1004166 Change-Id: I95a996f4de21ab437650cb4ac039adb56e21815e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1816797 Commit-Queue: Bo <boliu@chromium.org> Auto-Submit: Bo <boliu@chromium.org> Reviewed-by: Colin Blundell <blundell@chromium.org> Cr-Commit-Position: refs/heads/master@{#698497}
This commit is contained in:
@ -10,13 +10,13 @@ import org.chromium.base.annotations.CalledByNative;
|
||||
import org.chromium.base.annotations.JNINamespace;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashMap;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
@JNINamespace("device")
|
||||
class PowerSaveBlocker {
|
||||
// Counter associated to a view to know how many PowerSaveBlocker are
|
||||
// currently registered.
|
||||
private static HashMap<View, Integer> sBlockViewCounter = new HashMap<View, Integer>();
|
||||
// currently registered. Using WeakHashMap to prevent leaks in Android WebView.
|
||||
private static WeakHashMap<View, Integer> sBlockViewCounter = new WeakHashMap<View, Integer>();
|
||||
|
||||
// WeakReference to prevent leaks in Android WebView.
|
||||
private WeakReference<View> mKeepScreenOnView;
|
||||
@ -54,6 +54,9 @@ class PowerSaveBlocker {
|
||||
View view = mKeepScreenOnView.get();
|
||||
mKeepScreenOnView = null;
|
||||
|
||||
// View has been garbage collected. No need to worry about clean up.
|
||||
if (view == null) return;
|
||||
|
||||
Integer prev_counter = sBlockViewCounter.get(view);
|
||||
assert prev_counter != null;
|
||||
assert prev_counter.intValue() > 0;
|
||||
|
Reference in New Issue
Block a user