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;
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.Mock;
import org.mockito.MockitoAnnotations;
......@@ -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.PropertyProvider;
import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.ui.modelutil.ListObservable;
import java.util.HashMap;
/**
* Controller tests for the address accessory sheet.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE,
shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class})
@Features.EnableFeatures({ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY})
public class AddressAccessorySheetControllerTest {
@Rule
public JniMocker mocker = new JniMocker();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock
private RecyclerView mMockView;
@Mock
......@@ -75,7 +79,6 @@ public class AddressAccessorySheetControllerTest {
MockitoAnnotations.initMocks(this);
mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives);
AccessorySheetTabCoordinator.IconProvider.setIconForTesting(mock(Drawable.class));
setAutofillFeature(true);
mCoordinator = new AddressAccessorySheetCoordinator(RuntimeEnvironment.application, null);
assertNotNull(mCoordinator);
mSheetDataPieces = mCoordinator.getSheetDataPiecesForTesting();
......@@ -223,10 +226,4 @@ public class AddressAccessorySheetControllerTest {
return RecordHistogram.getHistogramValueCountForTesting(
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;
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.Mock;
import org.mockito.MockitoAnnotations;
......@@ -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.PropertyProvider;
import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.ui.modelutil.ListObservable;
import java.util.HashMap;
/**
* Controller tests for the credit card accessory sheet.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE,
shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class})
@Features.EnableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public class CreditCardAccessorySheetControllerTest {
@Rule
public JniMocker mocker = new JniMocker();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock
private RecyclerView mMockView;
@Mock
......@@ -75,7 +78,6 @@ public class CreditCardAccessorySheetControllerTest {
MockitoAnnotations.initMocks(this);
mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives);
AccessorySheetTabCoordinator.IconProvider.setIconForTesting(mock(Drawable.class));
setAutofillFeature(true);
mCoordinator =
new CreditCardAccessorySheetCoordinator(RuntimeEnvironment.application, null);
assertNotNull(mCoordinator);
......@@ -224,10 +226,4 @@ public class CreditCardAccessorySheetControllerTest {
return RecordHistogram.getHistogramValueCountForTesting(
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;
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.Mock;
import org.mockito.MockitoAnnotations;
......@@ -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.PropertyProvider;
import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.ui.modelutil.ListObservable;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicReference;
/**
......@@ -63,9 +64,12 @@ import java.util.concurrent.atomic.AtomicReference;
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE,
shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class})
@Features.EnableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public class PasswordAccessorySheetControllerTest {
@Rule
public JniMocker mocker = new JniMocker();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock
private RecyclerView mMockView;
@Mock
......@@ -78,7 +82,6 @@ public class PasswordAccessorySheetControllerTest {
@Before
public void setUp() {
setAutofillFeature(true);
ShadowRecordHistogram.reset();
MockitoAnnotations.initMocks(this);
mocker.mock(RecordHistogramJni.TEST_HOOKS, mMockRecordHistogramNatives);
......@@ -136,8 +139,8 @@ public class PasswordAccessorySheetControllerTest {
}
@Test
@Features.DisableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public void testSplitsTabDataToList() {
setAutofillFeature(false);
final PropertyProvider<AccessorySheetData> testProvider = new PropertyProvider<>();
final AccessorySheetData testData =
new AccessorySheetData(AccessoryTabType.PASSWORDS, "Passwords for this site", "");
......@@ -161,8 +164,8 @@ public class PasswordAccessorySheetControllerTest {
}
@Test
@Features.EnableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public void testUsesTabTitleOnlyForEmptyListsForModernDesign() {
setAutofillFeature(true);
final PropertyProvider<AccessorySheetData> testProvider = new PropertyProvider<>();
final AccessorySheetData testData =
new AccessorySheetData(AccessoryTabType.PASSWORDS, "No passwords for this", "");
......@@ -276,10 +279,4 @@ public class PasswordAccessorySheetControllerTest {
return RecordHistogram.getHistogramValueCountForTesting(
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
import com.google.android.material.tabs.TabLayout;
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.Mock;
import org.mockito.MockitoAnnotations;
......@@ -29,20 +31,23 @@ import org.chromium.base.task.test.CustomShadowAsyncTask;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
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.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyObservable.PropertyObserver;
import java.util.HashMap;
/**
* Controller tests for the keyboard accessory tab layout component.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE,
shadows = {CustomShadowAsyncTask.class, ShadowRecordHistogram.class})
@Features.EnableFeatures(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY)
public class KeyboardAccessoryTabLayoutControllerTest {
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock
private PropertyObserver<PropertyKey> mMockPropertyObserver;
@Mock
......@@ -63,9 +68,6 @@ public class KeyboardAccessoryTabLayoutControllerTest {
public void setUp() {
ShadowRecordHistogram.reset();
MockitoAnnotations.initMocks(this);
HashMap<String, Boolean> features = new HashMap<>();
features.put(ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY, true);
ChromeFeatureList.setTestFeatures(features);
mCoordinator = new KeyboardAccessoryTabLayoutCoordinator();
mMediator = mCoordinator.getMediatorForTesting();
......
......@@ -12,22 +12,24 @@ import android.text.format.DateUtils;
import org.junit.After;
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.chromium.base.metrics.RecordHistogram;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
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.OfflineItemProgressUnit;
import java.util.HashMap;
/**
* Tests of {@link DownloadUtils}.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
@Features.DisableFeatures(ChromeFeatureList.DOWNLOAD_FILE_PROVIDER)
public class DownloadUtilsTest {
private static final String OFFLINE_ITEM_TITLE = "Some Web Page Title.mhtml";
private static final String OFFLINE_ITEM_DESCRIPTION = "Our web page";
......@@ -38,13 +40,12 @@ public class DownloadUtilsTest {
private static final String MULTIPART_RELATED = "multipart/related";
private static final String ITEM_ID = "42";
@Rule
public TestRule mFeaturesProcessorRule = new Features.InstrumentationProcessor();
@Before
public void setUp() {
RecordHistogram.setDisabledForTests(true);
HashMap<String, Boolean> features = new HashMap<String, Boolean>();
features.put(ChromeFeatureList.DOWNLOAD_FILE_PROVIDER, false);
ChromeFeatureList.setTestFeatures(features);
}
@After
......
......@@ -16,6 +16,7 @@ import static org.mockito.Mockito.verify;
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.ArgumentCaptor;
import org.mockito.Captor;
......@@ -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_task_scheduler.ChromeBackgroundTaskFactory;
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.BackgroundTaskSchedulerFactory;
import org.chromium.components.background_task_scheduler.TaskIds;
import org.chromium.components.background_task_scheduler.TaskInfo;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
/** Unit tests for BackgroundSyncBackgroundTaskScheduler. */
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
@Features.EnableFeatures(ChromeFeatureList.BACKGROUND_TASK_SCHEDULER_FOR_BACKGROUND_SYNC)
public class BackgroundSyncBackgroundTaskSchedulerTest {
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Rule
public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule();
@Mock
private BackgroundTaskScheduler mTaskScheduler;
@Captor
......@@ -58,9 +61,6 @@ public class BackgroundSyncBackgroundTaskSchedulerTest {
MockitoAnnotations.initMocks(this);
BackgroundTaskSchedulerFactory.setSchedulerForTesting(mTaskScheduler);
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)
.when(mTaskScheduler)
.schedule(eq(ContextUtils.getApplicationContext()), mTaskInfo.capture());
......
......@@ -19,6 +19,7 @@ import org.junit.After;
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.ArgumentCaptor;
import org.mockito.Captor;
......@@ -37,6 +38,7 @@ import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.JniMocker;
import org.chromium.chrome.browser.ShadowDeviceConditions;
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.BackgroundTaskScheduler;
import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
......@@ -46,13 +48,12 @@ import org.chromium.components.background_task_scheduler.TaskInfo;
import org.chromium.components.background_task_scheduler.TaskParameters;
import org.chromium.net.ConnectionType;
import java.util.HashMap;
/**
* Unit tests for BackgroundSyncBackgroundTask.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowDeviceConditions.class})
@Features.EnableFeatures(ChromeFeatureList.BACKGROUND_TASK_SCHEDULER_FOR_BACKGROUND_SYNC)
public class BackgroundSyncBackgroundTaskTest {
private static final String IS_LOW_END_DEVICE_SWITCH =
"--" + BaseSwitches.ENABLE_LOW_END_DEVICE_MODE;
......@@ -60,6 +61,9 @@ public class BackgroundSyncBackgroundTaskTest {
@Rule
public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Rule
public JniMocker mocker = new JniMocker();
......@@ -82,9 +86,6 @@ public class BackgroundSyncBackgroundTaskTest {
MockitoAnnotations.initMocks(this);
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();
doReturn(true)
......
......@@ -18,11 +18,11 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.support.test.filters.SmallTest;
import android.util.ArrayMap;
import org.junit.After;
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.ArgumentCaptor;
import org.mockito.Captor;
......@@ -40,6 +40,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.browser.suggestions.SuggestionsNavigationDelegate;
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.NavigationController;
import org.chromium.content_public.browser.WebContents;
......@@ -47,17 +48,20 @@ import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.mojom.WindowOpenDisposition;
import java.util.Collections;
import java.util.Map;
/**
* Unit tests for {@link FeedActionHandler}.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
@Features.EnableFeatures(ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS)
public class FeedActionHandlerTest {
private static final String TEST_URL = "http://www.one.com/";
private static final Long OFFLINE_ID = 12345L;
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock
private SuggestionsNavigationDelegate mDelegate;
@Mock
......@@ -126,10 +130,6 @@ public class FeedActionHandlerTest {
})
.when(mWebContents)
.addObserver(mWebContentsObserverCaptor.capture());
Map<String, Boolean> featureMap = new ArrayMap<>();
featureMap.put(ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS, true);
ChromeFeatureList.setTestFeatures(featureMap);
}
private void answerWithGoodParams() {
......@@ -150,11 +150,6 @@ public class FeedActionHandlerTest {
mLoadUrlParamsCallbackCaptor.capture());
}
@After
public void tearDown() {
ChromeFeatureList.setTestFeatures(null);
}
@Test
@SmallTest
public void testOpenUrlOffline() {
......
......@@ -15,7 +15,9 @@ import android.os.Bundle;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
......@@ -26,12 +28,11 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarConfiguration;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.signin.ChildAccountStatus;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Tests FirstRunFlowSequencer which contains the core logic of what should be shown during the
......@@ -39,7 +40,11 @@ import java.util.Map;
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowMultiDex.class})
@Features.EnableFeatures(ChromeFeatureList.CHROME_DUET)
public class FirstRunFlowSequencerTest {
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
/** Information for Google OS account */
private static final String GOOGLE_ACCOUNT_TYPE = "com.google";
private static final String DEFAULT_ACCOUNT = "test@gmail.com";
......@@ -137,7 +142,6 @@ public class FirstRunFlowSequencerTest {
public void setUp() {
mActivityController = Robolectric.buildActivity(Activity.class);
mSequencer = new TestFirstRunFlowSequencer(mActivityController.setup().get());
setupFeatureList();
}
@After
......@@ -145,15 +149,6 @@ public class FirstRunFlowSequencerTest {
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
@Feature({"FirstRun"})
public void testFirstRunComplete() {
......
......@@ -27,7 +27,9 @@ import android.os.Build;
import org.junit.After;
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.ArgumentCaptor;
import org.mockito.Captor;
......@@ -49,6 +51,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.init.BrowserParts;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
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.BackgroundTaskSchedulerFactory;
import org.chromium.components.background_task_scheduler.TaskIds;
......@@ -59,12 +62,12 @@ import org.chromium.net.ConnectionType;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/** Unit tests for {@link OfflineNotificationBackgroundTask}. */
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowMultiDex.class, ShadowDeviceConditions.class})
@Features.DisableFeatures(ChromeFeatureList.PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION)
public class OfflineNotificationBackgroundTaskUnitTest {
/**
* Fake of BackgroundTaskScheduler system service.
......@@ -97,7 +100,8 @@ public class OfflineNotificationBackgroundTaskUnitTest {
mTaskInfos = new HashMap<>();
}
}
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Spy
private OfflineNotificationBackgroundTask mOfflineNotificationBackgroundTask =
new OfflineNotificationBackgroundTask();
......@@ -118,10 +122,6 @@ public class OfflineNotificationBackgroundTaskUnitTest {
@SuppressWarnings("unchecked")
@Before
public void setUp() {
Map<String, Boolean> features = new HashMap<>();
features.put(ChromeFeatureList.PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION, false);
ChromeFeatureList.setTestFeatures(features);
MockitoAnnotations.initMocks(this);
mOfflineNotificationBackgroundTask.setDelegate(new ChromeNativeBackgroundTaskDelegate());
// Set up the context.
......
......@@ -19,6 +19,7 @@ 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.ArgumentMatcher;
import org.mockito.InOrder;
......@@ -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.Type;
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 java.util.HashMap;
import java.util.Map;
/** Tests the API surface of UpdateSuccessMetrics. */
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class})
@Features.DisableFeatures(ChromeFeatureList.INLINE_UPDATE_FLOW)
public class UpdateSuccessMetricsTest {
private static final int FAILED = 0;
private static final int SUCCESS = 1;
......@@ -63,13 +63,11 @@ public class UpdateSuccessMetricsTest {
@Rule
public MockitoRule mMockitoRule = MockitoJUnit.rule();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Before
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);
}
......
......@@ -20,6 +20,7 @@ import android.support.test.filters.SmallTest;
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.ArgumentCaptor;
import org.mockito.Captor;
......@@ -34,27 +35,29 @@ import org.chromium.base.metrics.test.DisableHistogramsRule;
import org.chromium.base.metrics.test.ShadowRecordHistogram;
import org.chromium.base.test.BaseRobolectricTestRunner;
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.SharedPreferencesManager;
import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
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.TemplateUrlService;
import java.util.HashMap;
/**
* Unit tests for {@link SearchEngineChoiceNotification}.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class})
@Features.EnableFeatures({})
public final class SearchEngineChoiceNotificationTest {
private static final String TEST_INITIAL_ENGINE = "google.com";
private static final String TEST_ALTERNATIVE_ENGINE = "duckduckgo.com";
@Rule
public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsRule();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Spy
private Context mContext = RuntimeEnvironment.application.getApplicationContext();
@Mock
......@@ -73,7 +76,6 @@ public final class SearchEngineChoiceNotificationTest {
MockitoAnnotations.initMocks(this);
ContextUtils.initApplicationContextForTests(mContext);
ChromeFeatureList.setTestFeatures(new HashMap<String, Boolean>());
ShadowRecordHistogram.reset();
// Sets up appropriate responses from Template URL service.
......
......@@ -10,12 +10,12 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import android.util.ArrayMap;
import org.junit.After;
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.Mock;
import org.mockito.MockitoAnnotations;
......@@ -28,15 +28,15 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.WebContents;
import java.util.Map;
/**
* Unit tests for ChromeSurveyController.java.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
@Features.EnableFeatures(ChromeFeatureList.HORIZONTAL_TAB_SWITCHER_ANDROID)
public class ChromeSurveyControllerTest {
private static final String STUDY_NAME = "HorizontalTabSwitcherStudyName";
private static final String GROUP_NAME = "HorizontalTabSwitcherGroupName";
......@@ -45,6 +45,9 @@ public class ChromeSurveyControllerTest {
private RiggedSurveyController mRiggedController;
private SharedPreferencesManager mSharedPreferences;
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock
Tab mTab;
......@@ -63,9 +66,6 @@ public class ChromeSurveyControllerTest {
mTestController.setTabModelSelector(mSelector);
mSharedPreferences = SharedPreferencesManager.getInstance();
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
......
......@@ -17,30 +17,34 @@ import android.content.Context;
import android.support.test.filters.SmallTest;
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.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
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.ui.base.WindowAndroid;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
/**
* Tests for {@link Tab}.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
@Features.EnableFeatures("ShoppingAssist")
public class TabUnitTest {
private static final int TAB1_ID = 456;
private static final int TAB2_ID = 789;
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock
private WindowAndroid mWindowAndroid;
@Mock
......@@ -68,11 +72,6 @@ public class TabUnitTest {
doReturn(mContext).when(mWeakReferenceContext).get();
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.addObserver(mObserver);
}
......
......@@ -50,9 +50,18 @@ public abstract class ChromeFeatureList {
/**
* @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.
@VisibleForTesting
@Deprecated
public static void setTestFeatures(Map<String, Boolean> features) {
FeatureList.setTestFeatures(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.EnableFeatures;
import java.util.Collections;
/**
* Tests the behavior of {@link ChromeFeatureList} in Robolectric unit tests when the rule
* Features.JUnitProcessor is present.
......@@ -28,7 +26,7 @@ import java.util.Collections;
@Config(manifest = Config.NONE)
public class ChromeFeatureListWithProcessorUnitTest {
@Rule
public TestRule mProcessor = new Features.JUnitProcessor();
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
/**
* In unit tests, all flags checked must have their value specified.
......@@ -69,11 +67,9 @@ public class ChromeFeatureListWithProcessorUnitTest {
* {@link ChromeFeatureList#setTestFeatures(java.util.Map)}.
*/
@Test
@EnableFeatures(ChromeFeatureList.TEST_DEFAULT_DISABLED)
public void testSetTestFeaturesEnabled_returnsEnabled() {
ChromeFeatureList.setTestFeatures(
Collections.singletonMap(ChromeFeatureList.TEST_DEFAULT_DISABLED, true));
assertTrue(ChromeFeatureList.isEnabled(ChromeFeatureList.TEST_DEFAULT_DISABLED));
ChromeFeatureList.setTestFeatures(null);
}
/**
......@@ -81,10 +77,8 @@ public class ChromeFeatureListWithProcessorUnitTest {
* {@link ChromeFeatureList#setTestFeatures(java.util.Map)}.
*/
@Test
@DisableFeatures(ChromeFeatureList.TEST_DEFAULT_ENABLED)
public void testSetTestFeaturesDisabled_returnsDisabled() {
ChromeFeatureList.setTestFeatures(
Collections.singletonMap(ChromeFeatureList.TEST_DEFAULT_ENABLED, false));
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
import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.VISIBLE;
import android.graphics.Bitmap;
import android.support.test.espresso.core.deps.guava.collect.ImmutableMap;
import androidx.annotation.Px;
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.ArgumentCaptor;
import org.mockito.Captor;
......@@ -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.data.Credential;
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.UrlFormatter;
import org.chromium.components.url_formatter.UrlFormatterJni;
......@@ -71,6 +72,7 @@ import java.util.Collections;
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class})
@Features.EnableFeatures(ChromeFeatureList.TOUCH_TO_FILL_ANDROID)
public class TouchToFillControllerTest {
private static final String TEST_URL = "https://www.example.xyz";
private static final String TEST_SUBDOMAIN_URL = "https://subdomain.example.xyz";
......@@ -84,6 +86,8 @@ public class TouchToFillControllerTest {
@Rule
public JniMocker mJniMocker = new JniMocker();
@Rule
public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
@Mock
private UrlFormatter.Natives mUrlFormatterJniMock;
@Mock
......@@ -105,8 +109,6 @@ public class TouchToFillControllerTest {
@Before
public void setUp() {
ShadowRecordHistogram.reset();
ChromeFeatureList.setTestFeatures(
ImmutableMap.of(ChromeFeatureList.TOUCH_TO_FILL_ANDROID, true));
MockitoAnnotations.initMocks(this);
mJniMocker.mock(UrlFormatterJni.TEST_HOOKS, mUrlFormatterJniMock);
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