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 52c4b8ee8cb1b3ca2dce5e6d33935db4504241ce..8a9efeca3136ab422f6e01434c407fe0891a35ef 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
@@ -104,6 +104,7 @@ import org.chromium.chrome.browser.tab.TabStateBrowserControlsVisibilityDelegate |
import org.chromium.chrome.browser.tabmodel.ChromeTabCreator; |
import org.chromium.chrome.browser.tabmodel.TabModel; |
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
+import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType; |
import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
import org.chromium.chrome.browser.tabmodel.TabModelSelectorImpl; |
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver; |
@@ -761,6 +762,23 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
return false; |
} |
+ // In cases where the tab model is initialized, attempt to reuse an existing NTP if |
+ // available before attempting to create a new one. |
+ TabModel normalTabModel = getTabModelSelector().getModel(false); |
+ for (int i = 0; i < normalTabModel.getCount(); i++) { |
+ Tab tab = normalTabModel.getTabAt(i); |
+ |
+ if (NewTabPage.isNTPUrl(tab.getUrl()) && !tab.canGoBack() && !tab.canGoForward()) { |
+ if (getActivityTab().equals(tab)) return true; |
+ |
+ normalTabModel.moveTab(tab.getId(), normalTabModel.getCount()); |
+ normalTabModel.setIndex( |
+ TabModelUtils.getTabIndexById(normalTabModel, tab.getId()), |
+ TabSelectionType.FROM_USER); |
+ return true; |
+ } |
+ } |
+ |
getTabCreator(false).launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_EXTERNAL_APP); |
return true; |
} |