Commit 7db862c2 authored by David Maunder's avatar David Maunder Committed by Commit Bot

Fix TabsInfo is null bug

TabsInfo can be null. It is best to transform
a null TabsInfo list to an empty list in the
constructor to avoid the consumer needing
to do null checks.

Bug: 1061991
Change-Id: If6345ed3bed720b783415b62a86bb8361ec5c2b0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2128566
Commit-Queue: David Maunder <davidjm@chromium.org>
Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#756850}
parent 45cf074b
...@@ -35,7 +35,8 @@ public final class TabSuggestion { ...@@ -35,7 +35,8 @@ public final class TabSuggestion {
public TabSuggestion(List<TabContext.TabInfo> tabsInfo, @TabSuggestionAction int action, public TabSuggestion(List<TabContext.TabInfo> tabsInfo, @TabSuggestionAction int action,
String providerName, Integer tabGroupId) { String providerName, Integer tabGroupId) {
mTabsInfo = Collections.unmodifiableList(tabsInfo); mTabsInfo =
tabsInfo == null ? Collections.emptyList() : Collections.unmodifiableList(tabsInfo);
mAction = action; mAction = action;
mProviderName = providerName; mProviderName = providerName;
mTabGroupId = tabGroupId; mTabGroupId = tabGroupId;
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.tasks.tab_management.suggestions;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.testing.local.LocalRobolectricTestRunner;
import java.util.Arrays;
/**
* Tests functionality related to TabContext
*/
@RunWith(LocalRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class TabSuggestionTest {
private static final @TabSuggestion.TabSuggestionAction int TAB_SUGGESTION_ACTION =
TabSuggestion.TabSuggestionAction.CLOSE;
private static final String PROVIDER_NAME = "providerName";
private static final int TAB_GROUP_ID = 1;
private static final int ID = 1;
private static final String TITLE = "title";
private static final String TAB_URL = "url";
private static final String ORIGINAL_URL = "original_url";
private static final String REFERRER_URL = "referrer_url";
private static final long TIMESTAMP = 4352345L;
private static final String VISIBLE_URL = "visible_url";
private static final TabContext.TabInfo TAB_INFO = new TabContext.TabInfo(
ID, TITLE, TAB_URL, ORIGINAL_URL, REFERRER_URL, TIMESTAMP, VISIBLE_URL);
@Rule
public TestRule mProcessor = new Features.JUnitProcessor();
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testNonEmptySuggestions() {
TabSuggestion tabSuggestion = new TabSuggestion(
Arrays.asList(TAB_INFO), TAB_SUGGESTION_ACTION, PROVIDER_NAME, TAB_GROUP_ID);
Assert.assertNotNull(tabSuggestion.getTabsInfo());
Assert.assertEquals(tabSuggestion.getTabsInfo().size(), 1);
Assert.assertEquals(tabSuggestion.getTabsInfo().get(0), TAB_INFO);
}
@Test
public void testNullSuggestions() {
TabSuggestion tabSuggestion =
new TabSuggestion(null, TAB_SUGGESTION_ACTION, PROVIDER_NAME, TAB_GROUP_ID);
Assert.assertNotNull(tabSuggestion.getTabsInfo());
Assert.assertEquals(tabSuggestion.getTabsInfo().size(), 0);
}
}
...@@ -77,6 +77,7 @@ tab_management_junit_java_sources = [ ...@@ -77,6 +77,7 @@ tab_management_junit_java_sources = [
"//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/StaleTabSuggestionProviderTest.java", "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/StaleTabSuggestionProviderTest.java",
"//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextObserverTest.java", "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextObserverTest.java",
"//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextTest.java", "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextTest.java",
"//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionTest.java",
"//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsClientFetcherTest.java", "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsClientFetcherTest.java",
"//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsOrchestratorTest.java", "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsOrchestratorTest.java",
] ]
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