Commit 3f33f249 authored by Robbie McElrath's avatar Robbie McElrath Committed by Chromium LUCI CQ

[WebLayer] Rename SiteSettingsClient to SiteSettingsDelegate

This renames SiteSettingsClient to SiteSettingsDelegate to match other
similar interfaces, and merges SiteSettingsHelpClient and
WebappSettingsClient into SiteSettingsDelegate so there's only one
interface for embedders to implement.

Things were originally split into multiple interfaces to help group
methods together and make it easier to reason about. Whether or not that
actually worked is debatable, but now that we've removed the need for
multiple of these sub-interfaces, the 2 that remain should be merged
into the main one.

Bug: 1077007
Change-Id: Ia02d8e47d38d1b4878b4a4d0cda5ccbb74de6352
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2594441
Commit-Queue: Robbie McElrath <rmcelrath@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarNatalie Chouinard <chouinard@chromium.org>
Reviewed-by: default avatarFinnur Thorarinsson <finnur@chromium.org>
Cr-Commit-Position: refs/heads/master@{#840305}
parent 9651eea3
......@@ -1259,9 +1259,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java",
"java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetViewBinder.java",
"java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerDelegateImpl.java",
"java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsClient.java",
"java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsHelpClient.java",
"java/src/org/chromium/chrome/browser/site_settings/ChromeWebappSettingsClient.java",
"java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java",
"java/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridge.java",
"java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java",
......
......@@ -506,7 +506,7 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/signin/IdentityManagerIntegrationTest.java",
"javatests/src/org/chromium/chrome/browser/signin/SigninFragmentTest.java",
"javatests/src/org/chromium/chrome/browser/signin/SigninSignoutIntegrationTest.java",
"javatests/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsClientTest.java",
"javatests/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegateTest.java",
"javatests/src/org/chromium/chrome/browser/site_settings/CookieControlsBridgeTest.java",
"javatests/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridgeTest.java",
"javatests/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivityTest.java",
......
......@@ -36,14 +36,14 @@ import org.chromium.chrome.browser.performance_hints.PerformanceHintsObserver.Pe
import org.chromium.chrome.browser.previews.PreviewsAndroidBridge;
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.site_settings.ChromeSiteSettingsDelegate;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabUtils;
import org.chromium.chrome.browser.ui.favicon.FaviconHelper;
import org.chromium.chrome.browser.vr.VrModuleProvider;
import org.chromium.components.browser_ui.settings.SettingsUtils;
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.SiteSettingsDelegate;
import org.chromium.components.content_settings.CookieControlsBridge;
import org.chromium.components.content_settings.CookieControlsObserver;
import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
......@@ -318,8 +318,8 @@ public class ChromePageInfoControllerDelegate extends PageInfoControllerDelegate
*/
@Override
@NonNull
public SiteSettingsClient getSiteSettingsClient() {
return new ChromeSiteSettingsClient(mContext, getBrowserContext());
public SiteSettingsDelegate getSiteSettingsDelegate() {
return new ChromeSiteSettingsDelegate(mContext, getBrowserContext());
}
@NonNull
......
......@@ -45,7 +45,7 @@ import org.chromium.chrome.browser.safety_check.SafetyCheckCoordinator;
import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment;
import org.chromium.chrome.browser.safety_check.SafetyCheckUpdatesDelegateImpl;
import org.chromium.chrome.browser.signin.SigninActivityLauncherImpl;
import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsClient;
import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate;
import org.chromium.components.browser_ui.settings.SettingsUtils;
import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment;
import org.chromium.ui.UiUtils;
......@@ -286,7 +286,7 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
public void onAttachFragment(Fragment fragment) {
if (fragment instanceof SiteSettingsPreferenceFragment) {
((SiteSettingsPreferenceFragment) fragment)
.setSiteSettingsClient(new ChromeSiteSettingsClient(
.setSiteSettingsDelegate(new ChromeSiteSettingsDelegate(
this, Profile.getLastUsedRegularProfile()));
}
if (fragment instanceof FragmentSettingsLauncher) {
......
......@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.site_settings;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
......@@ -15,17 +16,17 @@ import org.chromium.base.Callback;
import org.chromium.base.CommandLine;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.browserservices.permissiondelegation.TrustedWebActivityPermissionManager;
import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.notifications.channels.SiteChannelsManager;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
import org.chromium.chrome.browser.ui.favicon.FaviconHelper;
import org.chromium.chrome.browser.ui.favicon.FaviconHelper.FaviconImageCallback;
import org.chromium.chrome.browser.webapps.WebappRegistry;
import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
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.SiteSettingsHelpClient;
import org.chromium.components.browser_ui.site_settings.WebappSettingsClient;
import org.chromium.components.browser_ui.site_settings.SiteSettingsDelegate;
import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
import org.chromium.components.content_settings.ContentSettingsType;
import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
......@@ -34,10 +35,12 @@ import org.chromium.components.page_info.PageInfoFeatureList;
import org.chromium.content_public.browser.ContentFeatureList;
import org.chromium.content_public.common.ContentSwitches;
import java.util.Set;
/**
* A SiteSettingsClient instance that contains Chrome-specific Site Settings logic.
* A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic.
*/
public class ChromeSiteSettingsClient implements SiteSettingsClient {
public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
// Constants for favicon processing.
// TODO(crbug.com/1076571): Move these constants to colors.xml and dimens.xml
private static final int FAVICON_BACKGROUND_COLOR = 0xff969696;
......@@ -48,11 +51,9 @@ public class ChromeSiteSettingsClient implements SiteSettingsClient {
private final Context mContext;
private final BrowserContextHandle mBrowserContext;
private ChromeSiteSettingsHelpClient mChromeSiteSettingsHelpClient;
private ChromeWebappSettingsClient mChromeWebappSettingsClient;
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
public ChromeSiteSettingsClient(Context context, BrowserContextHandle browserContext) {
public ChromeSiteSettingsDelegate(Context context, BrowserContextHandle browserContext) {
mContext = context;
mBrowserContext = browserContext;
}
......@@ -75,22 +76,6 @@ public class ChromeSiteSettingsClient implements SiteSettingsClient {
return mManagedPreferenceDelegate;
}
@Override
public SiteSettingsHelpClient getSiteSettingsHelpClient() {
if (mChromeSiteSettingsHelpClient == null) {
mChromeSiteSettingsHelpClient = new ChromeSiteSettingsHelpClient();
}
return mChromeSiteSettingsHelpClient;
}
@Override
public WebappSettingsClient getWebappSettingsClient() {
if (mChromeWebappSettingsClient == null) {
mChromeWebappSettingsClient = new ChromeWebappSettingsClient();
}
return mChromeWebappSettingsClient;
}
@Override
public void getFaviconImageForURL(String faviconUrl, Callback<Bitmap> callback) {
new FaviconLoader(faviconUrl, callback);
......@@ -205,4 +190,34 @@ public class ChromeSiteSettingsClient implements SiteSettingsClient {
public boolean isPageInfoV2Enabled() {
return PageInfoFeatureList.isEnabled(PageInfoFeatureList.PAGE_INFO_V2);
}
@Override
public boolean isHelpAndFeedbackEnabled() {
return true;
}
@Override
public void launchSettingsHelpAndFeedbackActivity(Activity currentActivity) {
HelpAndFeedbackLauncherImpl.getInstance().show(currentActivity,
currentActivity.getString(R.string.help_context_settings),
Profile.getLastUsedRegularProfile(), null);
}
@Override
public void launchProtectedContentHelpAndFeedbackActivity(Activity currentActivity) {
HelpAndFeedbackLauncherImpl.getInstance().show(currentActivity,
currentActivity.getString(R.string.help_context_protected_content),
Profile.getLastUsedRegularProfile(), null);
}
@Override
public Set<String> getOriginsWithInstalledApp() {
WebappRegistry registry = WebappRegistry.getInstance();
return registry.getOriginsWithInstalledApp();
}
@Override
public Set<String> getAllDelegatedNotificationOrigins() {
return TrustedWebActivityPermissionManager.get().getAllDelegatedOrigins();
}
}
// Copyright 2020 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.site_settings;
import android.app.Activity;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.components.browser_ui.site_settings.SiteSettingsHelpClient;
/**
* A SiteSettingsHelpClient instance that provides Chrome-specific help functionality.
*/
public class ChromeSiteSettingsHelpClient implements SiteSettingsHelpClient {
@Override
public boolean isHelpAndFeedbackEnabled() {
return true;
}
@Override
public void launchSettingsHelpAndFeedbackActivity(Activity currentActivity) {
HelpAndFeedbackLauncherImpl.getInstance().show(currentActivity,
currentActivity.getString(R.string.help_context_settings),
Profile.getLastUsedRegularProfile(), null);
}
@Override
public void launchProtectedContentHelpAndFeedbackActivity(Activity currentActivity) {
HelpAndFeedbackLauncherImpl.getInstance().show(currentActivity,
currentActivity.getString(R.string.help_context_protected_content),
Profile.getLastUsedRegularProfile(), null);
}
}
// Copyright 2020 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.site_settings;
import org.chromium.chrome.browser.browserservices.permissiondelegation.TrustedWebActivityPermissionManager;
import org.chromium.chrome.browser.webapps.WebappRegistry;
import org.chromium.components.browser_ui.site_settings.WebappSettingsClient;
import java.util.Set;
/**
* A SiteSettingsClient instance that contains Chrome-specific Site Settings logic.
*/
public class ChromeWebappSettingsClient implements WebappSettingsClient {
@Override
public Set<String> getOriginsWithInstalledApp() {
WebappRegistry registry = WebappRegistry.getInstance();
return registry.getOriginsWithInstalledApp();
}
@Override
public Set<String> getAllDelegatedNotificationOrigins() {
return TrustedWebActivityPermissionManager.get().getAllDelegatedOrigins();
}
}
......@@ -28,14 +28,14 @@ import org.chromium.content_public.browser.test.util.TestThreadUtils;
import java.util.concurrent.TimeoutException;
/**
* Tests for Chrome's SiteSettingsClient implementation.
* Tests for Chrome's SiteSettingsDelegate implementation.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
public class ChromeSiteSettingsClientTest {
public class ChromeSiteSettingsDelegateTest {
@Rule
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
ChromeSiteSettingsClient mSiteSettingsClient;
ChromeSiteSettingsDelegate mSiteSettingsDelegate;
@Before
public void setUp() throws Exception {
......@@ -48,7 +48,7 @@ public class ChromeSiteSettingsClientTest {
@SmallTest
public void testFallbackFaviconLoads() throws TimeoutException {
TestThreadUtils.runOnUiThreadBlocking(() -> {
mSiteSettingsClient = new ChromeSiteSettingsClient(
mSiteSettingsDelegate = new ChromeSiteSettingsDelegate(
mActivityTestRule.getActivity(), Profile.getLastUsedRegularProfile());
});
......@@ -57,7 +57,7 @@ public class ChromeSiteSettingsClientTest {
Bitmap[] holder = new Bitmap[1];
CallbackHelper helper = new CallbackHelper();
PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> {
mSiteSettingsClient.getFaviconImageForURL("url.with.no.favicon", favicon -> {
mSiteSettingsDelegate.getFaviconImageForURL("url.with.no.favicon", favicon -> {
holder[0] = favicon;
helper.notifyCalled();
});
......
......@@ -62,13 +62,11 @@ android_library("java") {
"java/src/org/chromium/components/browser_ui/site_settings/SiteDataCleaner.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsClient.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsFeatureList.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsHelpClient.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsPreferenceFragment.java",
"java/src/org/chromium/components/browser_ui/site_settings/StorageInfo.java",
"java/src/org/chromium/components/browser_ui/site_settings/TriStateSiteSettingsPreference.java",
"java/src/org/chromium/components/browser_ui/site_settings/WebappSettingsClient.java",
"java/src/org/chromium/components/browser_ui/site_settings/Website.java",
"java/src/org/chromium/components/browser_ui/site_settings/WebsiteAddress.java",
"java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java",
......
......@@ -97,7 +97,7 @@ public class AllSiteSettings extends SiteSettingsPreferenceFragment
private void getInfoForOrigins() {
WebsitePermissionsFetcher fetcher = new WebsitePermissionsFetcher(
getSiteSettingsClient().getBrowserContextHandle(), false);
getSiteSettingsDelegate().getBrowserContextHandle(), false);
fetcher.fetchPreferencesForCategory(mCategory, new ResultsPopulator());
}
......@@ -106,7 +106,7 @@ public class AllSiteSettings extends SiteSettingsPreferenceFragment
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Read which category we should be showing.
BrowserContextHandle browserContextHandle =
getSiteSettingsClient().getBrowserContextHandle();
getSiteSettingsDelegate().getBrowserContextHandle();
if (getArguments() != null) {
mCategory = SiteSettingsCategory.createFromPreferenceKey(
browserContextHandle, getArguments().getString(EXTRA_CATEGORY, ""));
......@@ -156,7 +156,7 @@ public class AllSiteSettings extends SiteSettingsPreferenceFragment
for (int i = 0; i < mWebsites.size(); i++) {
WebsitePreference preference = mWebsites.get(i);
preference.site().clearAllStoredData(
getSiteSettingsClient().getBrowserContextHandle(), () -> {
getSiteSettingsDelegate().getBrowserContextHandle(), () -> {
if (--numLeft[0] <= 0) getInfoForOrigins();
});
}
......@@ -170,7 +170,7 @@ public class AllSiteSettings extends SiteSettingsPreferenceFragment
long totalUsage = 0;
boolean includesApps = false;
Set<String> originsWithInstalledApp =
getSiteSettingsClient().getWebappSettingsClient().getOriginsWithInstalledApp();
getSiteSettingsDelegate().getOriginsWithInstalledApp();
if (mWebsites != null) {
for (WebsitePreference preference : mWebsites) {
totalUsage += preference.site().getTotalUsage();
......@@ -243,7 +243,7 @@ public class AllSiteSettings extends SiteSettingsPreferenceFragment
if (queryHasChanged) getInfoForOrigins();
});
if (getSiteSettingsClient().getSiteSettingsHelpClient().isHelpAndFeedbackEnabled()) {
if (getSiteSettingsDelegate().isHelpAndFeedbackEnabled()) {
MenuItem help = menu.add(
Menu.NONE, R.id.menu_id_site_settings_help, Menu.NONE, R.string.menu_help);
help.setIcon(VectorDrawableCompat.create(
......@@ -254,9 +254,7 @@ public class AllSiteSettings extends SiteSettingsPreferenceFragment
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.menu_id_site_settings_help) {
getSiteSettingsClient()
.getSiteSettingsHelpClient()
.launchSettingsHelpAndFeedbackActivity(getActivity());
getSiteSettingsDelegate().launchSettingsHelpAndFeedbackActivity(getActivity());
return true;
}
......@@ -318,7 +316,7 @@ public class AllSiteSettings extends SiteSettingsPreferenceFragment
for (Website site : sites) {
if (mSearch == null || mSearch.isEmpty() || site.getTitle().contains(mSearch)) {
websites.add(new WebsitePreference(
getStyledContext(), getSiteSettingsClient(), site, mCategory));
getStyledContext(), getSiteSettingsDelegate(), site, mCategory));
}
}
......
......@@ -62,7 +62,7 @@ public class ChosenObjectSettings extends SiteSettingsPreferenceFragment {
setDivider(null);
int contentSettingsType = getArguments().getInt(EXTRA_CATEGORY);
mCategory = SiteSettingsCategory.createFromContentSettingsType(
getSiteSettingsClient().getBrowserContextHandle(), contentSettingsType);
getSiteSettingsDelegate().getBrowserContextHandle(), contentSettingsType);
mObjectInfos =
(ArrayList<ChosenObjectInfo>) getArguments().getSerializable(EXTRA_OBJECT_INFOS);
checkObjectConsistency();
......@@ -118,7 +118,7 @@ public class ChosenObjectSettings extends SiteSettingsPreferenceFragment {
};
mSearchView.setOnQueryTextListener(queryTextListener);
if (getSiteSettingsClient().getSiteSettingsHelpClient().isHelpAndFeedbackEnabled()) {
if (getSiteSettingsDelegate().isHelpAndFeedbackEnabled()) {
MenuItem help = menu.add(
Menu.NONE, R.id.menu_id_site_settings_help, Menu.NONE, R.string.menu_help);
help.setIcon(VectorDrawableCompat.create(
......@@ -129,9 +129,7 @@ public class ChosenObjectSettings extends SiteSettingsPreferenceFragment {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.menu_id_site_settings_help) {
getSiteSettingsClient()
.getSiteSettingsHelpClient()
.launchSettingsHelpAndFeedbackActivity(getActivity());
getSiteSettingsDelegate().launchSettingsHelpAndFeedbackActivity(getActivity());
return true;
}
return false;
......@@ -159,7 +157,7 @@ public class ChosenObjectSettings extends SiteSettingsPreferenceFragment {
if (info.isManaged()) {
hasManagedObject = true;
} else {
info.revoke(getSiteSettingsClient().getBrowserContextHandle());
info.revoke(getSiteSettingsDelegate().getBrowserContextHandle());
}
}
......@@ -219,7 +217,7 @@ public class ChosenObjectSettings extends SiteSettingsPreferenceFragment {
*/
private void getInfo() {
WebsitePermissionsFetcher fetcher =
new WebsitePermissionsFetcher(getSiteSettingsClient().getBrowserContextHandle());
new WebsitePermissionsFetcher(getSiteSettingsDelegate().getBrowserContextHandle());
fetcher.fetchPreferencesForCategory(mCategory, new ResultsPopulator());
}
......@@ -276,18 +274,18 @@ public class ChosenObjectSettings extends SiteSettingsPreferenceFragment {
Website site = mSites.get(i);
ChosenObjectInfo info = mObjectInfos.get(i);
WebsitePreference preference = new WebsitePreference(
getStyledContext(), getSiteSettingsClient(), site, mCategory);
getStyledContext(), getSiteSettingsDelegate(), site, mCategory);
preference.getExtras().putSerializable(SingleWebsiteSettings.EXTRA_SITE, site);
preference.setFragment(SingleWebsiteSettings.class.getCanonicalName());
preference.setImageView(R.drawable.ic_delete_white_24dp,
R.string.website_settings_revoke_device_permission, (View view) -> {
info.revoke(getSiteSettingsClient().getBrowserContextHandle());
info.revoke(getSiteSettingsDelegate().getBrowserContextHandle());
getInfo();
});
preference.setManagedPreferenceDelegate(new ForwardingManagedPreferenceDelegate(
getSiteSettingsClient().getManagedPreferenceDelegate()) {
getSiteSettingsDelegate().getManagedPreferenceDelegate()) {
@Override
public boolean isPreferenceControlledByPolicy(Preference preference) {
return info.isManaged();
......
......@@ -51,7 +51,7 @@ public class SiteSettings
// Remove unsupported settings categories.
for (@SiteSettingsCategory.Type int type = 0; type < SiteSettingsCategory.Type.NUM_ENTRIES;
type++) {
if (!getSiteSettingsClient().isCategoryVisible(type)) {
if (!getSiteSettingsDelegate().isCategoryVisible(type)) {
getPreferenceScreen().removePreference(findPreference(type));
}
}
......@@ -61,7 +61,7 @@ public class SiteSettings
// Initialize the summary and icon for all preferences that have an
// associated content settings entry.
BrowserContextHandle browserContextHandle =
getSiteSettingsClient().getBrowserContextHandle();
getSiteSettingsDelegate().getBrowserContextHandle();
for (@Type int prefCategory = 0; prefCategory < Type.NUM_ENTRIES; prefCategory++) {
Preference p = findPreference(prefCategory);
int contentType = SiteSettingsCategory.contentSettingsType(prefCategory);
......@@ -94,7 +94,7 @@ public class SiteSettings
|| Type.NOTIFICATIONS == prefCategory
|| Type.AUGMENTED_REALITY == prefCategory)
&& SiteSettingsCategory
.createFromType(getSiteSettingsClient().getBrowserContextHandle(),
.createFromType(getSiteSettingsDelegate().getBrowserContextHandle(),
prefCategory)
.showPermissionBlockedMessage(getContext())) {
// Show 'disabled' message when permission is not granted in Android.
......
......@@ -4,6 +4,7 @@
package org.chromium.components.browser_ui.site_settings;
import android.app.Activity;
import android.graphics.Bitmap;
import androidx.annotation.Nullable;
......@@ -14,12 +15,13 @@ import org.chromium.components.content_settings.ContentSettingsType;
import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
import org.chromium.components.embedder_support.util.Origin;
import java.util.Set;
/**
* An interface implemented by the embedder that allows the Site Settings UI to access
* embedder-specific logic.
*/
// TODO(crbug.com/1077007): Clean up this interface.
public interface SiteSettingsClient {
public interface SiteSettingsDelegate {
/**
* @return The BrowserContextHandle that should be used to read and update settings.
*/
......@@ -31,17 +33,6 @@ public interface SiteSettingsClient {
*/
ManagedPreferenceDelegate getManagedPreferenceDelegate();
/**
* @return The SiteSettingsHelpClient that should be used to provide help functionality to the
* Site Settings UI.
*/
SiteSettingsHelpClient getSiteSettingsHelpClient();
/**
* @return The WebappSettingsClient that should be used when showing the Site Settings UI.
*/
WebappSettingsClient getWebappSettingsClient();
/**
* Asynchronously looks up the locally cached favicon image for the given URL, generating a
* fallback if one isn't available.
......@@ -92,4 +83,33 @@ public interface SiteSettingsClient {
* @return true if PageInfo V2 is enabled.
*/
boolean isPageInfoV2Enabled();
/**
* @return true if Help and Feedback links and menu items should be shown to the user.
*/
boolean isHelpAndFeedbackEnabled();
/**
* Launches a support page relevant to settings UI pages.
*
* @see org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncher#show
*/
void launchSettingsHelpAndFeedbackActivity(Activity currentActivity);
/**
* Launches a support page related to protected content.
*
* @see org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncher#show
*/
void launchProtectedContentHelpAndFeedbackActivity(Activity currentActivity);
/**
* @return The set of all origins that have a WebAPK or TWA installed.
*/
Set<String> getOriginsWithInstalledApp();
/**
* @return The set of all origins whose notification permissions are delegated to another app.
*/
Set<String> getAllDelegatedNotificationOrigins();
}
// Copyright 2020 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.components.browser_ui.site_settings;
import android.app.Activity;
/**
* An interface that allows the Site Settings UI to link to and open embedder-specific help pages.
*/
public interface SiteSettingsHelpClient {
/**
* @return true if Help and Feedback links and menu items should be shown to the user.
*/
boolean isHelpAndFeedbackEnabled();
/**
* Launches a support page relevant to settings UI pages.
*
* @see org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncher#show
*/
void launchSettingsHelpAndFeedbackActivity(Activity currentActivity);
/**
* Launches a support page related to protected content.
*
* @see org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncher#show
*/
void launchProtectedContentHelpAndFeedbackActivity(Activity currentActivity);
}
......@@ -10,23 +10,23 @@ import androidx.preference.PreferenceFragmentCompat;
* Preference fragment for showing the Site Settings UI.
*/
public abstract class SiteSettingsPreferenceFragment extends PreferenceFragmentCompat {
private SiteSettingsClient mSiteSettingsClient;
private SiteSettingsDelegate mSiteSettingsDelegate;
/**
* Sets the SiteSettingsClient instance this Fragment should use.
* Sets the SiteSettingsDelegate instance this Fragment should use.
*
* This should be called by the embedding Activity.
*/
public void setSiteSettingsClient(SiteSettingsClient client) {
assert mSiteSettingsClient == null;
mSiteSettingsClient = client;
public void setSiteSettingsDelegate(SiteSettingsDelegate client) {
assert mSiteSettingsDelegate == null;
mSiteSettingsDelegate = client;
}
/**
* @return the SiteSettingsClient instance to use when rendering the Site Settings UI.
* @return the SiteSettingsDelegate instance to use when rendering the Site Settings UI.
*/
protected SiteSettingsClient getSiteSettingsClient() {
assert mSiteSettingsClient != null : "SiteSettingsClient not set";
return mSiteSettingsClient;
protected SiteSettingsDelegate getSiteSettingsDelegate() {
assert mSiteSettingsDelegate != null : "SiteSettingsDelegate not set";
return mSiteSettingsDelegate;
}
}
// Copyright 2020 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.components.browser_ui.site_settings;
import java.util.Set;
/**
* An interface implemented by the embedder that allows the Site Settings UI to access
* Webapp (TWA/PWA) related embedder-specific logic.
*/
public interface WebappSettingsClient {
/**
* @return The set of all origins that have a WebAPK or TWA installed.
*/
Set<String> getOriginsWithInstalledApp();
/**
* @return The set of all origins whose notification permissions are delegated to another app.
*/
Set<String> getAllDelegatedNotificationOrigins();
}
......@@ -26,7 +26,7 @@ import org.chromium.components.browser_ui.settings.ChromeImageViewPreference;
* can be used.
*/
class WebsitePreference extends ChromeImageViewPreference {
private final SiteSettingsClient mSiteSettingsClient;
private final SiteSettingsDelegate mSiteSettingsDelegate;
private final Website mSite;
private final SiteSettingsCategory mCategory;
......@@ -37,10 +37,10 @@ class WebsitePreference extends ChromeImageViewPreference {
// Whether the favicon has been fetched already.
private boolean mFaviconFetched;
WebsitePreference(Context context, SiteSettingsClient siteSettingsClient, Website site,
WebsitePreference(Context context, SiteSettingsDelegate siteSettingsClient, Website site,
SiteSettingsCategory category) {
super(context);
mSiteSettingsClient = siteSettingsClient;
mSiteSettingsDelegate = siteSettingsClient;
mSite = site;
mCategory = category;
setWidgetLayoutResource(R.layout.website_features);
......@@ -137,7 +137,7 @@ class WebsitePreference extends ChromeImageViewPreference {
if (!mFaviconFetched) {
// Start the favicon fetching. Will respond in onFaviconAvailable.
mSiteSettingsClient.getFaviconImageForURL(faviconUrl(), this::onFaviconAvailable);
mSiteSettingsDelegate.getFaviconImageForURL(faviconUrl(), this::onFaviconAvailable);
mFaviconFetched = true;
}
......
......@@ -14,7 +14,7 @@ import androidx.fragment.app.FragmentManager;
import org.chromium.base.Callback;
import org.chromium.base.Consumer;
import org.chromium.components.browser_ui.site_settings.SiteSettingsClient;
import org.chromium.components.browser_ui.site_settings.SiteSettingsDelegate;
import org.chromium.components.content_settings.CookieControlsBridge;
import org.chromium.components.content_settings.CookieControlsObserver;
import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
......@@ -234,10 +234,10 @@ public abstract class PageInfoControllerDelegate {
public abstract BrowserContextHandle getBrowserContext();
/**
* @return Returns the SiteSettingsClient for this page info.
* @return Returns the SiteSettingsDelegate for this page info.
*/
@NonNull
public abstract SiteSettingsClient getSiteSettingsClient();
public abstract SiteSettingsDelegate getSiteSettingsDelegate();
/**
* Fetches a favicon for the current page and passes it to callback.
......
......@@ -73,7 +73,7 @@ public class PageInfoCookiesController
public View createViewForSubpage(ViewGroup parent) {
assert mSubPage == null;
mSubPage = new PageInfoCookiesPreference();
mSubPage.setSiteSettingsClient(mDelegate.getSiteSettingsClient());
mSubPage.setSiteSettingsDelegate(mDelegate.getSiteSettingsDelegate());
mDelegate.getFragmentManager().beginTransaction().add(mSubPage, null).commitNow();
PageInfoCookiesPreference.PageInfoCookiesViewParams params =
......
......@@ -47,8 +47,8 @@ public class PageInfoCookiesPreference extends SiteSettingsPreferenceFragment {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
// Remove this Preference if it is restored without SiteSettingsClient.
if (getSiteSettingsClient() == null) {
// Remove this Preference if it is restored without SiteSettingsDelegate.
if (getSiteSettingsDelegate() == null) {
getParentFragmentManager().beginTransaction().remove(this).commit();
return;
}
......
......@@ -53,7 +53,7 @@ public class PageInfoPermissionsController
Bundle fragmentArgs = SingleWebsiteSettings.createFragmentArgsForSite(mPageUrl);
mSubPage = (SingleWebsiteSettings) Fragment.instantiate(
mRowView.getContext(), SingleWebsiteSettings.class.getName(), fragmentArgs);
mSubPage.setSiteSettingsClient(mDelegate.getSiteSettingsClient());
mSubPage.setSiteSettingsDelegate(mDelegate.getSiteSettingsDelegate());
mSubPage.setHideNonPermissionPreferences(true);
mSubPage.setWebsiteSettingsObserver(this);
mDelegate.getFragmentManager().beginTransaction().add(mSubPage, null).commitNow();
......
......@@ -169,7 +169,7 @@ android_library("java") {
"org/chromium/weblayer_private/permissions/PermissionRequestUtils.java",
"org/chromium/weblayer_private/resources/ResourceMapper.java",
"org/chromium/weblayer_private/settings/SettingsFragmentImpl.java",
"org/chromium/weblayer_private/settings/WebLayerSiteSettingsClient.java",
"org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java",
_bundle_utils_output,
]
resources_package = "org.chromium.weblayer_private"
......
......@@ -19,7 +19,7 @@ import org.chromium.base.Callback;
import org.chromium.base.StrictModeContext;
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.SiteSettingsDelegate;
import org.chromium.components.content_settings.ContentSettingsType;
import org.chromium.components.content_settings.CookieControlsBridge;
import org.chromium.components.content_settings.CookieControlsObserver;
......@@ -31,7 +31,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.url.GURL;
import org.chromium.weblayer_private.interfaces.ObjectWrapper;
import org.chromium.weblayer_private.interfaces.SettingsIntentHelper;
import org.chromium.weblayer_private.settings.WebLayerSiteSettingsClient;
import org.chromium.weblayer_private.settings.WebLayerSiteSettingsDelegate;
/**
* WebLayer's customization of PageInfoControllerDelegate.
......@@ -120,8 +120,8 @@ public class PageInfoControllerDelegateImpl extends PageInfoControllerDelegate {
*/
@Override
@NonNull
public SiteSettingsClient getSiteSettingsClient() {
return new WebLayerSiteSettingsClient(getBrowserContext());
public SiteSettingsDelegate getSiteSettingsDelegate() {
return new WebLayerSiteSettingsDelegate(getBrowserContext());
}
@Override
......
......@@ -170,7 +170,7 @@ public class SettingsFragmentImpl extends FragmentHostingRemoteFragmentImpl {
settingsFragment.setArguments(mFragmentArguments);
if (settingsFragment instanceof SiteSettingsPreferenceFragment) {
((SiteSettingsPreferenceFragment) settingsFragment)
.setSiteSettingsClient(new WebLayerSiteSettingsClient(mProfile));
.setSiteSettingsDelegate(new WebLayerSiteSettingsDelegate(mProfile));
}
getSupportFragmentManager()
.beginTransaction()
......
......@@ -14,9 +14,7 @@ import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory.Type;
import org.chromium.components.browser_ui.site_settings.SiteSettingsClient;
import org.chromium.components.browser_ui.site_settings.SiteSettingsHelpClient;
import org.chromium.components.browser_ui.site_settings.WebappSettingsClient;
import org.chromium.components.browser_ui.site_settings.SiteSettingsDelegate;
import org.chromium.components.content_settings.ContentSettingsType;
import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
import org.chromium.components.embedder_support.util.Origin;
......@@ -27,17 +25,17 @@ import java.util.Collections;
import java.util.Set;
/**
* A SiteSettingsClient instance that contains WebLayer-specific Site Settings logic.
* A SiteSettingsDelegate instance that contains WebLayer-specific Site Settings logic.
*/
public class WebLayerSiteSettingsClient implements SiteSettingsClient, ManagedPreferenceDelegate,
SiteSettingsHelpClient, WebappSettingsClient {
public class WebLayerSiteSettingsDelegate
implements SiteSettingsDelegate, ManagedPreferenceDelegate {
private final BrowserContextHandle mBrowserContextHandle;
public WebLayerSiteSettingsClient(BrowserContextHandle browserContextHandle) {
public WebLayerSiteSettingsDelegate(BrowserContextHandle browserContextHandle) {
mBrowserContextHandle = browserContextHandle;
}
// SiteSettingsClient implementation:
// SiteSettingsDelegate implementation:
@Override
public BrowserContextHandle getBrowserContextHandle() {
......@@ -49,16 +47,6 @@ public class WebLayerSiteSettingsClient implements SiteSettingsClient, ManagedPr
return this;
}
@Override
public SiteSettingsHelpClient getSiteSettingsHelpClient() {
return this;
}
@Override
public WebappSettingsClient getWebappSettingsClient() {
return this;
}
@Override
public void getFaviconImageForURL(String faviconUrl, Callback<Bitmap> callback) {
// We don't currently support favicons on WebLayer.
......@@ -134,9 +122,6 @@ public class WebLayerSiteSettingsClient implements SiteSettingsClient, ManagedPr
return false;
}
// SiteSettingsHelpClient implementation:
// A no-op since WebLayer doesn't have help pages.
@Override
public boolean isHelpAndFeedbackEnabled() {
return false;
......@@ -148,9 +133,6 @@ public class WebLayerSiteSettingsClient implements SiteSettingsClient, ManagedPr
@Override
public void launchProtectedContentHelpAndFeedbackActivity(Activity currentActivity) {}
// WebappSettingsClient implementation:
// A no-op since WebLayer doesn't support webapps.
@Override
public Set<String> getOriginsWithInstalledApp() {
return Collections.EMPTY_SET;
......
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