136 lines
7.6 KiB
Diff
136 lines
7.6 KiB
Diff
|
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||
|
Date: Sat, 28 Dec 2019 10:23:04 +0100
|
||
|
Subject: Show site settings for cookies, javascript and ads
|
||
|
|
||
|
Avoid displaying info about intrusive ads
|
||
|
|
||
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||
|
---
|
||
|
.../site_settings/SingleWebsiteSettings.java | 52 +++++++++----------
|
||
|
.../browser_ui/site_settings/Website.java | 15 ++++--
|
||
|
2 files changed, 36 insertions(+), 31 deletions(-)
|
||
|
|
||
|
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
|
||
|
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
|
||
|
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
|
||
|
@@ -548,6 +548,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
|
||
|
setUpSoundPreference(preference);
|
||
|
} else if (type == ContentSettingsType.JAVASCRIPT) {
|
||
|
setUpJavascriptPreference(preference);
|
||
|
+ } else if (type == ContentSettingsType.COOKIES) {
|
||
|
+ setUpCookiesPreference(preference);
|
||
|
} else if (type == ContentSettingsType.GEOLOCATION) {
|
||
|
setUpLocationPreference(preference);
|
||
|
} else if (type == ContentSettingsType.NOTIFICATIONS) {
|
||
|
@@ -939,16 +941,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
|
||
|
private void setUpAdsInformationalBanner() {
|
||
|
// Add the informational banner which shows at the top of the UI if ad blocking is
|
||
|
// activated on this site.
|
||
|
- boolean adBlockingActivated = SiteSettingsCategory.adsCategoryEnabled()
|
||
|
- && WebsitePreferenceBridge.getAdBlockingActivated(
|
||
|
- getSiteSettingsDelegate().getBrowserContextHandle(),
|
||
|
- mSite.getAddress().getOrigin())
|
||
|
- && findPreference(getPreferenceKey(ContentSettingsType.ADS)) != null;
|
||
|
-
|
||
|
- if (!adBlockingActivated) {
|
||
|
removePreferenceSafely(PREF_INTRUSIVE_ADS_INFO);
|
||
|
removePreferenceSafely(PREF_INTRUSIVE_ADS_INFO_DIVIDER);
|
||
|
- }
|
||
|
}
|
||
|
|
||
|
private SiteSettingsCategory getWarningCategory() {
|
||
|
@@ -1123,17 +1117,35 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
|
||
|
@Nullable
|
||
|
Integer currentValue =
|
||
|
mSite.getContentSetting(browserContextHandle, ContentSettingsType.JAVASCRIPT);
|
||
|
- // If Javascript is blocked by default, then always show a Javascript permission.
|
||
|
- // To do this, set it to the default value (blocked).
|
||
|
- if ((currentValue == null)
|
||
|
- && !WebsitePreferenceBridge.isCategoryEnabled(
|
||
|
- browserContextHandle, ContentSettingsType.JAVASCRIPT)) {
|
||
|
- currentValue = ContentSettingValues.BLOCK;
|
||
|
+ // Always show the Javascript permission
|
||
|
+ if (currentValue == null) {
|
||
|
+ currentValue = WebsitePreferenceBridge.isCategoryEnabled(
|
||
|
+ browserContextHandle, ContentSettingsType.JAVASCRIPT)
|
||
|
+ ? ContentSettingValues.ALLOW
|
||
|
+ : ContentSettingValues.BLOCK;
|
||
|
}
|
||
|
// Not possible to embargo JAVASCRIPT.
|
||
|
setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */);
|
||
|
}
|
||
|
|
||
|
+ private void setUpCookiesPreference(Preference preference) {
|
||
|
+ BrowserContextHandle browserContextHandle =
|
||
|
+ getSiteSettingsDelegate().getBrowserContextHandle();
|
||
|
+ @ContentSettingValues
|
||
|
+ @Nullable
|
||
|
+ Integer currentValue =
|
||
|
+ mSite.getContentSetting(browserContextHandle, ContentSettingsType.COOKIES);
|
||
|
+ // Always show the cookies permission
|
||
|
+ if (currentValue == null || currentValue == ContentSettingValues.DEFAULT) {
|
||
|
+ currentValue = WebsitePreferenceBridge.isCategoryEnabled(
|
||
|
+ browserContextHandle, ContentSettingsType.COOKIES)
|
||
|
+ ? ContentSettingValues.ALLOW
|
||
|
+ : ContentSettingValues.BLOCK;
|
||
|
+ }
|
||
|
+ // Not possible to embargo COOKIES.
|
||
|
+ setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */);
|
||
|
+ }
|
||
|
+
|
||
|
/**
|
||
|
* Updates the ads list preference based on whether the site is a candidate for blocking. This
|
||
|
* has some custom behavior.
|
||
|
@@ -1149,22 +1161,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
|
||
|
setupContentSettingsPreference(preference, null, false);
|
||
|
return;
|
||
|
}
|
||
|
- // If the ad blocker is activated, then this site will have ads blocked unless there is an
|
||
|
- // explicit permission disallowing the blocking.
|
||
|
- boolean activated = WebsitePreferenceBridge.getAdBlockingActivated(
|
||
|
- browserContextHandle, mSite.getAddress().getOrigin());
|
||
|
@ContentSettingValues
|
||
|
@Nullable
|
||
|
Integer permission = mSite.getContentSetting(browserContextHandle, ContentSettingsType.ADS);
|
||
|
|
||
|
- // If |permission| is null, there is no explicit (non-default) permission set for this site.
|
||
|
- // If the site is not considered a candidate for blocking, do the standard thing and remove
|
||
|
- // the preference.
|
||
|
- if (permission == null && !activated) {
|
||
|
- setupContentSettingsPreference(preference, null, false);
|
||
|
- return;
|
||
|
- }
|
||
|
-
|
||
|
// However, if the blocking is activated, we still want to show the permission, even if it
|
||
|
// is in the default state.
|
||
|
if (permission == null) {
|
||
|
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
|
||
|
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
|
||
|
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
|
||
|
@@ -223,13 +223,18 @@ public final class Website implements WebsiteEntry {
|
||
|
|
||
|
ContentSettingException exception = getContentSettingException(type);
|
||
|
if (type == ContentSettingsType.ADS) {
|
||
|
- // It is possible to set the permission without having an existing exception,
|
||
|
- // because we can show the BLOCK state even when this permission is set to the
|
||
|
- // default. In that case, just set an exception now to BLOCK to enable changing the
|
||
|
- // permission.
|
||
|
+ // It is possible to set the permission without having an existing exception
|
||
|
if (exception == null) {
|
||
|
exception = new ContentSettingException(ContentSettingsType.ADS,
|
||
|
- getAddress().getOrigin(), ContentSettingValues.BLOCK, "",
|
||
|
+ getAddress().getOrigin(), value, "",
|
||
|
+ /*isEmbargoed=*/false);
|
||
|
+ setContentSettingException(type, exception);
|
||
|
+ }
|
||
|
+ } else if (type == ContentSettingsType.COOKIES) {
|
||
|
+ // It is possible to set the permission without having an existing exception
|
||
|
+ if (exception == null) {
|
||
|
+ exception = new ContentSettingException(ContentSettingsType.COOKIES,
|
||
|
+ getAddress().getOrigin(), value, "",
|
||
|
/*isEmbargoed=*/false);
|
||
|
setContentSettingException(type, exception);
|
||
|
}
|
||
|
--
|
||
|
2.25.1
|