| // Copyright 2018 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.download.home; |
| |
| import static android.support.test.espresso.Espresso.onView; |
| import static android.support.test.espresso.assertion.ViewAssertions.matches; |
| import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; |
| import static android.support.test.espresso.matcher.ViewMatchers.withText; |
| |
| import android.support.test.filters.MediumTest; |
| |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.mockito.Mock; |
| import org.mockito.MockitoAnnotations; |
| |
| import org.chromium.base.ThreadUtils; |
| import org.chromium.base.metrics.RecordHistogram; |
| import org.chromium.base.metrics.RecordUserAction; |
| import org.chromium.base.test.util.Restriction; |
| import org.chromium.chrome.R; |
| import org.chromium.chrome.browser.ChromeFeatureList; |
| import org.chromium.chrome.browser.UrlConstants; |
| import org.chromium.chrome.browser.download.home.list.UiUtils; |
| import org.chromium.chrome.browser.download.items.OfflineContentAggregatorFactory; |
| import org.chromium.chrome.browser.download.ui.StubbedProvider; |
| import org.chromium.chrome.browser.feature_engagement.TrackerFactory; |
| import org.chromium.chrome.browser.profiles.Profile; |
| import org.chromium.chrome.browser.snackbar.SnackbarManager; |
| import org.chromium.chrome.test.ChromeJUnit4ClassRunner; |
| import org.chromium.chrome.test.ui.DummyUiActivity; |
| import org.chromium.chrome.test.ui.DummyUiActivityTestCase; |
| import org.chromium.components.feature_engagement.Tracker; |
| import org.chromium.components.offline_items_collection.OfflineItem; |
| import org.chromium.ui.test.util.UiRestriction; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| /** Tests the DownloadActivity home V2. */ |
| @RunWith(ChromeJUnit4ClassRunner.class) |
| @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) |
| public class DownloadActivityV2Test extends DummyUiActivityTestCase { |
| @Mock |
| private Profile mProfile; |
| @Mock |
| private Tracker mTracker; |
| @Mock |
| private SnackbarManager mSnackbarManager; |
| |
| private DownloadManagerCoordinator mDownloadCoordinator; |
| |
| @BeforeClass |
| public static void setUpBeforeActivityLaunched() { |
| RecordUserAction.setDisabledForTests(true); |
| RecordHistogram.setDisabledForTests(true); |
| UiUtils.setDisableUrlFormattingForTests(true); |
| DummyUiActivity.setTestTheme(R.style.Theme_Chromium_Activity_Fullscreen); |
| } |
| |
| @Override |
| public void setUpTest() throws Exception { |
| super.setUpTest(); |
| MockitoAnnotations.initMocks(this); |
| StubbedOfflineContentProvider stubbedOfflineContentProvider = |
| new StubbedOfflineContentProvider(); |
| OfflineContentAggregatorFactory.setOfflineContentProviderForTests( |
| stubbedOfflineContentProvider); |
| |
| OfflineItem item0 = StubbedProvider.createOfflineItem(0, "20151019 07:26"); |
| OfflineItem item1 = StubbedProvider.createOfflineItem(1, "20151020 07:27"); |
| OfflineItem item2 = StubbedProvider.createOfflineItem(2, "20151021 07:28"); |
| OfflineItem item3 = StubbedProvider.createOfflineItem(3, "20151021 07:29"); |
| |
| stubbedOfflineContentProvider.addItem(item0); |
| stubbedOfflineContentProvider.addItem(item1); |
| stubbedOfflineContentProvider.addItem(item2); |
| stubbedOfflineContentProvider.addItem(item3); |
| |
| TrackerFactory.setTrackerForTests(mTracker); |
| |
| Map<String, Boolean> features = new HashMap<>(); |
| features.put(ChromeFeatureList.DOWNLOADS_LOCATION_CHANGE, true); |
| features.put(ChromeFeatureList.DOWNLOAD_HOME_SHOW_STORAGE_INFO, true); |
| features.put(ChromeFeatureList.DOWNLOAD_HOME_V2, true); |
| features.put(ChromeFeatureList.OFFLINE_PAGES_PREFETCHING, true); |
| features.put(ChromeFeatureList.OVERSCROLL_HISTORY_NAVIGATION, false); |
| ChromeFeatureList.setTestFeatures(features); |
| } |
| |
| private void setUpUi() { |
| DownloadManagerUiConfig config = new DownloadManagerUiConfig.Builder() |
| .setIsOffTheRecord(false) |
| .setIsSeparateActivity(true) |
| .setUseNewDownloadPath(true) |
| .setUseNewDownloadPathThumbnails(true) |
| .build(); |
| mDownloadCoordinator = new DownloadManagerCoordinatorImpl( |
| mProfile, getActivity(), config, mSnackbarManager); |
| getActivity().setContentView(mDownloadCoordinator.getView()); |
| |
| mDownloadCoordinator.updateForUrl(UrlConstants.DOWNLOADS_URL); |
| } |
| |
| @Test |
| @MediumTest |
| public void testLaunchingActivity() throws Exception { |
| ThreadUtils.runOnUiThreadBlocking(() -> { setUpUi(); }); |
| |
| onView(withText("page 1")).check(matches(isDisplayed())); |
| onView(withText("page 2")).check(matches(isDisplayed())); |
| onView(withText("page 3")).check(matches(isDisplayed())); |
| onView(withText("page 4")).check(matches(isDisplayed())); |
| } |
| } |