Commit 2c9f56d8 authored by Christian Dullweber's avatar Christian Dullweber Committed by Commit Bot

Show cookie settings from page info

Show cookie settings when the user clicks on "Settings" link. As chrome
and weblayer have different ways of creating intents, this happens in
the pageinfo delegate.

Bug: 1077766
Change-Id: Iefd81c06ce3947eb4e95107db1360c375955ed01
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2343033
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Reviewed-by: default avatarMugdha Lakhani <nator@chromium.org>
Reviewed-by: default avatarEhimare Okoyomon <eokoyomon@chromium.org>
Reviewed-by: default avatarBalazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#800557}
parent 2e1d149b
......@@ -30,6 +30,7 @@ import org.chromium.chrome.browser.previews.PreviewsUma;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsClient;
import org.chromium.chrome.browser.vr.VrModuleProvider;
import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
import org.chromium.components.browser_ui.site_settings.SiteSettingsClient;
import org.chromium.components.content_settings.CookieControlsBridge;
import org.chromium.components.content_settings.CookieControlsObserver;
......@@ -246,6 +247,11 @@ public class ChromePageInfoControllerDelegate extends PageInfoControllerDelegate
SiteSettingsHelper.showSiteSettings(mContext, url);
}
@Override
public void showCookieSettings() {
SiteSettingsHelper.showCategorySettings(mContext, SiteSettingsCategory.Type.COOKIES);
}
/**
* {@inheritDoc}
*/
......
......@@ -6,13 +6,17 @@ package org.chromium.chrome.browser.page_info;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import org.chromium.base.StrictModeContext;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.previews.PreviewsAndroidBridge;
import org.chromium.chrome.browser.settings.SettingsLauncher;
import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
import org.chromium.components.browser_ui.site_settings.SingleCategorySettings;
import org.chromium.components.browser_ui.site_settings.SingleWebsiteSettings;
import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.content_public.browser.WebContents;
......@@ -49,9 +53,30 @@ public class SiteSettingsHelper {
Intent preferencesIntent = settingsLauncher.createSettingsActivityIntent(context,
SingleWebsiteSettings.class.getName(),
SingleWebsiteSettings.createFragmentArgsForSite(fullUrl));
launchIntent(context, preferencesIntent);
}
/**
* Show the single category settings page for given category and type.
*/
public static void showCategorySettings(
Context context, @SiteSettingsCategory.Type int category) {
SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
Bundle extras = new Bundle();
extras.putString(SingleCategorySettings.EXTRA_CATEGORY,
SiteSettingsCategory.preferenceKey(category));
extras.putString(SingleCategorySettings.EXTRA_TITLE,
context.getResources().getString(ContentSettingsResources.getTitle(
SiteSettingsCategory.contentSettingsType(category))));
Intent preferencesIntent = settingsLauncher.createSettingsActivityIntent(
context, SingleCategorySettings.class.getName(), extras);
launchIntent(context, preferencesIntent);
}
private static void launchIntent(Context context, Intent intent) {
// Disabling StrictMode to avoid violations (https://crbug.com/819410).
try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
context.startActivity(preferencesIntent);
context.startActivity(intent);
}
}
}
......@@ -271,8 +271,8 @@ public class PageInfoController
this, view2.getConnectionRowView(), mWebContents, mDelegate.getVrHandler());
mPermissionsController = new PageInfoPermissionsController(
this, view2.getPermissionsRowView(), mDelegate, mDisplayUrlBuilder.toString());
mCookiesController = new PageInfoCookiesController(
this, view2.getCookiesRowView(), viewParams.cookieControlsShown, mFullUrl);
mCookiesController = new PageInfoCookiesController(this, view2.getCookiesRowView(),
mDelegate, viewParams.cookieControlsShown, mFullUrl);
} else {
mView.showPerformanceInfo(mDelegate.shouldShowPerformanceBadge(mFullUrl));
mView.showHttpsImageCompressionInfo(mDelegate.isHttpsImageCompressionApplied());
......
......@@ -199,6 +199,11 @@ public abstract class PageInfoControllerDelegate {
*/
public abstract void showSiteSettings(String url);
/**
* Show cookie settings.
*/
public abstract void showCookieSettings();
/**
* Creates Cookie Controls Bridge.
* @param observer The CookieControlsObserver to create the bridge with.
......
......@@ -25,6 +25,7 @@ public class PageInfoCookiesController
private PageInfoMainPageController mMainController;
private PageInfoRowView mRowView;
private CookieControlsBridge mBridge;
private PageInfoControllerDelegate mDelegate;
private String mFullUrl;
private String mTitle;
private PageInfoCookiesPreference mSubPage;
......@@ -35,9 +36,11 @@ public class PageInfoCookiesController
private boolean mIsEnforced;
public PageInfoCookiesController(PageInfoMainPageController mainController,
PageInfoRowView rowView, boolean isVisible, String fullUrl) {
PageInfoRowView rowView, PageInfoControllerDelegate delegate, boolean isVisible,
String fullUrl) {
mMainController = mainController;
mRowView = rowView;
mDelegate = delegate;
mFullUrl = fullUrl;
mTitle = mRowView.getContext().getResources().getString(R.string.cookies_title);
......@@ -72,6 +75,7 @@ public class PageInfoCookiesController
new PageInfoCookiesPreference.PageInfoCookiesViewParams();
params.onCheckedChangedCallback = this::onCheckedChangedCallback;
params.onClearCallback = this::clearData;
params.onCookieSettingsLinkClicked = mDelegate::showCookieSettings;
mSubPage.setParams(params);
// TODO(crbug.com/1077766): Get storage size.
mSubPage.setCookiesCount(mAllowedCookies, mBlockedCookies);
......
......@@ -36,6 +36,7 @@ public class PageInfoCookiesPreference extends PreferenceFragmentCompat {
// Called when the toggle controlling third-party cookie blocking changes.
public Callback<Boolean> onCheckedChangedCallback;
public Runnable onClearCallback;
public Runnable onCookieSettingsLinkClicked;
}
@Override
......@@ -43,9 +44,8 @@ public class PageInfoCookiesPreference extends PreferenceFragmentCompat {
SettingsUtils.addPreferencesFromResource(this, R.xml.page_info_cookie_preference);
Preference cookieSummary = findPreference(COOKIE_SUMMARY_PREFERENCE);
// TODO(crbug.com/1077766): Show cookie settings.
NoUnderlineClickableSpan linkSpan =
new NoUnderlineClickableSpan(getResources(), view -> {});
NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(
getResources(), (view) -> { mParams.onCookieSettingsLinkClicked.run(); });
cookieSummary.setSummary(
SpanApplier.applySpans(getString(R.string.page_info_cookies_description),
new SpanApplier.SpanInfo("<link>", "</link>", linkSpan)));
......
......@@ -11,7 +11,10 @@ import androidx.annotation.NonNull;
import org.chromium.base.StrictModeContext;
import org.chromium.base.supplier.Supplier;
import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
import org.chromium.components.browser_ui.site_settings.SiteSettingsClient;
import org.chromium.components.content_settings.ContentSettingsType;
import org.chromium.components.content_settings.CookieControlsBridge;
import org.chromium.components.content_settings.CookieControlsObserver;
import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
......@@ -58,6 +61,21 @@ public class PageInfoControllerDelegateImpl extends PageInfoControllerDelegate {
Intent intent = SiteSettingsIntentHelper.createIntentForSingleWebsite(
mContext, mProfile.getName(), url);
// Disabling StrictMode to avoid violations (https://crbug.com/819410).
launchIntent(intent);
}
@Override
public void showCookieSettings() {
String category = SiteSettingsCategory.preferenceKey(SiteSettingsCategory.Type.COOKIES);
String title = mContext.getResources().getString(
ContentSettingsResources.getTitle(ContentSettingsType.COOKIES));
Intent intent = SiteSettingsIntentHelper.createIntentForSingleCategory(
mContext, mProfile.getName(), category, title);
launchIntent(intent);
}
private void launchIntent(Intent intent) {
// Disabling StrictMode to avoid violations (https://crbug.com/819410).
try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
mContext.startActivity(intent);
......
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