| OLD | NEW |
| 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 } |
| OLD | NEW |