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

Unified Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeLifetimeController.java

Issue 1160233002: Fix an issue where Chrome doesn't always restart from chrome://flags. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
index 7a060c88f41684aa8eadba71b2ac7b96f0e8413f..0cc4c8f0b9def74e201515f89fb091bba5a27e0c 100644
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeLifetimeController.java
+++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeLifetimeController.java
@@ -29,9 +29,13 @@ 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.
@@ -41,6 +45,7 @@ class ChromeLifetimeController implements ApplicationLifetime.Observer,
public ChromeLifetimeController(Context context) {
mContext = context.getApplicationContext();
ApplicationLifetime.addObserver(this);
+ mHandler = new Handler(Looper.getMainLooper());
}
@Override
@@ -61,6 +66,16 @@ class ChromeLifetimeController implements ApplicationLifetime.Observer,
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);
}
@@ -77,8 +92,7 @@ class ChromeLifetimeController implements ApplicationLifetime.Observer,
}
private void destroyProcess() {
- Handler handler = new Handler(Looper.getMainLooper());
- handler.post(new Runnable() {
+ mHandler.post(new Runnable() {
@Override
public void run() {
if (mRestartChromeOnDestroy) scheduleRestart(mContext);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698