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

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

Issue 2003803002: Remove dependency of power_save_blocker_android on various content bits (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@power-save-task-runners
Patch Set: back to weakptr Created 4 years, 6 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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.content.browser; 5 package org.chromium.content.browser;
6 6
7 import android.view.View; 7 import android.view.View;
8 8
9 import org.chromium.base.annotations.CalledByNative; 9 import org.chromium.base.annotations.CalledByNative;
10 import org.chromium.base.annotations.JNINamespace; 10 import org.chromium.base.annotations.JNINamespace;
11 import org.chromium.ui.base.ViewAndroidDelegate; 11 import org.chromium.ui.base.ViewAndroidDelegate;
12 12
13 import java.lang.ref.WeakReference; 13 import java.lang.ref.WeakReference;
14 14
15 @JNINamespace("content") 15 @JNINamespace("content")
16 class PowerSaveBlocker { 16 class PowerSaveBlocker {
17 // WeakReference to prevent leaks in Android WebView. 17 // WeakReference to prevent leaks in Android WebView.
18 private WeakReference<View> mKeepScreenOnView; 18 private WeakReference<View> mKeepScreenOnView;
19 19
20 @CalledByNative 20 @CalledByNative
21 private static PowerSaveBlocker create() { 21 private static PowerSaveBlocker create() {
22 return new PowerSaveBlocker(); 22 return new PowerSaveBlocker();
23 } 23 }
24 24
25 private PowerSaveBlocker() {} 25 private PowerSaveBlocker() {}
26 26
27 @CalledByNative 27 @CalledByNative
28 private void applyBlock(ContentViewCore contentViewCore) { 28 private void applyBlock(ViewAndroidDelegate delegate) {
29 assert mKeepScreenOnView == null; 29 assert mKeepScreenOnView == null;
30 ViewAndroidDelegate delegate = contentViewCore.getViewAndroidDelegate();
31 View anchorView = delegate.acquireAnchorView(); 30 View anchorView = delegate.acquireAnchorView();
32 mKeepScreenOnView = new WeakReference<>(anchorView); 31 mKeepScreenOnView = new WeakReference<>(anchorView);
33 delegate.setAnchorViewPosition(anchorView, 0, 0, 0, 0); 32 delegate.setAnchorViewPosition(anchorView, 0, 0, 0, 0);
34 anchorView.setKeepScreenOn(true); 33 anchorView.setKeepScreenOn(true);
35 } 34 }
36 35
37 @CalledByNative 36 @CalledByNative
38 private void removeBlock(ContentViewCore contentViewCore) { 37 private void removeBlock(ViewAndroidDelegate delegate) {
39 assert mKeepScreenOnView != null; 38 assert mKeepScreenOnView != null;
40 View anchorView = mKeepScreenOnView.get(); 39 View anchorView = mKeepScreenOnView.get();
41 mKeepScreenOnView = null; 40 mKeepScreenOnView = null;
42 if (anchorView == null) return; 41 if (anchorView == null) return;
43 42
44 ViewAndroidDelegate delegate = contentViewCore.getViewAndroidDelegate();
45 anchorView.setKeepScreenOn(false); 43 anchorView.setKeepScreenOn(false);
46 delegate.releaseAnchorView(anchorView); 44 delegate.releaseAnchorView(anchorView);
47 } 45 }
48 } 46 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698