0

[RWS - Clank] Add test for site settings link

Bug: b:396463421
Change-Id: I1c60f2fbf6514bf8d72df77a82713c5f20f75b52
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6367500
Reviewed-by: Fiona Macintosh <fmacintosh@google.com>
Auto-Submit: Maggie Jennings <mjenn@google.com>
Reviewed-by: Filipa Senra <fsenra@google.com>
Commit-Queue: Maggie Jennings <mjenn@google.com>
Cr-Commit-Position: refs/heads/main@{#1434254}
This commit is contained in:
Maggie Jennings
2025-03-18 10:56:55 -07:00
committed by Chromium LUCI CQ
parent 2af3305ff4
commit 763e478605

@ -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