Commit ef8c76c0 authored by Yusuf Ozuysal's avatar Yusuf Ozuysal Committed by Commit Bot

Avoid creating extra tabs for memex experiment

For cases where the experiment is enabled, don't create new child tabs if
there are already tabs with the same urls. This avoid opening
unnecessary tabs.

BUG=814533

Change-Id: I76ed8d6e64049d76bfbd810169fb17ffe870f1ff
Reviewed-on: https://chromium-review.googlesource.com/946894
Commit-Queue: Yusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#540695}
parent 05979495
......@@ -74,4 +74,7 @@ public class UrlConstants {
public static final String MY_ACTIVITY_URL_IN_HISTORY =
"https://myactivity.google.com/myactivity/?utm_source=chrome_h";
public static final String CHROME_MEMEX_URL = "https://chrome-memex.appspot.com/";
public static final String CHROME_MEMEX_DEV_URL = "https://chrome-memex-dev.appspot.com/";
}
......@@ -10,14 +10,17 @@ import android.text.TextUtils;
import org.chromium.base.SysUtils;
import org.chromium.base.TraceEvent;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.ServiceTabLauncher;
import org.chromium.chrome.browser.TabState;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
import org.chromium.chrome.browser.util.IntentUtils;
import org.chromium.components.url_formatter.UrlFormatter;
import org.chromium.content_public.browser.LoadUrlParams;
......@@ -169,6 +172,22 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
// The parent tab was already closed. Do not open child tabs.
if (mTabModel.isClosurePending(parentId)) return false;
// For this experiment, avoid creating extra new tabs, if there is already a tab with the
// same url and use that tab instead.
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_MEMEX) && parent != null) {
String parentUrl = parent.getUrl();
if (parentUrl.startsWith(UrlConstants.CHROME_MEMEX_URL)
|| parentUrl.startsWith(UrlConstants.CHROME_MEMEX_DEV_URL)) {
for (int i = 0; i < mTabModel.getCount(); i++) {
String tabUrl = mTabModel.getTabAt(i).getUrl();
if (url.equals(tabUrl)) {
mTabModel.setIndex(i, TabSelectionType.FROM_USER);
return false;
}
}
}
}
// If parent is in the same tab model, place the new tab next to it.
int position = TabModel.INVALID_TAB_INDEX;
int index = TabModelUtils.getTabIndexById(mTabModel, parentId);
......
......@@ -126,9 +126,6 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
*/
public static final int MINIMUM_LOAD_PROGRESS = 5;
private static final String CHROME_MEMEX_URL = "https://chrome-memex.appspot.com/";
private static final String CHROME_MEMEX_DEV_URL = "https://chrome-memex-dev.appspot.com/";
private final ToolbarLayout mToolbar;
private final ToolbarControlContainer mControlContainer;
......@@ -1024,15 +1021,16 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
TabModel model = mTabModelSelector.getModel(false);
for (int i = 0; i < model.getCount(); i++) {
String url = model.getTabAt(i).getUrl();
if (url.startsWith(CHROME_MEMEX_URL) || url.startsWith(CHROME_MEMEX_DEV_URL)) {
if (url.startsWith(UrlConstants.CHROME_MEMEX_URL)
|| url.startsWith(UrlConstants.CHROME_MEMEX_DEV_URL)) {
model.setIndex(i, TabSelectionType.FROM_USER);
return;
}
}
mTabModelSelector.openNewTab(
new LoadUrlParams(CHROME_MEMEX_URL, PageTransition.AUTO_BOOKMARK),
TabLaunchType.FROM_CHROME_UI, null, false);
new LoadUrlParams(UrlConstants.CHROME_MEMEX_URL, PageTransition.AUTO_BOOKMARK),
TabLaunchType.FROM_EXTERNAL_APP, null, false);
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment