Index: chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeLifetimeController.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeLifetimeController.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeLifetimeController.java |
deleted file mode 100644 |
index 0cc4c8f0b9def74e201515f89fb091bba5a27e0c..0000000000000000000000000000000000000000 |
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeLifetimeController.java |
+++ /dev/null |
@@ -1,120 +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.app.Activity; |
-import android.app.AlarmManager; |
-import android.app.PendingIntent; |
-import android.content.Context; |
-import android.content.Intent; |
-import android.os.Handler; |
-import android.os.Looper; |
-import android.os.Process; |
-import android.util.Log; |
- |
-import org.chromium.base.ActivityState; |
-import org.chromium.base.ApplicationStatus; |
- |
-import java.lang.ref.WeakReference; |
- |
-/** |
- * Handles killing and potentially restarting Chrome's main Browser process. Note that this class |
- * relies on main Chrome activities to properly call {@link Activity#finish()} on themselves so that |
- * it will be notified that all {@link Activity}s under this {@link Application} have been |
- * destroyed. |
- */ |
-class ChromeLifetimeController implements ApplicationLifetime.Observer, |
- ApplicationStatus.ActivityStateListener { |
- private static final String TAG = "ChromeLifetimeController"; |
- |
- // The amount of time to wait for Chrome to destroy all the activities. |
- private static final long WATCHDOG_DELAY = 1000; |
- |
- private final Context mContext; |
- private boolean mRestartChromeOnDestroy; |
- private int mRemainingActivitiesCount = 0; |
- private final Handler mHandler; |
- |
- /** |
- * Creates a {@link ChromeLifetimeController} instance. |
- * @param context A {@link Context} instance. The application context will be saved from this |
- * one. |
- */ |
- public ChromeLifetimeController(Context context) { |
- mContext = context.getApplicationContext(); |
- ApplicationLifetime.addObserver(this); |
- mHandler = new Handler(Looper.getMainLooper()); |
- } |
- |
- @Override |
- public void onTerminate(boolean restart) { |
- mRestartChromeOnDestroy = restart; |
- |
- // We've called terminate twice, just wait for the first call to take effect. |
- if (mRemainingActivitiesCount > 0) { |
- Log.w(TAG, "onTerminate called twice"); |
- return; |
- } |
- |
- for (WeakReference<Activity> weakActivity : ApplicationStatus.getRunningActivities()) { |
- Activity activity = weakActivity.get(); |
- if (activity != null) { |
- ApplicationStatus.registerStateListenerForActivity(this, activity); |
- mRemainingActivitiesCount++; |
- activity.finish(); |
- } |
- } |
- |
- // Post a watchdog -- if Android is taking a long time to call onDestroy, kill the process. |
- mHandler.postDelayed(new Runnable() { |
- @Override |
- public void run() { |
- if (mRemainingActivitiesCount > 0) { |
- destroyProcess(); |
- } |
- } |
- }, WATCHDOG_DELAY); |
- } |
- |
- |
- @Override |
- public void onActivityStateChange(Activity activity, int newState) { |
- assert mRemainingActivitiesCount > 0; |
- if (newState == ActivityState.DESTROYED) { |
- mRemainingActivitiesCount--; |
- if (mRemainingActivitiesCount == 0) { |
- destroyProcess(); |
- } |
- } |
- |
- } |
- |
- private void destroyProcess() { |
- mHandler.post(new Runnable() { |
- @Override |
- public void run() { |
- if (mRestartChromeOnDestroy) scheduleRestart(mContext); |
- |
- Log.w(TAG, "Forcefully killing process..."); |
- Process.killProcess(Process.myPid()); |
- |
- mRestartChromeOnDestroy = false; |
- } |
- }); |
- } |
- |
- private static void scheduleRestart(Context context) { |
- Intent intent = new Intent(); |
- intent.setPackage(context.getPackageName()); |
- intent.setAction(Intent.ACTION_MAIN); |
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
- PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, |
- PendingIntent.FLAG_ONE_SHOT); |
- if (pendingIntent != null) { |
- AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); |
- am.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, pendingIntent); |
- } |
- } |
-} |