Commit 3bb3e09c authored by spdonghao's avatar spdonghao Committed by Commit Bot

Migrate ChromeFeatureList.setTestFeatures() to @Features annotation

Bug: 1058993
Change-Id: If476998f7f1a4c616c1929aefa4e5698f44dfcee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2095150
Commit-Queue: Hao Dong <spdonghao@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarXi Han <hanxi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#751199}
parent b59b54af
...@@ -27,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -27,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
...@@ -46,19 +47,22 @@ import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData ...@@ -46,19 +47,22 @@ import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData
import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo; import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider; import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField; import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.ui.modelutil.ListObservable; import org.chromium.ui.modelutil.ListObservable;
import java.util.HashMap;
/** /**
* Controller tests for the address accessory sheet. * Controller tests for the address accessory sheet.
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, @Config(manifest = Config.NONE,
shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class}) shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class})
@Features.EnableFeatures({ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY})
public class AddressAccessorySheetControllerTest { public class AddressAccessorySheetControllerTest {
@Rule @Rule
public JniMocker mocker = new JniMocker(); public JniMocker mocker = new JniMocker();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock @Mock
private RecyclerView mMockView; private RecyclerView mMockView;
@Mock @Mock
...@@ -75,7 +79,6 @@ public class AddressAccessorySheetControllerTest { ...@@ -75,7 +79,6 @@ public class AddressAccessorySheetControllerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives); mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives);
AccessorySheetTabCoordinator.IconProvider.setIconForTesting(mock(Drawable.class)); AccessorySheetTabCoordinator.IconProvider.setIconForTesting(mock(Drawable.class));
setAutofillFeature(true);
mCoordinator = new AddressAccessorySheetCoordinator(RuntimeEnvironment.application, null); mCoordinator = new AddressAccessorySheetCoordinator(RuntimeEnvironment.application, null);
assertNotNull(mCoordinator); assertNotNull(mCoordinator);
mSheetDataPieces = mCoordinator.getSheetDataPiecesForTesting(); mSheetDataPieces = mCoordinator.getSheetDataPiecesForTesting();
...@@ -223,10 +226,4 @@ public class AddressAccessorySheetControllerTest { ...@@ -223,10 +226,4 @@ public class AddressAccessorySheetControllerTest {
return RecordHistogram.getHistogramValueCountForTesting( return RecordHistogram.getHistogramValueCountForTesting(
getHistogramForType(UMA_KEYBOARD_ACCESSORY_SHEET_SUGGESTIONS, type), sample); getHistogramForType(UMA_KEYBOARD_ACCESSORY_SHEET_SUGGESTIONS, type), sample);
} }
private void setAutofillFeature(boolean enabled) {
HashMap<String, Boolean> features = new HashMap<>();
features.put(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY, enabled);
ChromeFeatureList.setTestFeatures(features);
}
} }
...@@ -27,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -27,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
...@@ -46,19 +47,21 @@ import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData ...@@ -46,19 +47,21 @@ import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData
import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo; import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider; import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField; import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.ui.modelutil.ListObservable; import org.chromium.ui.modelutil.ListObservable;
import java.util.HashMap;
/** /**
* Controller tests for the credit card accessory sheet. * Controller tests for the credit card accessory sheet.
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, @Config(manifest = Config.NONE,
shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class}) shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class})
@Features.EnableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public class CreditCardAccessorySheetControllerTest { public class CreditCardAccessorySheetControllerTest {
@Rule @Rule
public JniMocker mocker = new JniMocker(); public JniMocker mocker = new JniMocker();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock @Mock
private RecyclerView mMockView; private RecyclerView mMockView;
@Mock @Mock
...@@ -75,7 +78,6 @@ public class CreditCardAccessorySheetControllerTest { ...@@ -75,7 +78,6 @@ public class CreditCardAccessorySheetControllerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives); mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives);
AccessorySheetTabCoordinator.IconProvider.setIconForTesting(mock(Drawable.class)); AccessorySheetTabCoordinator.IconProvider.setIconForTesting(mock(Drawable.class));
setAutofillFeature(true);
mCoordinator = mCoordinator =
new CreditCardAccessorySheetCoordinator(RuntimeEnvironment.application, null); new CreditCardAccessorySheetCoordinator(RuntimeEnvironment.application, null);
assertNotNull(mCoordinator); assertNotNull(mCoordinator);
...@@ -224,10 +226,4 @@ public class CreditCardAccessorySheetControllerTest { ...@@ -224,10 +226,4 @@ public class CreditCardAccessorySheetControllerTest {
return RecordHistogram.getHistogramValueCountForTesting( return RecordHistogram.getHistogramValueCountForTesting(
getHistogramForType(UMA_KEYBOARD_ACCESSORY_SHEET_SUGGESTIONS, type), sample); getHistogramForType(UMA_KEYBOARD_ACCESSORY_SHEET_SUGGESTIONS, type), sample);
} }
private void setAutofillFeature(boolean enabled) {
HashMap<String, Boolean> features = new HashMap<>();
features.put(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY, enabled);
ChromeFeatureList.setTestFeatures(features);
}
} }
...@@ -30,6 +30,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -30,6 +30,7 @@ import androidx.recyclerview.widget.RecyclerView;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
...@@ -52,9 +53,9 @@ import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData ...@@ -52,9 +53,9 @@ import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData
import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo; import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider; import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField; import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.ui.modelutil.ListObservable; import org.chromium.ui.modelutil.ListObservable;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
/** /**
...@@ -63,9 +64,12 @@ import java.util.concurrent.atomic.AtomicReference; ...@@ -63,9 +64,12 @@ import java.util.concurrent.atomic.AtomicReference;
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, @Config(manifest = Config.NONE,
shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class}) shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class})
@Features.EnableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public class PasswordAccessorySheetControllerTest { public class PasswordAccessorySheetControllerTest {
@Rule @Rule
public JniMocker mocker = new JniMocker(); public JniMocker mocker = new JniMocker();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock @Mock
private RecyclerView mMockView; private RecyclerView mMockView;
@Mock @Mock
...@@ -78,7 +82,6 @@ public class PasswordAccessorySheetControllerTest { ...@@ -78,7 +82,6 @@ public class PasswordAccessorySheetControllerTest {
@Before @Before
public void setUp() { public void setUp() {
setAutofillFeature(true);
ShadowRecordHistogram.reset(); ShadowRecordHistogram.reset();
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives); mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives);
...@@ -136,8 +139,8 @@ public class PasswordAccessorySheetControllerTest { ...@@ -136,8 +139,8 @@ public class PasswordAccessorySheetControllerTest {
} }
@Test @Test
@Features.DisableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public void testSplitsTabDataToList() { public void testSplitsTabDataToList() {
setAutofillFeature(false);
final PropertyProvider<AccessorySheetData> testProvider = new PropertyProvider<>(); final PropertyProvider<AccessorySheetData> testProvider = new PropertyProvider<>();
final AccessorySheetData testData = final AccessorySheetData testData =
new AccessorySheetData(AccessoryTabType.PASSWORDS, "Passwords for this site", ""); new AccessorySheetData(AccessoryTabType.PASSWORDS, "Passwords for this site", "");
...@@ -161,8 +164,8 @@ public class PasswordAccessorySheetControllerTest { ...@@ -161,8 +164,8 @@ public class PasswordAccessorySheetControllerTest {
} }
@Test @Test
@Features.EnableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public void testUsesTabTitleOnlyForEmptyListsForModernDesign() { public void testUsesTabTitleOnlyForEmptyListsForModernDesign() {
setAutofillFeature(true);
final PropertyProvider<AccessorySheetData> testProvider = new PropertyProvider<>(); final PropertyProvider<AccessorySheetData> testProvider = new PropertyProvider<>();
final AccessorySheetData testData = final AccessorySheetData testData =
new AccessorySheetData(AccessoryTabType.PASSWORDS, "No passwords for this", ""); new AccessorySheetData(AccessoryTabType.PASSWORDS, "No passwords for this", "");
...@@ -276,10 +279,4 @@ public class PasswordAccessorySheetControllerTest { ...@@ -276,10 +279,4 @@ public class PasswordAccessorySheetControllerTest {
return RecordHistogram.getHistogramValueCountForTesting( return RecordHistogram.getHistogramValueCountForTesting(
getHistogramForType(UMA_KEYBOARD_ACCESSORY_SHEET_SUGGESTIONS, type), sample); getHistogramForType(UMA_KEYBOARD_ACCESSORY_SHEET_SUGGESTIONS, type), sample);
} }
private void setAutofillFeature(boolean enabled) {
HashMap<String, Boolean> features = new HashMap<>();
features.put(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY, enabled);
ChromeFeatureList.setTestFeatures(features);
}
} }
...@@ -18,7 +18,9 @@ import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_componen ...@@ -18,7 +18,9 @@ import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_componen
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
...@@ -29,20 +31,23 @@ import org.chromium.base.task.test.CustomShadowAsyncTask; ...@@ -29,20 +31,23 @@ import org.chromium.base.task.test.CustomShadowAsyncTask;
import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData; import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.ui.modelutil.ListObservable; import org.chromium.ui.modelutil.ListObservable;
import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyObservable.PropertyObserver; import org.chromium.ui.modelutil.PropertyObservable.PropertyObserver;
import java.util.HashMap;
/** /**
* Controller tests for the keyboard accessory tab layout component. * Controller tests for the keyboard accessory tab layout component.
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, @Config(manifest = Config.NONE,
shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class}) shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class})
@Features.EnableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public class KeyboardAccessoryTabLayoutControllerTest { public class KeyboardAccessoryTabLayoutControllerTest {
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock @Mock
private PropertyObserver<PropertyKey> mMockPropertyObserver; private PropertyObserver<PropertyKey> mMockPropertyObserver;
@Mock @Mock
...@@ -63,9 +68,6 @@ public class KeyboardAccessoryTabLayoutControllerTest { ...@@ -63,9 +68,6 @@ public class KeyboardAccessoryTabLayoutControllerTest {
public void setUp() { public void setUp() {
ShadowRecordHistogram.reset(); ShadowRecordHistogram.reset();
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
HashMap<String, Boolean> features = new HashMap<>();
features.put(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY, true);
ChromeFeatureList.setTestFeatures(features);
mCoordinator = new KeyboardAccessoryTabLayoutCoordinator(); mCoordinator = new KeyboardAccessoryTabLayoutCoordinator();
mMediator = mCoordinator.getMediatorForTesting(); mMediator = mCoordinator.getMediatorForTesting();
......
...@@ -12,22 +12,24 @@ import android.text.format.DateUtils; ...@@ -12,22 +12,24 @@ import android.text.format.DateUtils;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.offline_items_collection.OfflineItem.Progress; import org.chromium.components.offline_items_collection.OfflineItem.Progress;
import org.chromium.components.offline_items_collection.OfflineItemProgressUnit; import org.chromium.components.offline_items_collection.OfflineItemProgressUnit;
import java.util.HashMap;
/** /**
* Tests of {@link DownloadUtils}. * Tests of {@link DownloadUtils}.
*/ */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
@Features.DisableFeatures(ChromeFeatureList.DOWNLOAD_FILE_PROVIDER)
public class DownloadUtilsTest { public class DownloadUtilsTest {
private static final String OFFLINE_ITEM_TITLE = "Some Web Page Title.mhtml"; private static final String OFFLINE_ITEM_TITLE = "Some Web Page Title.mhtml";
private static final String OFFLINE_ITEM_DESCRIPTION = "Our web page"; private static final String OFFLINE_ITEM_DESCRIPTION = "Our web page";
...@@ -38,13 +40,12 @@ public class DownloadUtilsTest { ...@@ -38,13 +40,12 @@ public class DownloadUtilsTest {
private static final String MULTIPART_RELATED = "multipart/related"; private static final String MULTIPART_RELATED = "multipart/related";
private static final String ITEM_ID = "42"; private static final String ITEM_ID = "42";
@Rule
public TestRule mFeaturesProcessorRule = new Features.InstrumentationProcessor();
@Before @Before
public void setUp() { public void setUp() {
RecordHistogram.setDisabledForTests(true); RecordHistogram.setDisabledForTests(true);
HashMap<String, Boolean> features = new HashMap<String, Boolean>();
features.put(ChromeFeatureList.DOWNLOAD_FILE_PROVIDER, false);
ChromeFeatureList.setTestFeatures(features);
} }
@After @After
......
...@@ -16,6 +16,7 @@ import static org.mockito.Mockito.verify; ...@@ -16,6 +16,7 @@ import static org.mockito.Mockito.verify;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
...@@ -30,21 +31,23 @@ import org.chromium.base.test.util.Feature; ...@@ -30,21 +31,23 @@ import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler.BackgroundSyncTask; import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler.BackgroundSyncTask;
import org.chromium.chrome.browser.background_task_scheduler.ChromeBackgroundTaskFactory; import org.chromium.chrome.browser.background_task_scheduler.ChromeBackgroundTaskFactory;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.background_task_scheduler.BackgroundTaskScheduler; import org.chromium.components.background_task_scheduler.BackgroundTaskScheduler;
import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
import org.chromium.components.background_task_scheduler.TaskIds; import org.chromium.components.background_task_scheduler.TaskIds;
import org.chromium.components.background_task_scheduler.TaskInfo; import org.chromium.components.background_task_scheduler.TaskInfo;
import java.util.HashMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** Unit tests for BackgroundSyncBackgroundTaskScheduler. */ /** Unit tests for BackgroundSyncBackgroundTaskScheduler. */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE) @Config(manifest = Config.NONE)
@Features.EnableFeatures(ChromeFeatureList.BACKGROUND_TASK_SCHEDULER_FOR_BACKGROUND_SYNC)
public class BackgroundSyncBackgroundTaskSchedulerTest { public class BackgroundSyncBackgroundTaskSchedulerTest {
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Rule @Rule
public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule(); public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule();
@Mock @Mock
private BackgroundTaskScheduler mTaskScheduler; private BackgroundTaskScheduler mTaskScheduler;
@Captor @Captor
...@@ -58,9 +61,6 @@ public class BackgroundSyncBackgroundTaskSchedulerTest { ...@@ -58,9 +61,6 @@ public class BackgroundSyncBackgroundTaskSchedulerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
BackgroundTaskSchedulerFactory.setSchedulerForTesting(mTaskScheduler); BackgroundTaskSchedulerFactory.setSchedulerForTesting(mTaskScheduler);
ChromeBackgroundTaskFactory.setAsDefault(); ChromeBackgroundTaskFactory.setAsDefault();
HashMap<String, Boolean> features = new HashMap<String, Boolean>();
features.put(ChromeFeatureList.BACKGROUND_TASK_SCHEDULER_FOR_BACKGROUND_SYNC, true);
ChromeFeatureList.setTestFeatures(features);
doReturn(true) doReturn(true)
.when(mTaskScheduler) .when(mTaskScheduler)
.schedule(eq(ContextUtils.getApplicationContext()), mTaskInfo.capture()); .schedule(eq(ContextUtils.getApplicationContext()), mTaskInfo.capture());
......
...@@ -19,6 +19,7 @@ import org.junit.After; ...@@ -19,6 +19,7 @@ import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
...@@ -37,6 +38,7 @@ import org.chromium.base.test.util.Feature; ...@@ -37,6 +38,7 @@ import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.JniMocker; import org.chromium.base.test.util.JniMocker;
import org.chromium.chrome.browser.ShadowDeviceConditions; import org.chromium.chrome.browser.ShadowDeviceConditions;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.background_task_scheduler.BackgroundTask; import org.chromium.components.background_task_scheduler.BackgroundTask;
import org.chromium.components.background_task_scheduler.BackgroundTaskScheduler; import org.chromium.components.background_task_scheduler.BackgroundTaskScheduler;
import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
...@@ -46,13 +48,12 @@ import org.chromium.components.background_task_scheduler.TaskInfo; ...@@ -46,13 +48,12 @@ import org.chromium.components.background_task_scheduler.TaskInfo;
import org.chromium.components.background_task_scheduler.TaskParameters; import org.chromium.components.background_task_scheduler.TaskParameters;
import org.chromium.net.ConnectionType; import org.chromium.net.ConnectionType;
import java.util.HashMap;
/** /**
* Unit tests for BackgroundSyncBackgroundTask. * Unit tests for BackgroundSyncBackgroundTask.
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowDeviceConditions.class}) @Config(manifest = Config.NONE, shadows = {ShadowDeviceConditions.class})
@Features.EnableFeatures(ChromeFeatureList.BACKGROUND_TASK_SCHEDULER_FOR_BACKGROUND_SYNC)
public class BackgroundSyncBackgroundTaskTest { public class BackgroundSyncBackgroundTaskTest {
private static final String IS_LOW_END_DEVICE_SWITCH = private static final String IS_LOW_END_DEVICE_SWITCH =
"--" + BaseSwitches.ENABLE_LOW_END_DEVICE_MODE; "--" + BaseSwitches.ENABLE_LOW_END_DEVICE_MODE;
...@@ -60,6 +61,9 @@ public class BackgroundSyncBackgroundTaskTest { ...@@ -60,6 +61,9 @@ public class BackgroundSyncBackgroundTaskTest {
@Rule @Rule
public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule(); public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Rule @Rule
public JniMocker mocker = new JniMocker(); public JniMocker mocker = new JniMocker();
...@@ -82,9 +86,6 @@ public class BackgroundSyncBackgroundTaskTest { ...@@ -82,9 +86,6 @@ public class BackgroundSyncBackgroundTaskTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
BackgroundTaskSchedulerFactory.setSchedulerForTesting(mTaskScheduler); BackgroundTaskSchedulerFactory.setSchedulerForTesting(mTaskScheduler);
HashMap<String, Boolean> features = new HashMap<>();
features.put(ChromeFeatureList.BACKGROUND_TASK_SCHEDULER_FOR_BACKGROUND_SYNC, true);
ChromeFeatureList.setTestFeatures(features);
mTaskExtras = new Bundle(); mTaskExtras = new Bundle();
doReturn(true) doReturn(true)
......
...@@ -18,11 +18,11 @@ import static org.mockito.Mockito.verify; ...@@ -18,11 +18,11 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.support.test.filters.SmallTest; import android.support.test.filters.SmallTest;
import android.util.ArrayMap;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
...@@ -40,6 +40,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; ...@@ -40,6 +40,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.browser.suggestions.SuggestionsNavigationDelegate; import org.chromium.chrome.browser.suggestions.SuggestionsNavigationDelegate;
import org.chromium.chrome.browser.tab.TabImpl; import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.NavigationController; import org.chromium.content_public.browser.NavigationController;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
...@@ -47,17 +48,20 @@ import org.chromium.content_public.browser.WebContentsObserver; ...@@ -47,17 +48,20 @@ import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.ui.mojom.WindowOpenDisposition;
import java.util.Collections; import java.util.Collections;
import java.util.Map;
/** /**
* Unit tests for {@link FeedActionHandler}. * Unit tests for {@link FeedActionHandler}.
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE) @Config(manifest = Config.NONE)
@Features.EnableFeatures(ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS)
public class FeedActionHandlerTest { public class FeedActionHandlerTest {
private static final String TEST_URL = "http://www.one.com/"; private static final String TEST_URL = "http://www.one.com/";
private static final Long OFFLINE_ID = 12345L; private static final Long OFFLINE_ID = 12345L;
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock @Mock
private SuggestionsNavigationDelegate mDelegate; private SuggestionsNavigationDelegate mDelegate;
@Mock @Mock
...@@ -126,10 +130,6 @@ public class FeedActionHandlerTest { ...@@ -126,10 +130,6 @@ public class FeedActionHandlerTest {
}) })
.when(mWebContents) .when(mWebContents)
.addObserver(mWebContentsObserverCaptor.capture()); .addObserver(mWebContentsObserverCaptor.capture());
Map<String, Boolean> featureMap = new ArrayMap<>();
featureMap.put(ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS, true);
ChromeFeatureList.setTestFeatures(featureMap);
} }
private void answerWithGoodParams() { private void answerWithGoodParams() {
...@@ -150,11 +150,6 @@ public class FeedActionHandlerTest { ...@@ -150,11 +150,6 @@ public class FeedActionHandlerTest {
mLoadUrlParamsCallbackCaptor.capture()); mLoadUrlParamsCallbackCaptor.capture());
} }
@After
public void tearDown() {
ChromeFeatureList.setTestFeatures(null);
}
@Test @Test
@SmallTest @SmallTest
public void testOpenUrlOffline() { public void testOpenUrlOffline() {
......
...@@ -15,7 +15,9 @@ import android.os.Bundle; ...@@ -15,7 +15,9 @@ import android.os.Bundle;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController; import org.robolectric.android.controller.ActivityController;
...@@ -26,12 +28,11 @@ import org.chromium.base.test.BaseRobolectricTestRunner; ...@@ -26,12 +28,11 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarConfiguration; import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarConfiguration;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.signin.ChildAccountStatus; import org.chromium.components.signin.ChildAccountStatus;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Tests FirstRunFlowSequencer which contains the core logic of what should be shown during the * Tests FirstRunFlowSequencer which contains the core logic of what should be shown during the
...@@ -39,7 +40,11 @@ import java.util.Map; ...@@ -39,7 +40,11 @@ import java.util.Map;
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowMultiDex.class}) @Config(manifest = Config.NONE, shadows = {ShadowMultiDex.class})
@Features.EnableFeatures(ChromeFeatureList.CHROME_DUET)
public class FirstRunFlowSequencerTest { public class FirstRunFlowSequencerTest {
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
/** Information for Google OS account */ /** Information for Google OS account */
private static final String GOOGLE_ACCOUNT_TYPE = "com.google"; private static final String GOOGLE_ACCOUNT_TYPE = "com.google";
private static final String DEFAULT_ACCOUNT = "test@gmail.com"; private static final String DEFAULT_ACCOUNT = "test@gmail.com";
...@@ -137,7 +142,6 @@ public class FirstRunFlowSequencerTest { ...@@ -137,7 +142,6 @@ public class FirstRunFlowSequencerTest {
public void setUp() { public void setUp() {
mActivityController = Robolectric.buildActivity(Activity.class); mActivityController = Robolectric.buildActivity(Activity.class);
mSequencer = new TestFirstRunFlowSequencer(mActivityController.setup().get()); mSequencer = new TestFirstRunFlowSequencer(mActivityController.setup().get());
setupFeatureList();
} }
@After @After
...@@ -145,15 +149,6 @@ public class FirstRunFlowSequencerTest { ...@@ -145,15 +149,6 @@ public class FirstRunFlowSequencerTest {
mActivityController.pause().stop().destroy(); mActivityController.pause().stop().destroy();
} }
// We need to initialize ChromeFeatureList here, otherwise test will crash/assert during
// FirstRunFlowSequencer::onNativeInitialized.
// TODO(crbug.com/1021705): Remove this method after duet fully launched.
private void setupFeatureList() {
Map<String, Boolean> featureList = new HashMap<>();
featureList.put(ChromeFeatureList.CHROME_DUET, true);
ChromeFeatureList.setTestFeatures(featureList);
}
@Test @Test
@Feature({"FirstRun"}) @Feature({"FirstRun"})
public void testFirstRunComplete() { public void testFirstRunComplete() {
......
...@@ -27,7 +27,9 @@ import android.os.Build; ...@@ -27,7 +27,9 @@ import android.os.Build;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
...@@ -49,6 +51,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; ...@@ -49,6 +51,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.init.BrowserParts; import org.chromium.chrome.browser.init.BrowserParts;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer; import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.background_task_scheduler.BackgroundTaskScheduler; import org.chromium.components.background_task_scheduler.BackgroundTaskScheduler;
import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
import org.chromium.components.background_task_scheduler.TaskIds; import org.chromium.components.background_task_scheduler.TaskIds;
...@@ -59,12 +62,12 @@ import org.chromium.net.ConnectionType; ...@@ -59,12 +62,12 @@ import org.chromium.net.ConnectionType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** Unit tests for {@link OfflineNotificationBackgroundTask}. */ /** Unit tests for {@link OfflineNotificationBackgroundTask}. */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowMultiDex.class, ShadowDeviceConditions.class}) @Config(manifest = Config.NONE, shadows = {ShadowMultiDex.class, ShadowDeviceConditions.class})
@Features.DisableFeatures(ChromeFeatureList.PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION)
public class OfflineNotificationBackgroundTaskUnitTest { public class OfflineNotificationBackgroundTaskUnitTest {
/** /**
* Fake of BackgroundTaskScheduler system service. * Fake of BackgroundTaskScheduler system service.
...@@ -97,7 +100,8 @@ public class OfflineNotificationBackgroundTaskUnitTest { ...@@ -97,7 +100,8 @@ public class OfflineNotificationBackgroundTaskUnitTest {
mTaskInfos = new HashMap<>(); mTaskInfos = new HashMap<>();
} }
} }
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Spy @Spy
private OfflineNotificationBackgroundTask mOfflineNotificationBackgroundTask = private OfflineNotificationBackgroundTask mOfflineNotificationBackgroundTask =
new OfflineNotificationBackgroundTask(); new OfflineNotificationBackgroundTask();
...@@ -118,10 +122,6 @@ public class OfflineNotificationBackgroundTaskUnitTest { ...@@ -118,10 +122,6 @@ public class OfflineNotificationBackgroundTaskUnitTest {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Before @Before
public void setUp() { public void setUp() {
Map<String, Boolean> features = new HashMap<>();
features.put(ChromeFeatureList.PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION, false);
ChromeFeatureList.setTestFeatures(features);
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mOfflineNotificationBackgroundTask.setDelegate(new ChromeNativeBackgroundTaskDelegate()); mOfflineNotificationBackgroundTask.setDelegate(new ChromeNativeBackgroundTaskDelegate());
// Set up the context. // Set up the context.
......
...@@ -19,6 +19,7 @@ import org.junit.Assert; ...@@ -19,6 +19,7 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentMatcher; import org.mockito.ArgumentMatcher;
import org.mockito.InOrder; import org.mockito.InOrder;
...@@ -40,14 +41,13 @@ import org.chromium.chrome.browser.omaha.metrics.UpdateProtos.Tracking; ...@@ -40,14 +41,13 @@ import org.chromium.chrome.browser.omaha.metrics.UpdateProtos.Tracking;
import org.chromium.chrome.browser.omaha.metrics.UpdateProtos.Tracking.Source; import org.chromium.chrome.browser.omaha.metrics.UpdateProtos.Tracking.Source;
import org.chromium.chrome.browser.omaha.metrics.UpdateProtos.Tracking.Type; import org.chromium.chrome.browser.omaha.metrics.UpdateProtos.Tracking.Type;
import org.chromium.chrome.browser.omaha.metrics.UpdateSuccessMetrics.UpdateType; import org.chromium.chrome.browser.omaha.metrics.UpdateSuccessMetrics.UpdateType;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.version_info.VersionConstants; import org.chromium.components.version_info.VersionConstants;
import java.util.HashMap;
import java.util.Map;
/** Tests the API surface of UpdateSuccessMetrics. */ /** Tests the API surface of UpdateSuccessMetrics. */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class}) @Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class})
@Features.DisableFeatures(ChromeFeatureList.INLINE_UPDATE_FLOW)
public class UpdateSuccessMetricsTest { public class UpdateSuccessMetricsTest {
private static final int FAILED = 0; private static final int FAILED = 0;
private static final int SUCCESS = 1; private static final int SUCCESS = 1;
...@@ -63,13 +63,11 @@ public class UpdateSuccessMetricsTest { ...@@ -63,13 +63,11 @@ public class UpdateSuccessMetricsTest {
@Rule @Rule
public MockitoRule mMockitoRule = MockitoJUnit.rule(); public MockitoRule mMockitoRule = MockitoJUnit.rule();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Before @Before
public void setUp() { public void setUp() {
Map<String, Boolean> featureList = new HashMap<>();
// The value we use does not matter. ChromeFeatureList just needs to be initialized.
featureList.put(ChromeFeatureList.INLINE_UPDATE_FLOW, false);
ChromeFeatureList.setTestFeatures(featureList);
mMetrics = new UpdateSuccessMetrics(mProvider); mMetrics = new UpdateSuccessMetrics(mProvider);
} }
......
...@@ -20,6 +20,7 @@ import android.support.test.filters.SmallTest; ...@@ -20,6 +20,7 @@ import android.support.test.filters.SmallTest;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
...@@ -34,27 +35,29 @@ import org.chromium.base.metrics.test.DisableHistogramsRule; ...@@ -34,27 +35,29 @@ import org.chromium.base.metrics.test.DisableHistogramsRule;
import org.chromium.base.metrics.test.ShadowRecordHistogram; import org.chromium.base.metrics.test.ShadowRecordHistogram;
import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.ChromeVersionInfo; import org.chromium.chrome.browser.ChromeVersionInfo;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.search_engines.TemplateUrl; import org.chromium.components.search_engines.TemplateUrl;
import org.chromium.components.search_engines.TemplateUrlService; import org.chromium.components.search_engines.TemplateUrlService;
import java.util.HashMap;
/** /**
* Unit tests for {@link SearchEngineChoiceNotification}. * Unit tests for {@link SearchEngineChoiceNotification}.
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class}) @Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class})
@Features.EnableFeatures({})
public final class SearchEngineChoiceNotificationTest { public final class SearchEngineChoiceNotificationTest {
private static final String TEST_INITIAL_ENGINE = "google.com"; private static final String TEST_INITIAL_ENGINE = "google.com";
private static final String TEST_ALTERNATIVE_ENGINE = "duckduckgo.com"; private static final String TEST_ALTERNATIVE_ENGINE = "duckduckgo.com";
@Rule @Rule
public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule(); public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Spy @Spy
private Context mContext = RuntimeEnvironment.application.getApplicationContext(); private Context mContext = RuntimeEnvironment.application.getApplicationContext();
@Mock @Mock
...@@ -73,7 +76,6 @@ public final class SearchEngineChoiceNotificationTest { ...@@ -73,7 +76,6 @@ public final class SearchEngineChoiceNotificationTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
ContextUtils.initApplicationContextForTests(mContext); ContextUtils.initApplicationContextForTests(mContext);
ChromeFeatureList.setTestFeatures(new HashMap<String, Boolean>());
ShadowRecordHistogram.reset(); ShadowRecordHistogram.reset();
// Sets up appropriate responses from Template URL service. // Sets up appropriate responses from Template URL service.
......
...@@ -10,12 +10,12 @@ import static org.mockito.Mockito.doReturn; ...@@ -10,12 +10,12 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import android.util.ArrayMap;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
...@@ -28,15 +28,15 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; ...@@ -28,15 +28,15 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import java.util.Map;
/** /**
* Unit tests for ChromeSurveyController.java. * Unit tests for ChromeSurveyController.java.
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE) @Config(manifest = Config.NONE)
@Features.EnableFeatures(ChromeFeatureList.HORIZONTAL_TAB_SWITCHER_ANDROID)
public class ChromeSurveyControllerTest { public class ChromeSurveyControllerTest {
private static final String STUDY_NAME = "HorizontalTabSwitcherStudyName"; private static final String STUDY_NAME = "HorizontalTabSwitcherStudyName";
private static final String GROUP_NAME = "HorizontalTabSwitcherGroupName"; private static final String GROUP_NAME = "HorizontalTabSwitcherGroupName";
...@@ -45,6 +45,9 @@ public class ChromeSurveyControllerTest { ...@@ -45,6 +45,9 @@ public class ChromeSurveyControllerTest {
private RiggedSurveyController mRiggedController; private RiggedSurveyController mRiggedController;
private SharedPreferencesManager mSharedPreferences; private SharedPreferencesManager mSharedPreferences;
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock @Mock
Tab mTab; Tab mTab;
...@@ -63,9 +66,6 @@ public class ChromeSurveyControllerTest { ...@@ -63,9 +66,6 @@ public class ChromeSurveyControllerTest {
mTestController.setTabModelSelector(mSelector); mTestController.setTabModelSelector(mSelector);
mSharedPreferences = SharedPreferencesManager.getInstance(); mSharedPreferences = SharedPreferencesManager.getInstance();
Assert.assertNull("Tab should be null", mTestController.getLastTabInfobarShown()); Assert.assertNull("Tab should be null", mTestController.getLastTabInfobarShown());
Map<String, Boolean> featureMap = new ArrayMap<>();
featureMap.put(ChromeFeatureList.HORIZONTAL_TAB_SWITCHER_ANDROID, true);
ChromeFeatureList.setTestFeatures(featureMap);
} }
@After @After
......
...@@ -17,30 +17,34 @@ import android.content.Context; ...@@ -17,30 +17,34 @@ import android.content.Context;
import android.support.test.filters.SmallTest; import android.support.test.filters.SmallTest;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
/** /**
* Tests for {@link Tab}. * Tests for {@link Tab}.
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE) @Config(manifest = Config.NONE)
@Features.EnableFeatures("ShoppingAssist")
public class TabUnitTest { public class TabUnitTest {
private static final int TAB1_ID = 456; private static final int TAB1_ID = 456;
private static final int TAB2_ID = 789; private static final int TAB2_ID = 789;
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock @Mock
private WindowAndroid mWindowAndroid; private WindowAndroid mWindowAndroid;
@Mock @Mock
...@@ -68,11 +72,6 @@ public class TabUnitTest { ...@@ -68,11 +72,6 @@ public class TabUnitTest {
doReturn(mContext).when(mWeakReferenceContext).get(); doReturn(mContext).when(mWeakReferenceContext).get();
doReturn(mContext).when(mContext).getApplicationContext(); doReturn(mContext).when(mContext).getApplicationContext();
// Bypass feature checks.
Map<String, Boolean> features = new HashMap<>();
features.put("ShoppingAssist", true);
ChromeFeatureList.setTestFeatures(features);
mTab = new TabImpl(TAB1_ID, null, false, null); mTab = new TabImpl(TAB1_ID, null, false, null);
mTab.addObserver(mObserver); mTab.addObserver(mObserver);
} }
......
...@@ -50,9 +50,18 @@ public abstract class ChromeFeatureList { ...@@ -50,9 +50,18 @@ public abstract class ChromeFeatureList {
/** /**
* @see FeatureList#setTestFeatures * @see FeatureList#setTestFeatures
* Sets the feature flags to use in JUnit tests, since native calls are not available there.
* Do not use directly, prefer using the {@link Features} annotation.
*
* @see Features
* @see Features.Processor
*
* @deprecated
* https://crbug.com/1058993
*/ */
// TODO(crbug.com/1060097): Migrate callers to the FeatureList equivalent function. // TODO(crbug.com/1060097): Migrate callers to the FeatureList equivalent function.
@VisibleForTesting @VisibleForTesting
@Deprecated
public static void setTestFeatures(Map<String, Boolean> features) { public static void setTestFeatures(Map<String, Boolean> features) {
FeatureList.setTestFeatures(features); FeatureList.setTestFeatures(features);
} }
......
...@@ -18,8 +18,6 @@ import org.chromium.chrome.test.util.browser.Features; ...@@ -18,8 +18,6 @@ import org.chromium.chrome.test.util.browser.Features;
import org.chromium.chrome.test.util.browser.Features.DisableFeatures; import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
import org.chromium.chrome.test.util.browser.Features.EnableFeatures; import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
import java.util.Collections;
/** /**
* Tests the behavior of {@link ChromeFeatureList} in Robolectric unit tests when the rule * Tests the behavior of {@link ChromeFeatureList} in Robolectric unit tests when the rule
* Features.JUnitProcessor is present. * Features.JUnitProcessor is present.
...@@ -28,7 +26,7 @@ import java.util.Collections; ...@@ -28,7 +26,7 @@ import java.util.Collections;
@Config(manifest = Config.NONE) @Config(manifest = Config.NONE)
public class ChromeFeatureListWithProcessorUnitTest { public class ChromeFeatureListWithProcessorUnitTest {
@Rule @Rule
public TestRule mProcessor = new Features.JUnitProcessor(); public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
/** /**
* In unit tests, all flags checked must have their value specified. * In unit tests, all flags checked must have their value specified.
...@@ -69,11 +67,9 @@ public class ChromeFeatureListWithProcessorUnitTest { ...@@ -69,11 +67,9 @@ public class ChromeFeatureListWithProcessorUnitTest {
* {@link ChromeFeatureList#setTestFeatures(java.util.Map)}. * {@link ChromeFeatureList#setTestFeatures(java.util.Map)}.
*/ */
@Test @Test
@EnableFeatures(ChromeFeatureList.TEST_DEFAULT_DISABLED)
public void testSetTestFeaturesEnabled_returnsEnabled() { public void testSetTestFeaturesEnabled_returnsEnabled() {
ChromeFeatureList.setTestFeatures(
Collections.singletonMap(ChromeFeatureList.TEST_DEFAULT_DISABLED, true));
assertTrue(ChromeFeatureList.isEnabled(ChromeFeatureList.TEST_DEFAULT_DISABLED)); assertTrue(ChromeFeatureList.isEnabled(ChromeFeatureList.TEST_DEFAULT_DISABLED));
ChromeFeatureList.setTestFeatures(null);
} }
/** /**
...@@ -81,10 +77,8 @@ public class ChromeFeatureListWithProcessorUnitTest { ...@@ -81,10 +77,8 @@ public class ChromeFeatureListWithProcessorUnitTest {
* {@link ChromeFeatureList#setTestFeatures(java.util.Map)}. * {@link ChromeFeatureList#setTestFeatures(java.util.Map)}.
*/ */
@Test @Test
@DisableFeatures(ChromeFeatureList.TEST_DEFAULT_ENABLED)
public void testSetTestFeaturesDisabled_returnsDisabled() { public void testSetTestFeaturesDisabled_returnsDisabled() {
ChromeFeatureList.setTestFeatures(
Collections.singletonMap(ChromeFeatureList.TEST_DEFAULT_ENABLED, false));
assertFalse(ChromeFeatureList.isEnabled(ChromeFeatureList.TEST_DEFAULT_ENABLED)); assertFalse(ChromeFeatureList.isEnabled(ChromeFeatureList.TEST_DEFAULT_ENABLED));
ChromeFeatureList.setTestFeatures(null);
} }
} }
...@@ -28,13 +28,13 @@ import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.SH ...@@ -28,13 +28,13 @@ import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.SH
import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.VISIBLE; import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.VISIBLE;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.support.test.espresso.core.deps.guava.collect.ImmutableMap;
import androidx.annotation.Px; import androidx.annotation.Px;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
...@@ -55,6 +55,7 @@ import org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.Credentia ...@@ -55,6 +55,7 @@ import org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.Credentia
import org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.ItemType; import org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.ItemType;
import org.chromium.chrome.browser.touch_to_fill.data.Credential; import org.chromium.chrome.browser.touch_to_fill.data.Credential;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController; import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.url_formatter.SchemeDisplay; import org.chromium.components.url_formatter.SchemeDisplay;
import org.chromium.components.url_formatter.UrlFormatter; import org.chromium.components.url_formatter.UrlFormatter;
import org.chromium.components.url_formatter.UrlFormatterJni; import org.chromium.components.url_formatter.UrlFormatterJni;
...@@ -71,6 +72,7 @@ import java.util.Collections; ...@@ -71,6 +72,7 @@ import java.util.Collections;
*/ */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class}) @Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class})
@Features.EnableFeatures(ChromeFeatureList.TOUCH_TO_FILL_ANDROID)
public class TouchToFillControllerTest { public class TouchToFillControllerTest {
private static final String TEST_URL = "https://www.example.xyz"; private static final String TEST_URL = "https://www.example.xyz";
private static final String TEST_SUBDOMAIN_URL = "https://subdomain.example.xyz"; private static final String TEST_SUBDOMAIN_URL = "https://subdomain.example.xyz";
...@@ -84,6 +86,8 @@ public class TouchToFillControllerTest { ...@@ -84,6 +86,8 @@ public class TouchToFillControllerTest {
@Rule @Rule
public JniMocker mJniMocker = new JniMocker(); public JniMocker mJniMocker = new JniMocker();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock @Mock
private UrlFormatter.Natives mUrlFormatterJniMock; private UrlFormatter.Natives mUrlFormatterJniMock;
@Mock @Mock
...@@ -105,8 +109,6 @@ public class TouchToFillControllerTest { ...@@ -105,8 +109,6 @@ public class TouchToFillControllerTest {
@Before @Before
public void setUp() { public void setUp() {
ShadowRecordHistogram.reset(); ShadowRecordHistogram.reset();
ChromeFeatureList.setTestFeatures(
ImmutableMap.of(ChromeFeatureList.TOUCH_TO_FILL_ANDROID, true));
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mJniMocker.mock(UrlFormatterJni.TEST_HOOKS, mUrlFormatterJniMock); mJniMocker.mock(UrlFormatterJni.TEST_HOOKS, mUrlFormatterJniMock);
mJniMocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogram); mJniMocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogram);
......
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