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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/PowerSaveBlocker.java

Issue 1041823004: Remove java ViewAndroid class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: java PowerSaveBlocker Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/PowerSaveBlocker.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/PowerSaveBlocker.java b/content/public/android/java/src/org/chromium/content/browser/PowerSaveBlocker.java
index 3c561c3c49030d3a1b1d39fd8e754ecf5791318e..4eea4c0c312d3443ab4680f5fe5c4f820463dbf9 100644
--- a/content/public/android/java/src/org/chromium/content/browser/PowerSaveBlocker.java
+++ b/content/public/android/java/src/org/chromium/content/browser/PowerSaveBlocker.java
@@ -4,17 +4,45 @@
package org.chromium.content.browser;
+import android.view.View;
+
import org.chromium.base.CalledByNative;
-import org.chromium.ui.base.ViewAndroid;
+import org.chromium.base.JNINamespace;
+import org.chromium.ui.base.ViewAndroidDelegate;
+
+import java.lang.ref.WeakReference;
+@JNINamespace("content")
class PowerSaveBlocker {
+ // WeakReference to prevent leaks in Android WebView.
+ private WeakReference<View> mKeepScreenOnView;
+
+ @CalledByNative
+ private static PowerSaveBlocker create() {
+ return new PowerSaveBlocker();
+ }
+
+ private PowerSaveBlocker() {}
+
@CalledByNative
- private static void applyBlock(ViewAndroid view) {
- view.incrementKeepScreenOnCount();
+ private void applyBlock(ContentViewCore contentViewCore) {
+ assert mKeepScreenOnView == null;
Ted C 2015/04/07 19:53:29 It used to use a counter for incrementing and decr
boliu 2015/04/07 20:03:18 Because there used to be one anchor view per CVC,
+ ViewAndroidDelegate delegate = contentViewCore.getViewAndroidDelegate();
+ View anchorView = delegate.acquireAnchorView();
+ mKeepScreenOnView = new WeakReference<>(anchorView);
+ delegate.setAnchorViewPosition(anchorView, 0, 0, 0, 0);
+ anchorView.setKeepScreenOn(true);
}
@CalledByNative
- private static void removeBlock(ViewAndroid view) {
- view.decrementKeepScreenOnCount();
+ private void removeBlock(ContentViewCore contentViewCore) {
+ assert mKeepScreenOnView != null;
+ View anchorView = mKeepScreenOnView.get();
+ mKeepScreenOnView = null;
+ if (anchorView == null) return;
+
+ ViewAndroidDelegate delegate = contentViewCore.getViewAndroidDelegate();
+ anchorView.setKeepScreenOn(false);
+ delegate.releaseAnchorView(anchorView);
}
}

Powered by Google App Engine
This is Rietveld 408576698