Index: chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java |
index 3653838554ba3620d69de5f5735247af2e725473..7339ca2944a9973305bbc970ec9fe820bf100ed9 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java |
@@ -63,6 +63,11 @@ public abstract class AsyncInitializationActivity extends AppCompatActivity impl |
private long mLastUserInteractionTime; |
private boolean mIsTablet; |
private boolean mHadWarmStart; |
+ private boolean mIsWarmOnResume; |
+ |
+ // Stores whether the activity was not resumed yet. Always false after the |
+ // first |onResume| call. |
+ private boolean mFirstResumePending = true; |
public AsyncInitializationActivity() { |
mHandler = new Handler(); |
@@ -294,6 +299,8 @@ public abstract class AsyncInitializationActivity extends AppCompatActivity impl |
super.onResume(); |
mNativeInitializationController.onResume(); |
if (mLaunchBehindWorkaround != null) mLaunchBehindWorkaround.onResume(); |
+ mIsWarmOnResume = !mFirstResumePending || hadWarmStart(); |
+ mFirstResumePending = false; |
} |
@Override |
@@ -408,6 +415,18 @@ public abstract class AsyncInitializationActivity extends AppCompatActivity impl |
return mHadWarmStart; |
} |
+ /** |
+ * This returns true if the activity was started warm (native library loaded and initialized) or |
+ * if a cold starts have been completed by the time onResume is/will be called. |
+ * This is useful to distinguish between the case where an already running instance of Chrome is |
+ * being brought back to the foreground from the case where Chrome is started, in order to avoid |
+ * contention on browser startup |
+ * @return Whether the activity is warm in onResume. |
+ */ |
+ public boolean isWarmOnResume() { |
+ return mIsWarmOnResume; |
+ } |
+ |
@Override |
public void onUserInteraction() { |
mLastUserInteractionTime = SystemClock.elapsedRealtime(); |