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