Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
| index b1bafafddc97e1a2999df62c3d5430a6dbe55f7a..3193d1fc0170d7c5ee4fd560360a11eedd7d1436 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
| @@ -186,6 +186,9 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
| private static final String ACTION_CLOSE_TABS = |
| "com.google.android.apps.chrome.ACTION_CLOSE_TABS"; |
| + /** The task id of the activity that tabs were merged into. */ |
| + private static int sMergedInstanceTaskId; |
| + |
| private final ActivityStopMetrics mActivityStopMetrics = new ActivityStopMetrics(); |
| private FindToolbarManager mFindToolbarManager; |
| @@ -1093,6 +1096,14 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
| } |
| @Override |
| + protected boolean isStartedUpCorrectly(Intent intent) { |
| + // If tabs were merged into a different ChromeTabbedActivity instance, then this |
|
gone
2016/10/25 18:33:10
If tabs from this instance?
Theresa
2016/10/25 18:57:40
Done.
|
| + // instance should not be created. This may happen if the process is restarted |
| + // e.g. on upgrade or from about://flags. See crbug.com/657418 |
| + return sMergedInstanceTaskId == 0 || sMergedInstanceTaskId == getTaskId(); |
|
gone
2016/10/25 18:33:10
I'm worried about cases where the user can't get b
Theresa
2016/10/25 18:57:40
Done.
|
| + } |
| + |
| + @Override |
| public void terminateIncognitoSession() { |
| getTabModelSelector().getModel(true).closeAllTabs(); |
| } |
| @@ -1197,6 +1208,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
| MultiWindowUtils.getInstance().getOpenInOtherWindowActivity(this); |
| if (targetActivity == null) return; |
| + // When a second instance is created, the merged instance task id should be cleared. |
| + setMergedInstanceTaskId(0); |
| Intent intent = new Intent(this, targetActivity); |
| MultiWindowUtils.setOpenInOtherWindowIntentExtras(intent, this, targetActivity); |
| @@ -1616,6 +1629,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
| // 4. Ask TabPersistentStore to merge state. |
| RecordUserAction.record("Android.MergeState.Live"); |
| mTabModelSelectorImpl.mergeState(); |
| + |
| + setMergedInstanceTaskId(getTaskId()); |
| } |
| /** |
| @@ -1662,4 +1677,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
| (ToolbarControlContainer) findViewById(R.id.control_container), |
| getTabModelSelector(), getControlContainerHeightResource(), true); |
| } |
| + |
| + private static void setMergedInstanceTaskId(int mergedInstanceTaskId) { |
| + sMergedInstanceTaskId = mergedInstanceTaskId; |
| + } |
| } |