Commit ae71a50d authored by David Maunder's avatar David Maunder Committed by Commit Bot

Only show close suggestions if there are 3 or more suggestions.

Bug: 1011413
Change-Id: Ief7b8e89b6834dc3c69358c137dfd6544073a630
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1841895
Commit-Queue: David Maunder <davidjm@chromium.org>
Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#703503}
parent bc8968fb
......@@ -19,6 +19,7 @@ import java.util.List;
public class TabSuggestionsOrchestrator implements TabSuggestions, Destroyable {
public static final String TAB_SUGGESTIONS_UMA_PREFIX = "TabSuggestionsOrchestrator";
private static final String TAG = "TabSuggestionsDetailed";
private static final int MIN_CLOSE_SUGGESTIONS_THRESHOLD = 3;
protected TabContextObserver mTabContextObserver;
private final ActivityLifecycleDispatcher mActivityLifecycleDispatcher;
......@@ -55,9 +56,22 @@ public class TabSuggestionsOrchestrator implements TabSuggestions, Destroyable {
private List<TabSuggestion> aggregateResults(List<TabSuggestion> tabSuggestions) {
List<TabSuggestion> aggregated = new LinkedList<>();
for (TabSuggestion tabSuggestion : tabSuggestions) {
switch (tabSuggestion.getAction()) {
case TabSuggestion.TabSuggestionAction.CLOSE:
if (tabSuggestion.getTabsInfo().size() >= MIN_CLOSE_SUGGESTIONS_THRESHOLD) {
aggregated.add(tabSuggestion);
}
break;
case TabSuggestion.TabSuggestionAction.GROUP:
if (!tabSuggestion.getTabsInfo().isEmpty()) {
aggregated.add(tabSuggestion);
}
break;
default:
android.util.Log.e(
TAG, String.format("Unknown action: %d", tabSuggestion.getAction()));
break;
}
}
Collections.shuffle(aggregated);
return aggregated;
......
......@@ -40,7 +40,7 @@ import java.util.List;
@RunWith(LocalRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class TabSuggestionsOrchestratorTest {
private static final int TAB_ID = 0;
private static final int[] TAB_IDS = {0, 1, 2};
@Rule
public TestRule mProcessor = new Features.JUnitProcessor();
......@@ -60,7 +60,7 @@ public class TabSuggestionsOrchestratorTest {
@Mock
private ActivityLifecycleDispatcher mDispatcher;
private static Tab sTab = mockTab(TAB_ID);
private static Tab[] sTabs = {mockTab(TAB_IDS[0]), mockTab(TAB_IDS[1]), mockTab(TAB_IDS[2])};
private static Tab mockTab(int id) {
Tab tab = mock(Tab.class);
......@@ -76,21 +76,25 @@ public class TabSuggestionsOrchestratorTest {
.when(mTabModelFilterProvider)
.addTabModelFilterObserver(any(TabModelObserver.class));
doReturn(mTabModelFilter).when(mTabModelFilterProvider).getCurrentTabModelFilter();
doReturn(1).when(mTabModelFilter).getCount();
doReturn(sTab).when(mTabModelFilter).getTabAt(eq(0));
doReturn(null).when(mTabModelFilter).getRelatedTabList(anyInt());
}
@Test
public void verifyResultsPrefetched() {
doReturn(TAB_IDS.length).when(mTabModelFilter).getCount();
for (int idx = 0; idx < TAB_IDS.length; idx++) {
doReturn(sTabs[idx]).when(mTabModelFilter).getTabAt(eq(idx));
}
TabSuggestionsOrchestrator tabSuggestionsOrchestrator =
new TabSuggestionsOrchestrator(mTabModelSelector, mDispatcher);
tabSuggestionsOrchestrator.mTabContextObserver.mTabModelObserver.didAddTab(null, 0);
List<TabSuggestion> suggestions = tabSuggestionsOrchestrator.getSuggestions(
TabContext.createCurrentContext(mTabModelSelector));
Assert.assertEquals(1, suggestions.size());
Assert.assertEquals(1, suggestions.get(0).getTabsInfo().size());
Assert.assertEquals(TAB_ID, suggestions.get(0).getTabsInfo().get(0).id);
Assert.assertEquals(TAB_IDS.length, suggestions.get(0).getTabsInfo().size());
for (int idx = 0; idx < TAB_IDS.length; idx++) {
Assert.assertEquals(TAB_IDS[idx], suggestions.get(0).getTabsInfo().get(idx).id);
}
}
@Test
......@@ -101,4 +105,16 @@ public class TabSuggestionsOrchestratorTest {
tabSuggestionsOrchestrator.destroy();
verify(mDispatcher, times(1)).unregister(eq(tabSuggestionsOrchestrator));
}
@Test
public void testTabFiltering() {
doReturn(1).when(mTabModelFilter).getCount();
doReturn(sTabs[0]).when(mTabModelFilter).getTabAt(eq(0));
TabSuggestionsOrchestrator tabSuggestionsOrchestrator =
new TabSuggestionsOrchestrator(mTabModelSelector, mDispatcher);
tabSuggestionsOrchestrator.mTabContextObserver.mTabModelObserver.didAddTab(null, 0);
List<TabSuggestion> suggestions = tabSuggestionsOrchestrator.getSuggestions(
TabContext.createCurrentContext(mTabModelSelector));
Assert.assertEquals(0, suggestions.size());
}
}
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