diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java index f3defe2a9e88b..a50291c64a6c6 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java @@ -27,7 +27,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.refEq; +import static org.chromium.components.browser_ui.site_settings.SingleWebsiteSettings.EXTRA_SITE; import static org.chromium.components.content_settings.PrefNames.COOKIE_CONTROLS_MODE; import static org.chromium.components.content_settings.PrefNames.IN_CONTEXT_COOKIE_CONTROLS_OPENED; import static org.chromium.ui.test.util.ViewUtils.clickOnClickableSpan; @@ -39,6 +43,7 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.os.Build; +import android.os.Bundle; import android.text.format.DateUtils; import android.view.Gravity; import android.view.View; @@ -56,6 +61,9 @@ import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; import org.chromium.base.ThreadUtils; import org.chromium.base.supplier.ObservableSupplier; @@ -88,14 +96,17 @@ import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; import org.chromium.chrome.browser.pdf.PdfUtils.PdfPageType; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.chrome.browser.settings.SettingsNavigationFactory; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.R; import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule; +import org.chromium.components.browser_ui.settings.SettingsNavigation; import org.chromium.components.browser_ui.site_settings.ContentSettingException; import org.chromium.components.browser_ui.site_settings.RwsCookieInfo; +import org.chromium.components.browser_ui.site_settings.SingleWebsiteSettings; import org.chromium.components.browser_ui.site_settings.SiteSettingsDelegate; import org.chromium.components.browser_ui.site_settings.Website; import org.chromium.components.browser_ui.site_settings.WebsiteAddress; @@ -215,6 +226,8 @@ public class PageInfoViewTest { } } + @Mock private SettingsNavigation mSettingsNavigation; + @ClassRule public static final ChromeTabbedActivityTestRule sActivityTestRule = new ChromeTabbedActivityTestRule(); @@ -350,12 +363,23 @@ public class PageInfoViewTest { return rwsInfo; } - private void setRwsInfo(String url) { - RwsCookieInfo rwsInfo = getRwsCookieInfo(url); + private void setRwsInfoForTesting(RwsCookieInfo rwsCookieInfo) { PageInfoController controller = PageInfoController.getLastPageInfoController(); assertNotNull(controller); var cookiesController = controller.getCookiesController(); - cookiesController.setRwsInfoForTesting(rwsInfo.getMembers()); + cookiesController.setRwsInfoForTesting(rwsCookieInfo.getMembers()); + } + + private void setRwsInfo(String url) { + RwsCookieInfo rwsInfo = getRwsCookieInfo(url); + setRwsInfoForTesting(rwsInfo); + } + + private void setRwsInfoWithWebsite(Website site) { + RwsCookieInfo rwsInfo = + new RwsCookieInfo(site.getAddress().getDomainAndRegistry(), List.of(site)); + site.setRwsCookieInfo(rwsInfo); + setRwsInfoForTesting(rwsInfo); } private void setThirdPartyCookieBlocking(@CookieControlsMode int value) { @@ -520,6 +544,8 @@ public class PageInfoViewTest { mTestServerRule.setServerUsesHttps(true); PageInfoAdPersonalizationController.setTopicsForTesting(Arrays.asList("Testing topic")); + + MockitoAnnotations.initMocks(this); } @After @@ -800,6 +826,29 @@ public class PageInfoViewTest { mRenderTestRule.render(getPageInfoView(), "PageInfo_CookiesSubpage_RwsEnabled"); } + /** Tests the cookies page of the PageInfo UI with RWS enabled. */ + @Test + @MediumTest + public void shouldNavigateToSiteSettingsWhenRwsButtonClicked() throws IOException { + SettingsNavigationFactory.setInstanceForTesting(mSettingsNavigation); + String hostName = "example.com"; + String url = mTestServerRule.getServer().getURLWithHostName(hostName, "/"); + Website currentSite = new Website(WebsiteAddress.create(url), null); + loadUrlAndOpenPageInfo(url); + setRwsInfoWithWebsite(currentSite); + onView(withId(R.id.page_info_cookies_row)).perform(click()); + onViewWaiting(allOf(withText(R.string.page_info_rws_v2_button_title), isDisplayed())); + Context context = ApplicationProvider.getApplicationContext(); + String subtitle = + context.getString(R.string.page_info_rws_v2_button_subtitle_android, hostName); + onViewWaiting(allOf(withText(subtitle), isDisplayed())); + onView(withText(R.string.page_info_rws_v2_button_title)).perform(click()); + Bundle extras = new Bundle(); + extras.putSerializable(EXTRA_SITE, currentSite); + Mockito.verify(mSettingsNavigation) + .startSettings(any(), eq(SingleWebsiteSettings.class), refEq(extras)); + } + /** Tests the cookies page of the PageInfo UI with the Cookie Controls UI enabled. */ @Test @MediumTest