| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java
|
| deleted file mode 100644
|
| index f2ac1624c3fd4ead3b3b7cbdca8dd5e169a97170..0000000000000000000000000000000000000000
|
| --- a/chrome/android/java_staging/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java
|
| +++ /dev/null
|
| @@ -1,161 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.chrome.browser;
|
| -
|
| -import android.content.BroadcastReceiver;
|
| -import android.content.Context;
|
| -import android.content.Intent;
|
| -import android.content.IntentFilter;
|
| -import android.os.Handler;
|
| -import android.os.Looper;
|
| -
|
| -import org.chromium.base.ApiCompatibilityUtils;
|
| -import org.chromium.base.ApplicationStatus;
|
| -import org.chromium.base.VisibleForTesting;
|
| -import org.chromium.chrome.browser.invalidation.DelayedInvalidationsController;
|
| -import org.chromium.chrome.browser.omaha.OmahaClient;
|
| -
|
| -import java.util.concurrent.atomic.AtomicBoolean;
|
| -
|
| -/**
|
| - * Monitors the event that indicates the screen is turning on. Used to run actions that shouldn't
|
| - * occur while the phone's screen is off (i.e. when the user expects the phone to be "asleep").
|
| - */
|
| -public class PowerBroadcastReceiver extends BroadcastReceiver {
|
| - private final AtomicBoolean mNeedToRunActions = new AtomicBoolean(true);
|
| - private final AtomicBoolean mIsRegistered = new AtomicBoolean(false);
|
| - private final Handler mHandler = new Handler(Looper.getMainLooper());
|
| -
|
| - private PowerManagerHelper mPowerManagerHelper;
|
| - private ServiceRunnable mServiceRunnable;
|
| -
|
| - /**
|
| - * Stubs out interaction with the PowerManager.
|
| - */
|
| - @VisibleForTesting
|
| - static class PowerManagerHelper {
|
| - /** @return whether the screen is on or not. */
|
| - public boolean isScreenOn(Context context) {
|
| - return ApiCompatibilityUtils.isInteractive(context);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Defines a set of actions to perform when the conditions are correct.
|
| - */
|
| - @VisibleForTesting
|
| - public static class ServiceRunnable implements Runnable {
|
| - /**
|
| - * ANRs are triggered if the app fails to respond to a touch event within 5 seconds. Posting
|
| - * this runnable after 5 seconds lets ChromeTabbedActivity.onResume() perform whatever more
|
| - * important tasks are necessary.
|
| - */
|
| - private static final long DELAY_TO_POST_MS = 5000;
|
| -
|
| - /**
|
| - * @returns how long the runnable should be delayed before it is run.
|
| - */
|
| - public long delayToRun() {
|
| - return DELAY_TO_POST_MS;
|
| - }
|
| -
|
| - /**
|
| - * Unless testing, do not override this function.
|
| - */
|
| - @Override
|
| - public void run() {
|
| - Context context = ApplicationStatus.getApplicationContext();
|
| -
|
| - // Resume communication with the Omaha Update Server.
|
| - if (ChromeVersionInfo.isOfficialBuild()) {
|
| - Intent omahaIntent = OmahaClient.createInitializeIntent(context);
|
| - context.startService(omahaIntent);
|
| - }
|
| -
|
| - DelayedInvalidationsController.getInstance().notifyPendingInvalidations(context);
|
| - }
|
| - }
|
| -
|
| - public PowerBroadcastReceiver() {
|
| - mServiceRunnable = new ServiceRunnable();
|
| - mPowerManagerHelper = new PowerManagerHelper();
|
| - }
|
| -
|
| - @Override
|
| - public void onReceive(Context context, Intent intent) {
|
| - if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)
|
| - && ApplicationStatus.hasVisibleActivities()) {
|
| - runActions(context, false);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * @return Whether or not this is registered with a context.
|
| - */
|
| - @VisibleForTesting
|
| - public boolean isRegistered() {
|
| - return mIsRegistered.get();
|
| - }
|
| -
|
| - /**
|
| - * Unregisters this broadcast receiver so it no longer receives Intents.
|
| - * Also cancels any Runnables waiting to be executed.
|
| - * @param context Context to unregister the receiver from.
|
| - */
|
| - public void unregisterReceiver(Context context) {
|
| - mHandler.removeCallbacks(mServiceRunnable);
|
| - if (mIsRegistered.getAndSet(false)) {
|
| - context.unregisterReceiver(this);
|
| - mNeedToRunActions.set(false);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Registers this broadcast receiver so it receives Intents.
|
| - * This should only be done by the owning Activity.
|
| - * @param context Context to register the receiver with.
|
| - */
|
| - public void registerReceiver(Context context) {
|
| - assert Looper.getMainLooper() == Looper.myLooper();
|
| - if (!mIsRegistered.getAndSet(true)) {
|
| - context.registerReceiver(this, new IntentFilter(Intent.ACTION_SCREEN_ON));
|
| - mNeedToRunActions.set(true);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Posts a task to run the necessary actions. The task is delayed to prevent spin-locking in
|
| - * ChromeTabbedActivity.onResume(): http://b/issue?id=5864891&query=5864891
|
| - * @param onlyIfScreenIsOn Whether or not the screen must be on for the actions to be run.
|
| - */
|
| - public void runActions(Context context, boolean onlyIfScreenIsOn) {
|
| - assert mServiceRunnable != null;
|
| - assert mPowerManagerHelper != null;
|
| - if (!onlyIfScreenIsOn || mPowerManagerHelper.isScreenOn(context)) {
|
| - if (mNeedToRunActions.getAndSet(false)) {
|
| - unregisterReceiver(context);
|
| - mHandler.postDelayed(mServiceRunnable, mServiceRunnable.delayToRun());
|
| - }
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Sets the runnable that contains the actions to do when the screen is on.
|
| - */
|
| - @VisibleForTesting
|
| - void setServiceRunnableForTests(ServiceRunnable runnable) {
|
| - assert mServiceRunnable != null;
|
| - mHandler.removeCallbacks(mServiceRunnable);
|
| - mServiceRunnable = runnable;
|
| - }
|
| -
|
| - /**
|
| - * Sets the PowerManagerHelper that will be used to check if the screen is on.
|
| - */
|
| - @VisibleForTesting
|
| - void setPowerManagerHelperForTests(PowerManagerHelper helper) {
|
| - mPowerManagerHelper = helper;
|
| - }
|
| -}
|
|
|