From 617ea58d201c204d988561a29bf6d98a26aa0c87 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Sat, 17 Jun 2023 16:28:04 +0200 Subject: [PATCH] stage 2 - windows version --- .../00Viewport-Protection-Site-Setting.patch | 297 +----- .../00WIN-ADDTO-Add-webGL-site-setting.patch | 241 ----- ...00WIN-ADDTO-Add-webRTC-site-settings.patch | 241 ----- ...0WIN-ADDTO-JIT-site-settings--fixup-.patch | 22 - .../00WIN-ADDTO-JIT-site-settings.patch | 271 ----- ...Revert-the-removal-to-block-autoplay.patch | 258 ----- .../00WIN-ADDTO-Timezone-customization.patch | 254 ----- build/patches/00bromite-build-utils.patch | 80 +- build/patches/Add-webGL-site-setting.patch | 64 +- build/patches/Add-webRTC-site-settings.patch | 68 +- .../Content-settings-infrastructure.patch | 925 ++++++++++++++---- build/patches/JIT-site-settings.patch | 84 +- ...moval-of-an-option-to-block-autoplay.patch | 73 +- build/patches/Site-setting-for-images.patch | 68 +- build/patches/Timezone-customization.patch | 123 +-- 15 files changed, 1115 insertions(+), 1954 deletions(-) delete mode 100644 build/patches/00WIN-ADDTO-Add-webGL-site-setting.patch delete mode 100644 build/patches/00WIN-ADDTO-Add-webRTC-site-settings.patch delete mode 100644 build/patches/00WIN-ADDTO-JIT-site-settings--fixup-.patch delete mode 100644 build/patches/00WIN-ADDTO-JIT-site-settings.patch delete mode 100644 build/patches/00WIN-ADDTO-Revert-the-removal-to-block-autoplay.patch delete mode 100644 build/patches/00WIN-ADDTO-Timezone-customization.patch diff --git a/build/patches/00Viewport-Protection-Site-Setting.patch b/build/patches/00Viewport-Protection-Site-Setting.patch index 88f9d653..d183cad0 100644 --- a/build/patches/00Viewport-Protection-Site-Setting.patch +++ b/build/patches/00Viewport-Protection-Site-Setting.patch @@ -1,258 +1,26 @@ From: Your Name -Date: Tue, 20 Dec 2022 14:27:02 +0000 +Date: Fri, 16 Jun 2023 15:56:35 +0000 Subject: Viewport Protection Site Setting --- - chrome/app/settings_strings.grdp | 19 ++++ - chrome/browser/resources/settings/icons.html | 2 + - .../settings/privacy_page/privacy_page.html | 22 +++++ - chrome/browser/resources/settings/route.ts | 1 + - chrome/browser/resources/settings/router.ts | 1 + - .../site_settings/category_default_setting.ts | 1 + - .../settings/site_settings/constants.ts | 1 + - .../settings_category_default_radio_group.ts | 1 + - .../settings/site_settings/site_details.html | 5 ++ - .../site_settings_page/site_settings_page.ts | 9 ++ - .../site_settings_page_util.ts | 2 + - .../views/page_info/page_info_view_factory.cc | 3 + - .../settings_localized_strings_provider.cc | 7 ++ - .../ui/webui/settings/site_settings_helper.cc | 1 + - .../impl/BromiteViewportContentSetting.java | 88 +++++++++++++++++++ - .../bromite_content_settings/viewport.grdp | 18 ++++ - .../bromite_content_settings/viewport.inc | 13 +++ + .../impl/BromiteViewportContentSetting.java | 93 +++++++++++++++++++ + .../bromite_content_settings/viewport.grdp | 27 ++++++ + .../bromite_content_settings/viewport.inc | 22 +++++ .../bromite_content_settings/VIEWPORT.inc | 1 + third_party/blink/common/features.cc | 2 +- .../renderer/core/frame/local_dom_window.cc | 2 + third_party/blink/renderer/core/page/page.cc | 3 + - 21 files changed, 201 insertions(+), 1 deletion(-) + 7 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteViewportContentSetting.java - create mode 100644 components/browser_ui/strings/android/bromite_content_settings/viewport.grdp + create mode 100644 components/browser_ui/strings/bromite_content_settings/viewport.grdp create mode 100644 components/content_settings/core/browser/bromite_content_settings/viewport.inc create mode 100644 components/content_settings/core/common/bromite_content_settings/VIEWPORT.inc -diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp ---- a/chrome/app/settings_strings.grdp -+++ b/chrome/app/settings_strings.grdp -@@ -4434,6 +4434,25 @@ - Not allowed to use WebRTC - - -+ -+ Viewport Protection -+ -+ -+ Enable Viewport Protection -+ -+ -+ Viewport Protection is enabled -+ -+ -+ Viewport Protection is disabled -+ -+ -+ Allowed to use Viewport Protection -+ -+ -+ Not allowed to use Viewport Protection -+ -+ - - - -diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html ---- a/chrome/browser/resources/settings/icons.html -+++ b/chrome/browser/resources/settings/icons.html -@@ -201,6 +201,8 @@ NOTE: Chrome OS icons go in ./chromeos/os_icons.html. - - - -+ -+ - - - -diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html ---- a/chrome/browser/resources/settings/privacy_page/privacy_page.html -+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1214,4 +1214,26 @@ - - - -+ - -diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts ---- a/chrome/browser/resources/settings/route.ts -+++ b/chrome/browser/resources/settings/route.ts -@@ -127,6 +127,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS_TIMEZONE_OVERRIDE = r.SITE_SETTINGS.createChild('timezone-override'); - r.SITE_SETTINGS_WEBGL = r.SITE_SETTINGS.createChild('webgl'); - r.SITE_SETTINGS_WEBRTC = r.SITE_SETTINGS.createChild('webrtc'); -+ r.SITE_SETTINGS_VIEWPORT = r.SITE_SETTINGS.createChild('viewport-protection'); - } - - /** -diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts ---- a/chrome/browser/resources/settings/router.ts -+++ b/chrome/browser/resources/settings/router.ts -@@ -109,6 +109,7 @@ export interface SettingsRoutes { - SITE_SETTINGS_TIMEZONE_OVERRIDE: Route; - SITE_SETTINGS_WEBGL: Route; - SITE_SETTINGS_WEBRTC: Route; -+ SITE_SETTINGS_VIEWPORT: Route; - } - - /** Class for navigable routes. */ -diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts ---- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts -+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts -@@ -200,6 +200,7 @@ export class CategoryDefaultSettingElement extends - case ContentSettingsTypes.TIMEZONE_OVERRIDE: - case ContentSettingsTypes.WEBGL: - case ContentSettingsTypes.WEBRTC: -+ case ContentSettingsTypes.VIEWPORT: - // "Allowed" vs "Blocked". - this.browserProxy.setDefaultValueForContentType( - this.category, -diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts ---- a/chrome/browser/resources/settings/site_settings/constants.ts -+++ b/chrome/browser/resources/settings/site_settings/constants.ts -@@ -51,6 +51,7 @@ export enum ContentSettingsTypes { - TIMEZONE_OVERRIDE = 'timezone-override', - WEBGL = 'webgl', - WEBRTC = 'webrtc', -+ VIEWPORT = 'viewport', - - // The following items are not in the C++ kContentSettingsTypeGroupNames, but - // are used everywhere where ContentSettingsTypes is used in JS. -diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ---- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -144,6 +144,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends - case ContentSettingsTypes.TIMEZONE_OVERRIDE: - case ContentSettingsTypes.WEBGL: - case ContentSettingsTypes.WEBRTC: -+ case ContentSettingsTypes.VIEWPORT: - // "Allowed" vs "Blocked". - return ContentSetting.ALLOW; - case ContentSettingsTypes.AR: -diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html ---- a/chrome/browser/resources/settings/site_settings/site_details.html -+++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -291,4 +291,9 @@ - icon="settings:webrtc" - label="$i18n{siteSettingsWebRTC}"> - -+ -+ - -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -374,6 +374,14 @@ function getCategoryItemMap(): Map { - enabledLabel: 'siteSettingsWebRTCAllowed', - disabledLabel: 'siteSettingsWebRTCBlocked', - }, -+ { -+ route: routes.SITE_SETTINGS_VIEWPORT, -+ id: Id.VIEWPORT, -+ label: 'siteSettingsViewportProtection', -+ icon: 'settings:viewport-protection', -+ enabledLabel: 'siteSettingsViewportProtectionAllowed', -+ disabledLabel: 'siteSettingsViewportProtectionBlocked', -+ }, - ]; - - categoryItemMap = new Map(categoryList.map(item => [item.id, item])); -@@ -472,6 +480,7 @@ export class SettingsSiteSettingsPageElement extends - Id.TIMEZONE_OVERRIDE, - Id.WEBGL, - Id.WEBRTC, -+ Id.VIEWPORT, - ]), - }; - }, -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -@@ -87,6 +87,8 @@ export function getLocalizationStringForContentType( - return 'siteSettingsWebglMidSentence'; - case ContentSettingsTypes.WEBRTC: - return 'siteSettingsWebRTCMidSentence'; -+ case ContentSettingsTypes.VIEWPORT: -+ return 'siteSettingsViewportProtectionMidSentence'; - // The following members do not have a mid-sentence localization. - case ContentSettingsTypes.ANTI_ABUSE: - case ContentSettingsTypes.PDF_DOCUMENTS: -diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc ---- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc -+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -384,6 +384,9 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - case ContentSettingsType::WEBRTC: - icon = &vector_icons::kProtectedContentIcon; - break; -+ case ContentSettingsType::VIEWPORT: -+ icon = &vector_icons::kProtectedContentIcon; -+ break; - default: - // All other |ContentSettingsType|s do not have icons on desktop or are - // not shown in the Page Info bubble. -diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ---- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2556,6 +2556,13 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source, - {"siteSettingsWebRTCAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_WEBRTC_ALLOWED_EXCEPTIONS}, - {"siteSettingsWebRTCBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_WEBRTC_BLOCKED_EXCEPTIONS}, - {"siteSettingsWebRTCMidSentence", IDS_SITE_SETTINGS_WEBRTC_TITLE}, -+ {"siteSettingsViewportProtection", IDS_SITE_SETTINGS_VIEWPORT_PROTECTION_TITLE}, -+ {"siteSettingsViewportProtectionDescription", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_DESCRIPTION}, -+ {"siteSettingsViewportProtectionAllowed", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_ALLOWED}, -+ {"siteSettingsViewportProtectionBlocked", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_BLOCKED}, -+ {"siteSettingsViewportProtectionAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_ALLOWED_EXCEPTIONS}, -+ {"siteSettingsViewportProtectionBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_BLOCKED_EXCEPTIONS}, -+ {"siteSettingsViewportProtectionMidSentence", IDS_SITE_SETTINGS_VIEWPORT_PROTECTION_TITLE}, - {"addSite", IDS_SETTINGS_ADD_SITE}, - {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE}, - #if BUILDFLAG(IS_CHROMEOS_ASH) -diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc ---- a/chrome/browser/ui/webui/settings/site_settings_helper.cc -+++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -130,6 +130,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override"}, - {ContentSettingsType::WEBGL, "webgl"}, - {ContentSettingsType::WEBRTC, "webrtc"}, -+ {ContentSettingsType::VIEWPORT, "viewport"}, - - // Add new content settings here if a corresponding Javascript string - // representation for it is not required, for example if the content setting diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteViewportContentSetting.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteViewportContentSetting.java new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteViewportContentSetting.java -@@ -0,0 +1,88 @@ +@@ -0,0 +1,93 @@ +/* + This file is part of Bromite. + @@ -322,6 +90,11 @@ new file mode 100644 + } + + @Override ++ public int getCategoryDescription() { ++ return R.string.settings_site_settings_viewport_protection_description; ++ } ++ ++ @Override + public boolean requiresTriStateContentSetting() { + return false; + } @@ -341,34 +114,43 @@ new file mode 100644 + return value != ContentSettingValues.BLOCK; + } +} -diff --git a/components/browser_ui/strings/android/bromite_content_settings/viewport.grdp b/components/browser_ui/strings/android/bromite_content_settings/viewport.grdp +diff --git a/components/browser_ui/strings/bromite_content_settings/viewport.grdp b/components/browser_ui/strings/bromite_content_settings/viewport.grdp new file mode 100644 --- /dev/null -+++ b/components/browser_ui/strings/android/bromite_content_settings/viewport.grdp -@@ -0,0 +1,18 @@ ++++ b/components/browser_ui/strings/bromite_content_settings/viewport.grdp +@@ -0,0 +1,27 @@ + + -+ ++ + Viewport Size Protection + -+ ++ + Viewport Size Protection + -+ ++ + Viewport Size Protection + -+ ++ ++ Hides the screen size by randomly changing the values for each website ++ ++ + Enabled + -+ ++ + Disabled + ++ ++ Viewport Protection is enabled with these websites ++ ++ ++ Not allowed to use Viewport Protection ++ + diff --git a/components/content_settings/core/browser/bromite_content_settings/viewport.inc b/components/content_settings/core/browser/bromite_content_settings/viewport.inc new file mode 100644 --- /dev/null +++ b/components/content_settings/core/browser/bromite_content_settings/viewport.inc -@@ -0,0 +1,13 @@ +@@ -0,0 +1,22 @@ + Register(ContentSettingsType::VIEWPORT, "viewport", CONTENT_SETTING_ALLOW, + WebsiteSettingsInfo::SYNCABLE, + /*allowlisted_schemes=*/{}, @@ -377,11 +159,20 @@ new file mode 100644 + WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -+ /*show_into_info_page*/ true, -+ /*is_renderer_content_setting*/ true, -+ /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_VIEWPORT, -+ /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_VIEWPORT_MID_SENTENCE); ++ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ ++ content_settings::WebsiteSettingsRegistry::GetInstance() ++ ->GetMutable(ContentSettingsType::VIEWPORT) ++ ->set_show_into_info_page() ++ .set_desktop_ui() ++ .set_is_renderer_content_setting() ++ .set_title_ui(IDS_SITE_SETTINGS_TYPE_VIEWPORT) ++ .set_description_ui(IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_DESCRIPTION) ++ .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_VIEWPORT_ENABLED) ++ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_VIEWPORT_DISABLED) ++ .set_allowed_exceptions_ui(IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_ALLOWED_EXCEPTIONS) ++ .set_blocked_exceptions_ui(IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_BLOCKED_EXCEPTIONS) ++ .set_mid_sentence_ui(IDS_SITE_SETTINGS_TYPE_VIEWPORT_MID_SENTENCE); diff --git a/components/content_settings/core/common/bromite_content_settings/VIEWPORT.inc b/components/content_settings/core/common/bromite_content_settings/VIEWPORT.inc new file mode 100644 --- /dev/null diff --git a/build/patches/00WIN-ADDTO-Add-webGL-site-setting.patch b/build/patches/00WIN-ADDTO-Add-webGL-site-setting.patch deleted file mode 100644 index 4d3f8616..00000000 --- a/build/patches/00WIN-ADDTO-Add-webGL-site-setting.patch +++ /dev/null @@ -1,241 +0,0 @@ -From: Your Name -Date: Thu, 13 Oct 2022 08:12:18 +0000 -Subject: WIN ADDTO Add webGL site setting - ---- - chrome/app/settings_strings.grdp | 19 ++++++++++++++++ - chrome/browser/resources/settings/icons.html | 2 ++ - .../settings/privacy_page/privacy_page.html | 22 +++++++++++++++++++ - chrome/browser/resources/settings/route.ts | 1 + - chrome/browser/resources/settings/router.ts | 1 + - .../site_settings/category_default_setting.ts | 1 + - .../settings/site_settings/constants.ts | 1 + - .../settings_category_default_radio_group.ts | 1 + - .../settings/site_settings/site_details.html | 5 +++++ - .../site_settings_page/site_settings_page.ts | 9 ++++++++ - .../site_settings_page_util.ts | 2 ++ - .../views/page_info/page_info_view_factory.cc | 3 +++ - .../settings_localized_strings_provider.cc | 7 ++++++ - .../ui/webui/settings/site_settings_helper.cc | 1 + - 14 files changed, 75 insertions(+) - -diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp ---- a/chrome/app/settings_strings.grdp -+++ b/chrome/app/settings_strings.grdp -@@ -4396,6 +4396,25 @@ - Random Timezone override - - -+ -+ Webgl -+ -+ -+ Enable Webgl -+ -+ -+ Webgl is enabled -+ -+ -+ Webgl is disabled -+ -+ -+ Allowed to use webgl -+ -+ -+ Not allowed to use webgl -+ -+ - - - -diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html ---- a/chrome/browser/resources/settings/icons.html -+++ b/chrome/browser/resources/settings/icons.html -@@ -197,6 +197,8 @@ NOTE: Chrome OS icons go in ./chromeos/os_icons.html. - - - -+ -+ - - - -diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html ---- a/chrome/browser/resources/settings/privacy_page/privacy_page.html -+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1170,4 +1170,26 @@ - - - -+ - -diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts ---- a/chrome/browser/resources/settings/route.ts -+++ b/chrome/browser/resources/settings/route.ts -@@ -125,6 +125,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS_AUTOPLAY = r.SITE_SETTINGS.createChild('autoplay'); - r.SITE_SETTINGS_JAVASCRIPT_JIT = r.SITE_SETTINGS.createChild('javascript-jit'); - r.SITE_SETTINGS_TIMEZONE_OVERRIDE = r.SITE_SETTINGS.createChild('timezone-override'); -+ r.SITE_SETTINGS_WEBGL = r.SITE_SETTINGS.createChild('webgl'); - } - - /** -diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts ---- a/chrome/browser/resources/settings/router.ts -+++ b/chrome/browser/resources/settings/router.ts -@@ -107,6 +107,7 @@ export interface SettingsRoutes { - SITE_SETTINGS_AUTOPLAY: Route; - SITE_SETTINGS_JAVASCRIPT_JIT: Route; - SITE_SETTINGS_TIMEZONE_OVERRIDE: Route; -+ SITE_SETTINGS_WEBGL: Route; - } - - /** Class for navigable routes. */ -diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts ---- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts -+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts -@@ -198,6 +198,7 @@ export class CategoryDefaultSettingElement extends - case ContentSettingsTypes.AUTOPLAY: - case ContentSettingsTypes.JAVASCRIPT_JIT: - case ContentSettingsTypes.TIMEZONE_OVERRIDE: -+ case ContentSettingsTypes.WEBGL: - // "Allowed" vs "Blocked". - this.browserProxy.setDefaultValueForContentType( - this.category, -diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts ---- a/chrome/browser/resources/settings/site_settings/constants.ts -+++ b/chrome/browser/resources/settings/site_settings/constants.ts -@@ -49,6 +49,7 @@ export enum ContentSettingsTypes { - AUTOPLAY = 'autoplay', - JAVASCRIPT_JIT = 'javascript-jit', - TIMEZONE_OVERRIDE = 'timezone-override', -+ WEBGL = 'webgl', - - // The following items are not in the C++ kContentSettingsTypeGroupNames, but - // are used everywhere where ContentSettingsTypes is used in JS. -diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ---- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -142,6 +142,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends - case ContentSettingsTypes.AUTOPLAY: - case ContentSettingsTypes.JAVASCRIPT_JIT: - case ContentSettingsTypes.TIMEZONE_OVERRIDE: -+ case ContentSettingsTypes.WEBGL: - // "Allowed" vs "Blocked". - return ContentSetting.ALLOW; - case ContentSettingsTypes.AR: -diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html ---- a/chrome/browser/resources/settings/site_settings/site_details.html -+++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -281,4 +281,9 @@ - icon="settings:timezone-override" - label="$i18n{siteSettingsTimezoneOverride}"> - -+ -+ - -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -358,6 +358,14 @@ function getCategoryItemMap(): Map { - enabledLabel: 'siteSettingsTimezoneOverrideAllowed', - disabledLabel: 'siteSettingsTimezoneOverrideBlocked', - }, -+ { -+ route: routes.SITE_SETTINGS_WEBGL, -+ id: Id.WEBGL, -+ label: 'siteSettingsWebgl', -+ icon: 'settings:webgl', -+ enabledLabel: 'siteSettingsWebglAllowed', -+ disabledLabel: 'siteSettingsWebglBlocked', -+ }, - ]; - - categoryItemMap = new Map(categoryList.map(item => [item.id, item])); -@@ -454,6 +462,7 @@ export class SettingsSiteSettingsPageElement extends - Id.AUTOPLAY, - Id.JAVASCRIPT_JIT, - Id.TIMEZONE_OVERRIDE, -+ Id.WEBGL, - ]), - }; - }, -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -@@ -83,6 +83,8 @@ export function getLocalizationStringForContentType( - return 'siteSettingsJavascriptJITMidSentence'; - case ContentSettingsTypes.TIMEZONE_OVERRIDE: - return 'siteSettingsTimezoneOverrideMidSentence'; -+ case ContentSettingsTypes.WEBGL: -+ return 'siteSettingsWebglMidSentence'; - // The following members do not have a mid-sentence localization. - case ContentSettingsTypes.ANTI_ABUSE: - case ContentSettingsTypes.PDF_DOCUMENTS: -diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc ---- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc -+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -378,6 +378,9 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - case ContentSettingsType::TIMEZONE_OVERRIDE: - icon = &vector_icons::kAccountCircleIcon; - break; -+ case ContentSettingsType::WEBGL: -+ icon = &vector_icons::kProtectedContentIcon; -+ break; - default: - // All other |ContentSettingsType|s do not have icons on desktop or are - // not shown in the Page Info bubble. -diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ---- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2542,6 +2542,13 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source, - {"siteSettingsTimezoneOverrideAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_ALLOWED_EXCEPTIONS}, - {"siteSettingsTimezoneOverrideBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_BLOCKED_EXCEPTIONS}, - {"siteSettingsTimezoneOverrideMidSentence", IDS_SITE_SETTINGS_TIMEZONE_OVERRIDE_TITLE}, -+ {"siteSettingsWebgl", IDS_SITE_SETTINGS_WEBGL_TITLE}, -+ {"siteSettingsWebglDescription", IDS_SETTINGS_SITE_SETTINGS_WEBGL_DESCRIPTION}, -+ {"siteSettingsWebglAllowed", IDS_SETTINGS_SITE_SETTINGS_WEBGL_ALLOWED}, -+ {"siteSettingsWebglBlocked", IDS_SETTINGS_SITE_SETTINGS_WEBGL_BLOCKED}, -+ {"siteSettingsWebglAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_WEBGL_ALLOWED_EXCEPTIONS}, -+ {"siteSettingsWebglBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_WEBGL_BLOCKED_EXCEPTIONS}, -+ {"siteSettingsWebglMidSentence", IDS_SITE_SETTINGS_WEBGL_TITLE}, - {"addSite", IDS_SETTINGS_ADD_SITE}, - {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE}, - #if BUILDFLAG(IS_CHROMEOS_ASH) -diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc ---- a/chrome/browser/ui/webui/settings/site_settings_helper.cc -+++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -128,6 +128,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::AUTOPLAY, "autoplay"}, - {ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit"}, - {ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override"}, -+ {ContentSettingsType::WEBGL, "webgl"}, - - // Add new content settings here if a corresponding Javascript string - // representation for it is not required, for example if the content setting --- -2.25.1 diff --git a/build/patches/00WIN-ADDTO-Add-webRTC-site-settings.patch b/build/patches/00WIN-ADDTO-Add-webRTC-site-settings.patch deleted file mode 100644 index d167e3de..00000000 --- a/build/patches/00WIN-ADDTO-Add-webRTC-site-settings.patch +++ /dev/null @@ -1,241 +0,0 @@ -From: Your Name -Date: Thu, 13 Oct 2022 08:52:11 +0000 -Subject: WIN ADDTO Add webRTC site settings - ---- - chrome/app/settings_strings.grdp | 19 ++++++++++++++++ - chrome/browser/resources/settings/icons.html | 2 ++ - .../settings/privacy_page/privacy_page.html | 22 +++++++++++++++++++ - chrome/browser/resources/settings/route.ts | 1 + - chrome/browser/resources/settings/router.ts | 1 + - .../site_settings/category_default_setting.ts | 1 + - .../settings/site_settings/constants.ts | 1 + - .../settings_category_default_radio_group.ts | 1 + - .../settings/site_settings/site_details.html | 5 +++++ - .../site_settings_page/site_settings_page.ts | 9 ++++++++ - .../site_settings_page_util.ts | 2 ++ - .../views/page_info/page_info_view_factory.cc | 3 +++ - .../settings_localized_strings_provider.cc | 7 ++++++ - .../ui/webui/settings/site_settings_helper.cc | 1 + - 14 files changed, 75 insertions(+) - -diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp ---- a/chrome/app/settings_strings.grdp -+++ b/chrome/app/settings_strings.grdp -@@ -4415,6 +4415,25 @@ - Not allowed to use webgl - - -+ -+ WebRTC -+ -+ -+ Enable WebRTC -+ -+ -+ WebRTC is enabled -+ -+ -+ WebRTC is disabled -+ -+ -+ Allowed to use WebRTC -+ -+ -+ Not allowed to use WebRTC -+ -+ - - - -diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html ---- a/chrome/browser/resources/settings/icons.html -+++ b/chrome/browser/resources/settings/icons.html -@@ -199,6 +199,8 @@ NOTE: Chrome OS icons go in ./chromeos/os_icons.html. - - - -+ -+ - - - -diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html ---- a/chrome/browser/resources/settings/privacy_page/privacy_page.html -+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1192,4 +1192,26 @@ - - - -+ - -diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts ---- a/chrome/browser/resources/settings/route.ts -+++ b/chrome/browser/resources/settings/route.ts -@@ -126,6 +126,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS_JAVASCRIPT_JIT = r.SITE_SETTINGS.createChild('javascript-jit'); - r.SITE_SETTINGS_TIMEZONE_OVERRIDE = r.SITE_SETTINGS.createChild('timezone-override'); - r.SITE_SETTINGS_WEBGL = r.SITE_SETTINGS.createChild('webgl'); -+ r.SITE_SETTINGS_WEBRTC = r.SITE_SETTINGS.createChild('webrtc'); - } - - /** -diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts ---- a/chrome/browser/resources/settings/router.ts -+++ b/chrome/browser/resources/settings/router.ts -@@ -108,6 +108,7 @@ export interface SettingsRoutes { - SITE_SETTINGS_JAVASCRIPT_JIT: Route; - SITE_SETTINGS_TIMEZONE_OVERRIDE: Route; - SITE_SETTINGS_WEBGL: Route; -+ SITE_SETTINGS_WEBRTC: Route; - } - - /** Class for navigable routes. */ -diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts ---- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts -+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts -@@ -199,6 +199,7 @@ export class CategoryDefaultSettingElement extends - case ContentSettingsTypes.JAVASCRIPT_JIT: - case ContentSettingsTypes.TIMEZONE_OVERRIDE: - case ContentSettingsTypes.WEBGL: -+ case ContentSettingsTypes.WEBRTC: - // "Allowed" vs "Blocked". - this.browserProxy.setDefaultValueForContentType( - this.category, -diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts ---- a/chrome/browser/resources/settings/site_settings/constants.ts -+++ b/chrome/browser/resources/settings/site_settings/constants.ts -@@ -50,6 +50,7 @@ export enum ContentSettingsTypes { - JAVASCRIPT_JIT = 'javascript-jit', - TIMEZONE_OVERRIDE = 'timezone-override', - WEBGL = 'webgl', -+ WEBRTC = 'webrtc', - - // The following items are not in the C++ kContentSettingsTypeGroupNames, but - // are used everywhere where ContentSettingsTypes is used in JS. -diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ---- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -143,6 +143,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends - case ContentSettingsTypes.JAVASCRIPT_JIT: - case ContentSettingsTypes.TIMEZONE_OVERRIDE: - case ContentSettingsTypes.WEBGL: -+ case ContentSettingsTypes.WEBRTC: - // "Allowed" vs "Blocked". - return ContentSetting.ALLOW; - case ContentSettingsTypes.AR: -diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html ---- a/chrome/browser/resources/settings/site_settings/site_details.html -+++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -286,4 +286,9 @@ - icon="settings:webgl" - label="$i18n{siteSettingsWebgl}"> - -+ -+ - -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -366,6 +366,14 @@ function getCategoryItemMap(): Map { - enabledLabel: 'siteSettingsWebglAllowed', - disabledLabel: 'siteSettingsWebglBlocked', - }, -+ { -+ route: routes.SITE_SETTINGS_WEBRTC, -+ id: Id.WEBRTC, -+ label: 'siteSettingsWebRTC', -+ icon: 'settings:webrtc', -+ enabledLabel: 'siteSettingsWebRTCAllowed', -+ disabledLabel: 'siteSettingsWebRTCBlocked', -+ }, - ]; - - categoryItemMap = new Map(categoryList.map(item => [item.id, item])); -@@ -463,6 +471,7 @@ export class SettingsSiteSettingsPageElement extends - Id.JAVASCRIPT_JIT, - Id.TIMEZONE_OVERRIDE, - Id.WEBGL, -+ Id.WEBRTC, - ]), - }; - }, -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -@@ -85,6 +85,8 @@ export function getLocalizationStringForContentType( - return 'siteSettingsTimezoneOverrideMidSentence'; - case ContentSettingsTypes.WEBGL: - return 'siteSettingsWebglMidSentence'; -+ case ContentSettingsTypes.WEBRTC: -+ return 'siteSettingsWebRTCMidSentence'; - // The following members do not have a mid-sentence localization. - case ContentSettingsTypes.ANTI_ABUSE: - case ContentSettingsTypes.PDF_DOCUMENTS: -diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc ---- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc -+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -381,6 +381,9 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - case ContentSettingsType::WEBGL: - icon = &vector_icons::kProtectedContentIcon; - break; -+ case ContentSettingsType::WEBRTC: -+ icon = &vector_icons::kProtectedContentIcon; -+ break; - default: - // All other |ContentSettingsType|s do not have icons on desktop or are - // not shown in the Page Info bubble. -diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ---- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2549,6 +2549,13 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source, - {"siteSettingsWebglAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_WEBGL_ALLOWED_EXCEPTIONS}, - {"siteSettingsWebglBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_WEBGL_BLOCKED_EXCEPTIONS}, - {"siteSettingsWebglMidSentence", IDS_SITE_SETTINGS_WEBGL_TITLE}, -+ {"siteSettingsWebRTC", IDS_SITE_SETTINGS_WEBRTC_TITLE}, -+ {"siteSettingsWebRTCDescription", IDS_SETTINGS_SITE_SETTINGS_WEBRTC_DESCRIPTION}, -+ {"siteSettingsWebRTCAllowed", IDS_SETTINGS_SITE_SETTINGS_WEBRTC_ALLOWED}, -+ {"siteSettingsWebRTCBlocked", IDS_SETTINGS_SITE_SETTINGS_WEBRTC_BLOCKED}, -+ {"siteSettingsWebRTCAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_WEBRTC_ALLOWED_EXCEPTIONS}, -+ {"siteSettingsWebRTCBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_WEBRTC_BLOCKED_EXCEPTIONS}, -+ {"siteSettingsWebRTCMidSentence", IDS_SITE_SETTINGS_WEBRTC_TITLE}, - {"addSite", IDS_SETTINGS_ADD_SITE}, - {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE}, - #if BUILDFLAG(IS_CHROMEOS_ASH) -diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc ---- a/chrome/browser/ui/webui/settings/site_settings_helper.cc -+++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -129,6 +129,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit"}, - {ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override"}, - {ContentSettingsType::WEBGL, "webgl"}, -+ {ContentSettingsType::WEBRTC, "webrtc"}, - - // Add new content settings here if a corresponding Javascript string - // representation for it is not required, for example if the content setting --- -2.25.1 diff --git a/build/patches/00WIN-ADDTO-JIT-site-settings--fixup-.patch b/build/patches/00WIN-ADDTO-JIT-site-settings--fixup-.patch deleted file mode 100644 index 7e431122..00000000 --- a/build/patches/00WIN-ADDTO-JIT-site-settings--fixup-.patch +++ /dev/null @@ -1,22 +0,0 @@ -From: Your Name -Date: Tue, 13 Jun 2023 15:52:08 +0000 -Subject: WIN ADDTO JIT site settings (fixup) - ---- - .../ui/webui/settings/settings_localized_strings_provider.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ---- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2534,7 +2534,7 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source, - {"siteSettingsJavascriptJITBlocked", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_BLOCKED}, - {"siteSettingsJavascriptJITAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_ALLOWED_EXCEPTIONS}, - {"siteSettingsJavascriptJITBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_BLOCKED_EXCEPTIONS}, -- {"siteSettingsJavascriptJITMidSentence", IDS_SITE_SETTINGS_TYPE_JAVASCRIPT_JIT}, -+ {"siteSettingsJavascriptJITMidSentence", IDS_JAVASCRIPT_JIT_PERMISSION_TITLE}, - {"siteSettingsTimezoneOverride", IDS_SITE_SETTINGS_TIMEZONE_OVERRIDE_TITLE}, - {"siteSettingsTimezoneOverrideDescription", IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_DESCRIPTION}, - {"siteSettingsTimezoneOverrideAllowed", IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_ALLOWED}, --- -2.25.1 diff --git a/build/patches/00WIN-ADDTO-JIT-site-settings.patch b/build/patches/00WIN-ADDTO-JIT-site-settings.patch deleted file mode 100644 index 0e037611..00000000 --- a/build/patches/00WIN-ADDTO-JIT-site-settings.patch +++ /dev/null @@ -1,271 +0,0 @@ -From: Your Name -Date: Wed, 12 Oct 2022 14:03:37 +0000 -Subject: WIN ADDTO JIT site settings - ---- - chrome/app/settings_strings.grdp | 19 ++++++++++++++++ - chrome/browser/resources/settings/icons.html | 2 ++ - .../settings/privacy_page/privacy_page.html | 22 +++++++++++++++++++ - chrome/browser/resources/settings/route.ts | 1 + - chrome/browser/resources/settings/router.ts | 1 + - .../site_settings/category_default_setting.ts | 1 + - .../settings/site_settings/constants.ts | 1 + - .../settings_category_default_radio_group.ts | 1 + - .../settings/site_settings/site_details.html | 5 +++++ - .../site_settings_page/site_settings_page.ts | 9 ++++++++ - .../site_settings_page_util.ts | 2 ++ - .../views/page_info/page_info_view_factory.cc | 3 +++ - .../settings_localized_strings_provider.cc | 7 ++++++ - .../ui/webui/settings/site_settings_helper.cc | 3 ++- - .../core/browser/content_settings_registry.cc | 3 ++- - 15 files changed, 78 insertions(+), 2 deletions(-) - -diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp ---- a/chrome/app/settings_strings.grdp -+++ b/chrome/app/settings_strings.grdp -@@ -4358,6 +4358,25 @@ - Not allowed to autoplay - - -+ -+ Javascript JIT -+ -+ -+ Enable the JIT compiler in V8 -+ -+ -+ Javascript JIT is enabled -+ -+ -+ Javascript JIT is disabled -+ -+ -+ Allowed to Javascript JIT -+ -+ -+ Not allowed to Javascript JIT -+ -+ - - - -diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html ---- a/chrome/browser/resources/settings/icons.html -+++ b/chrome/browser/resources/settings/icons.html -@@ -193,6 +193,8 @@ NOTE: Chrome OS icons go in ./chromeos/os_icons.html. - - - -+ -+ - - - -diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html ---- a/chrome/browser/resources/settings/privacy_page/privacy_page.html -+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1126,4 +1126,26 @@ - - - -+ - -diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts ---- a/chrome/browser/resources/settings/route.ts -+++ b/chrome/browser/resources/settings/route.ts -@@ -123,6 +123,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS_FILE_SYSTEM_WRITE = r.SITE_SETTINGS.createChild('filesystem'); - r.SITE_SETTINGS_LOCAL_FONTS = r.SITE_SETTINGS.createChild('localFonts'); - r.SITE_SETTINGS_AUTOPLAY = r.SITE_SETTINGS.createChild('autoplay'); -+ r.SITE_SETTINGS_JAVASCRIPT_JIT = r.SITE_SETTINGS.createChild('javascript-jit'); - } - - /** -diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts ---- a/chrome/browser/resources/settings/router.ts -+++ b/chrome/browser/resources/settings/router.ts -@@ -105,6 +105,7 @@ export interface SettingsRoutes { - SYSTEM: Route; - TRIGGERED_RESET_DIALOG: Route; - SITE_SETTINGS_AUTOPLAY: Route; -+ SITE_SETTINGS_JAVASCRIPT_JIT: Route; - } - - /** Class for navigable routes. */ -diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts ---- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts -+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts -@@ -196,6 +196,7 @@ export class CategoryDefaultSettingElement extends - case ContentSettingsTypes.SENSORS: - case ContentSettingsTypes.SOUND: - case ContentSettingsTypes.AUTOPLAY: -+ case ContentSettingsTypes.JAVASCRIPT_JIT: - // "Allowed" vs "Blocked". - this.browserProxy.setDefaultValueForContentType( - this.category, -diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts ---- a/chrome/browser/resources/settings/site_settings/constants.ts -+++ b/chrome/browser/resources/settings/site_settings/constants.ts -@@ -47,6 +47,7 @@ export enum ContentSettingsTypes { - WINDOW_MANAGEMENT = 'window-placement', - ZOOM_LEVELS = 'zoom-levels', - AUTOPLAY = 'autoplay', -+ JAVASCRIPT_JIT = 'javascript-jit', - - // The following items are not in the C++ kContentSettingsTypeGroupNames, but - // are used everywhere where ContentSettingsTypes is used in JS. -diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ---- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -140,6 +140,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends - case ContentSettingsTypes.SENSORS: - case ContentSettingsTypes.SOUND: - case ContentSettingsTypes.AUTOPLAY: -+ case ContentSettingsTypes.JAVASCRIPT_JIT: - // "Allowed" vs "Blocked". - return ContentSetting.ALLOW; - case ContentSettingsTypes.AR: -diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html ---- a/chrome/browser/resources/settings/site_settings/site_details.html -+++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -271,4 +271,9 @@ - icon="settings:federated-identity-api" - label="$i18n{siteSettingsFederatedIdentityApi}"> - -+ -+ - -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -342,6 +342,14 @@ function getCategoryItemMap(): Map { - enabledLabel: 'siteSettingsAutoplayAllowed', - disabledLabel: 'siteSettingsAutoplayBlocked', - }, -+ { -+ route: routes.SITE_SETTINGS_JAVASCRIPT_JIT, -+ id: Id.JAVASCRIPT_JIT, -+ label: 'siteSettingsJavascriptJIT', -+ icon: 'settings:javascript-jit', -+ enabledLabel: 'siteSettingsJavascriptJITAllowed', -+ disabledLabel: 'siteSettingsJavascriptJITBlocked', -+ }, - ]; - - categoryItemMap = new Map(categoryList.map(item => [item.id, item])); -@@ -436,6 +444,7 @@ export class SettingsSiteSettingsPageElement extends - Id.ANTI_ABUSE, - Id.SITE_DATA, - Id.AUTOPLAY, -+ Id.JAVASCRIPT_JIT, - ]), - }; - }, -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -@@ -79,6 +79,8 @@ export function getLocalizationStringForContentType( - return 'siteSettingsZoomLevelsMidSentence'; - case ContentSettingsTypes.AUTOPLAY: - return 'siteSettingsAutoplayMidSentence'; -+ case ContentSettingsTypes.JAVASCRIPT_JIT: -+ return 'siteSettingsJavascriptJITMidSentence'; - // The following members do not have a mid-sentence localization. - case ContentSettingsTypes.ANTI_ABUSE: - case ContentSettingsTypes.PDF_DOCUMENTS: -diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc ---- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc -+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -372,6 +372,9 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - case ContentSettingsType::AUTOPLAY: - icon = &vector_icons::kProtectedContentIcon; - break; -+ case ContentSettingsType::JAVASCRIPT_JIT: -+ icon = &vector_icons::kCodeIcon; -+ break; - default: - // All other |ContentSettingsType|s do not have icons on desktop or are - // not shown in the Page Info bubble. -diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ---- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2528,6 +2528,13 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source, - {"siteSettingsAutoplayAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_ALLOWED_EXCEPTIONS}, - {"siteSettingsAutoplayBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_BLOCKED_EXCEPTIONS}, - {"siteSettingsAutoplayMidSentence", IDS_AUTOPLAY_PERMISSION_TITLE}, -+ {"siteSettingsJavascriptJIT", IDS_SITE_SETTINGS_JAVASCRIPT_JIT_TITLE}, -+ {"siteSettingsJavascriptJITDescription", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_DESCRIPTION}, -+ {"siteSettingsJavascriptJITAllowed", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_ALLOWED}, -+ {"siteSettingsJavascriptJITBlocked", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_BLOCKED}, -+ {"siteSettingsJavascriptJITAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_ALLOWED_EXCEPTIONS}, -+ {"siteSettingsJavascriptJITBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_BLOCKED_EXCEPTIONS}, -+ {"siteSettingsJavascriptJITMidSentence", IDS_SITE_SETTINGS_TYPE_JAVASCRIPT_JIT}, - {"addSite", IDS_SETTINGS_ADD_SITE}, - {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE}, - #if BUILDFLAG(IS_CHROMEOS_ASH) -diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc ---- a/chrome/browser/ui/webui/settings/site_settings_helper.cc -+++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -126,6 +126,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - "private-network-devices-data"}, - {ContentSettingsType::ANTI_ABUSE, "anti-abuse"}, - {ContentSettingsType::AUTOPLAY, "autoplay"}, -+ {ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit"}, - - // Add new content settings here if a corresponding Javascript string - // representation for it is not required, for example if the content setting -@@ -162,7 +163,6 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::FILE_SYSTEM_LAST_PICKED_DIRECTORY, nullptr}, - {ContentSettingsType::DISPLAY_CAPTURE, nullptr}, - {ContentSettingsType::FEDERATED_IDENTITY_SHARING, nullptr}, -- {ContentSettingsType::JAVASCRIPT_JIT, nullptr}, - {ContentSettingsType::HTTP_ALLOWED, nullptr}, - {ContentSettingsType::HTTPS_ENFORCED, nullptr}, - {ContentSettingsType::FORMFILL_METADATA, nullptr}, -@@ -536,6 +536,7 @@ const std::vector& GetVisiblePermissionCategories() { - } - - base_types->push_back(ContentSettingsType::AUTOPLAY); -+ base_types->push_back(ContentSettingsType::JAVASCRIPT_JIT); - - initialized = true; - } -diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc ---- a/components/content_settings/core/browser/content_settings_registry.cc -+++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -518,7 +518,8 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); - - Register(ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit", -- CONTENT_SETTING_BLOCK, WebsiteSettingsInfo::UNSYNCABLE, -+ CONTENT_SETTING_BLOCK, -+ WebsiteSettingsInfo::UNSYNCABLE, - /*allowlisted_schemes=*/{}, - /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, - WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, --- -2.25.1 diff --git a/build/patches/00WIN-ADDTO-Revert-the-removal-to-block-autoplay.patch b/build/patches/00WIN-ADDTO-Revert-the-removal-to-block-autoplay.patch deleted file mode 100644 index 03a3ef64..00000000 --- a/build/patches/00WIN-ADDTO-Revert-the-removal-to-block-autoplay.patch +++ /dev/null @@ -1,258 +0,0 @@ -From: Your Name -Date: Wed, 12 Oct 2022 12:49:31 +0000 -Subject: WIN ADDTO Revert the removal to block autoplay - ---- - chrome/app/settings_strings.grdp | 19 ++++++++++++++++ - chrome/browser/resources/settings/icons.html | 2 ++ - .../settings/privacy_page/privacy_page.html | 22 +++++++++++++++++++ - chrome/browser/resources/settings/route.ts | 1 + - chrome/browser/resources/settings/router.ts | 1 + - .../site_settings/category_default_setting.ts | 1 + - .../settings/site_settings/constants.ts | 1 + - .../settings_category_default_radio_group.ts | 1 + - .../settings/site_settings/site_details.html | 5 +++++ - .../site_settings_page/site_settings_page.ts | 9 ++++++++ - .../site_settings_page_util.ts | 2 ++ - .../views/page_info/page_info_view_factory.cc | 3 +++ - .../settings_localized_strings_provider.cc | 7 ++++++ - .../ui/webui/settings/site_settings_helper.cc | 4 +++- - 14 files changed, 77 insertions(+), 1 deletion(-) - -diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp ---- a/chrome/app/settings_strings.grdp -+++ b/chrome/app/settings_strings.grdp -@@ -4339,6 +4339,25 @@ - Control how your browsing history is used to personalize Search and more - - -+ -+ Autoplay -+ -+ -+ Allow automatic start of video contents -+ -+ -+ Autoplay is enabled -+ -+ -+ Autoplay is disabled -+ -+ -+ Allowed to autoplay -+ -+ -+ Not allowed to autoplay -+ -+ - - - -diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html ---- a/chrome/browser/resources/settings/icons.html -+++ b/chrome/browser/resources/settings/icons.html -@@ -191,6 +191,8 @@ NOTE: Chrome OS icons go in ./chromeos/os_icons.html. - - - -+ -+ - - - -diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html ---- a/chrome/browser/resources/settings/privacy_page/privacy_page.html -+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1104,4 +1104,26 @@ - - - -+ - -diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts ---- a/chrome/browser/resources/settings/route.ts -+++ b/chrome/browser/resources/settings/route.ts -@@ -122,6 +122,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS.createChild('windowManagement'); - r.SITE_SETTINGS_FILE_SYSTEM_WRITE = r.SITE_SETTINGS.createChild('filesystem'); - r.SITE_SETTINGS_LOCAL_FONTS = r.SITE_SETTINGS.createChild('localFonts'); -+ r.SITE_SETTINGS_AUTOPLAY = r.SITE_SETTINGS.createChild('autoplay'); - } - - /** -diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts ---- a/chrome/browser/resources/settings/router.ts -+++ b/chrome/browser/resources/settings/router.ts -@@ -104,6 +104,7 @@ export interface SettingsRoutes { - SYNC_ADVANCED: Route; - SYSTEM: Route; - TRIGGERED_RESET_DIALOG: Route; -+ SITE_SETTINGS_AUTOPLAY: Route; - } - - /** Class for navigable routes. */ -diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts ---- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts -+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts -@@ -195,6 +195,7 @@ export class CategoryDefaultSettingElement extends - case ContentSettingsTypes.PROTOCOL_HANDLERS: - case ContentSettingsTypes.SENSORS: - case ContentSettingsTypes.SOUND: -+ case ContentSettingsTypes.AUTOPLAY: - // "Allowed" vs "Blocked". - this.browserProxy.setDefaultValueForContentType( - this.category, -diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts ---- a/chrome/browser/resources/settings/site_settings/constants.ts -+++ b/chrome/browser/resources/settings/site_settings/constants.ts -@@ -46,6 +46,7 @@ export enum ContentSettingsTypes { - VR = 'vr', - WINDOW_MANAGEMENT = 'window-placement', - ZOOM_LEVELS = 'zoom-levels', -+ AUTOPLAY = 'autoplay', - - // The following items are not in the C++ kContentSettingsTypeGroupNames, but - // are used everywhere where ContentSettingsTypes is used in JS. -diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ---- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -139,6 +139,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends - case ContentSettingsTypes.PROTOCOL_HANDLERS: - case ContentSettingsTypes.SENSORS: - case ContentSettingsTypes.SOUND: -+ case ContentSettingsTypes.AUTOPLAY: - // "Allowed" vs "Blocked". - return ContentSetting.ALLOW; - case ContentSettingsTypes.AR: -diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html ---- a/chrome/browser/resources/settings/site_settings/site_details.html -+++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -266,4 +266,9 @@ - category="[[contentSettingsTypesEnum_.LOCAL_FONTS]]" - icon="settings:local-fonts" label="$i18n{fonts}"> - -+ -+ - -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -334,6 +334,14 @@ function getCategoryItemMap(): Map { - label: 'siteSettingsZoomLevels', - icon: 'settings:zoom-in', - }, -+ { -+ route: routes.SITE_SETTINGS_AUTOPLAY, -+ id: Id.AUTOPLAY, -+ label: 'siteSettingsAutoplay', -+ icon: 'settings:autoplay', -+ enabledLabel: 'siteSettingsAutoplayAllowed', -+ disabledLabel: 'siteSettingsAutoplayBlocked', -+ }, - ]; - - categoryItemMap = new Map(categoryList.map(item => [item.id, item])); -@@ -427,6 +435,7 @@ export class SettingsSiteSettingsPageElement extends - Id.FEDERATED_IDENTITY_API, - Id.ANTI_ABUSE, - Id.SITE_DATA, -+ Id.AUTOPLAY, - ]), - }; - }, -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -@@ -77,6 +77,8 @@ export function getLocalizationStringForContentType( - return 'siteSettingsWindowManagementMidSentence'; - case ContentSettingsTypes.ZOOM_LEVELS: - return 'siteSettingsZoomLevelsMidSentence'; -+ case ContentSettingsTypes.AUTOPLAY: -+ return 'siteSettingsAutoplayMidSentence'; - // The following members do not have a mid-sentence localization. - case ContentSettingsTypes.ANTI_ABUSE: - case ContentSettingsTypes.PDF_DOCUMENTS: -diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc ---- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc -+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -369,6 +369,9 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - case ContentSettingsType::IDLE_DETECTION: - icon = &vector_icons::kDevicesIcon; - break; -+ case ContentSettingsType::AUTOPLAY: -+ icon = &vector_icons::kProtectedContentIcon; -+ break; - default: - // All other |ContentSettingsType|s do not have icons on desktop or are - // not shown in the Page Info bubble. -diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ---- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2521,6 +2521,13 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { - void AddSiteSettingsStrings(content::WebUIDataSource* html_source, - Profile* profile) { - static constexpr webui::LocalizedString kLocalizedStrings[] = { -+ {"siteSettingsAutoplay", IDS_SITE_SETTINGS_AUTOPLAY_TITLE}, -+ {"siteSettingsAutoplayDescription", IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_DESCRIPTION}, -+ {"siteSettingsAutoplayAllowed", IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_ALLOWED}, -+ {"siteSettingsAutoplayBlocked", IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_BLOCKED}, -+ {"siteSettingsAutoplayAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_ALLOWED_EXCEPTIONS}, -+ {"siteSettingsAutoplayBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_BLOCKED_EXCEPTIONS}, -+ {"siteSettingsAutoplayMidSentence", IDS_AUTOPLAY_PERMISSION_TITLE}, - {"addSite", IDS_SETTINGS_ADD_SITE}, - {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE}, - #if BUILDFLAG(IS_CHROMEOS_ASH) -diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc ---- a/chrome/browser/ui/webui/settings/site_settings_helper.cc -+++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -125,6 +125,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::PRIVATE_NETWORK_CHOOSER_DATA, - "private-network-devices-data"}, - {ContentSettingsType::ANTI_ABUSE, "anti-abuse"}, -+ {ContentSettingsType::AUTOPLAY, "autoplay"}, - - // Add new content settings here if a corresponding Javascript string - // representation for it is not required, for example if the content setting -@@ -136,7 +137,6 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::APP_BANNER, nullptr}, - {ContentSettingsType::SITE_ENGAGEMENT, nullptr}, - {ContentSettingsType::DURABLE_STORAGE, nullptr}, -- {ContentSettingsType::AUTOPLAY, nullptr}, - {ContentSettingsType::IMPORTANT_SITE_INFO, nullptr}, - {ContentSettingsType::PERMISSION_AUTOBLOCKER_DATA, nullptr}, - {ContentSettingsType::ADS_DATA, nullptr}, -@@ -535,6 +535,8 @@ const std::vector& GetVisiblePermissionCategories() { - base_types->push_back(ContentSettingsType::PRIVATE_NETWORK_GUARD); - } - -+ base_types->push_back(ContentSettingsType::AUTOPLAY); -+ - initialized = true; - } - --- -2.25.1 diff --git a/build/patches/00WIN-ADDTO-Timezone-customization.patch b/build/patches/00WIN-ADDTO-Timezone-customization.patch deleted file mode 100644 index 255771ca..00000000 --- a/build/patches/00WIN-ADDTO-Timezone-customization.patch +++ /dev/null @@ -1,254 +0,0 @@ -From: Your Name -Date: Wed, 12 Oct 2022 16:03:16 +0000 -Subject: WIN ADDTO Timezone customization - ---- - chrome/app/settings_strings.grdp | 19 ++++++++++++++++ - chrome/browser/resources/settings/icons.html | 2 ++ - .../settings/privacy_page/privacy_page.html | 22 +++++++++++++++++++ - chrome/browser/resources/settings/route.ts | 1 + - chrome/browser/resources/settings/router.ts | 1 + - .../site_settings/category_default_setting.ts | 1 + - .../settings/site_settings/constants.ts | 1 + - .../settings_category_default_radio_group.ts | 1 + - .../settings/site_settings/site_details.html | 5 +++++ - .../site_settings_page/site_settings_page.ts | 9 ++++++++ - .../site_settings_page_util.ts | 2 ++ - .../views/page_info/page_info_view_factory.cc | 3 +++ - .../settings_localized_strings_provider.cc | 7 ++++++ - .../ui/webui/settings/site_settings_helper.cc | 1 + - .../core/browser/content_settings_registry.cc | 2 +- - 15 files changed, 76 insertions(+), 1 deletion(-) - -diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp ---- a/chrome/app/settings_strings.grdp -+++ b/chrome/app/settings_strings.grdp -@@ -4377,6 +4377,25 @@ - Not allowed to Javascript JIT - - -+ -+ Timezone override -+ -+ -+ Enable the Timezone override -+ -+ -+ System Timezone -+ -+ -+ Random Timezone -+ -+ -+ System Timezone override -+ -+ -+ Random Timezone override -+ -+ - - - -diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html ---- a/chrome/browser/resources/settings/icons.html -+++ b/chrome/browser/resources/settings/icons.html -@@ -195,6 +195,8 @@ NOTE: Chrome OS icons go in ./chromeos/os_icons.html. - - - -+ -+ - - - -diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html ---- a/chrome/browser/resources/settings/privacy_page/privacy_page.html -+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1148,4 +1148,26 @@ - - - -+ - -diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts ---- a/chrome/browser/resources/settings/route.ts -+++ b/chrome/browser/resources/settings/route.ts -@@ -124,6 +124,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS_LOCAL_FONTS = r.SITE_SETTINGS.createChild('localFonts'); - r.SITE_SETTINGS_AUTOPLAY = r.SITE_SETTINGS.createChild('autoplay'); - r.SITE_SETTINGS_JAVASCRIPT_JIT = r.SITE_SETTINGS.createChild('javascript-jit'); -+ r.SITE_SETTINGS_TIMEZONE_OVERRIDE = r.SITE_SETTINGS.createChild('timezone-override'); - } - - /** -diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts ---- a/chrome/browser/resources/settings/router.ts -+++ b/chrome/browser/resources/settings/router.ts -@@ -106,6 +106,7 @@ export interface SettingsRoutes { - TRIGGERED_RESET_DIALOG: Route; - SITE_SETTINGS_AUTOPLAY: Route; - SITE_SETTINGS_JAVASCRIPT_JIT: Route; -+ SITE_SETTINGS_TIMEZONE_OVERRIDE: Route; - } - - /** Class for navigable routes. */ -diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts ---- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts -+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts -@@ -197,6 +197,7 @@ export class CategoryDefaultSettingElement extends - case ContentSettingsTypes.SOUND: - case ContentSettingsTypes.AUTOPLAY: - case ContentSettingsTypes.JAVASCRIPT_JIT: -+ case ContentSettingsTypes.TIMEZONE_OVERRIDE: - // "Allowed" vs "Blocked". - this.browserProxy.setDefaultValueForContentType( - this.category, -diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts ---- a/chrome/browser/resources/settings/site_settings/constants.ts -+++ b/chrome/browser/resources/settings/site_settings/constants.ts -@@ -48,6 +48,7 @@ export enum ContentSettingsTypes { - ZOOM_LEVELS = 'zoom-levels', - AUTOPLAY = 'autoplay', - JAVASCRIPT_JIT = 'javascript-jit', -+ TIMEZONE_OVERRIDE = 'timezone-override', - - // The following items are not in the C++ kContentSettingsTypeGroupNames, but - // are used everywhere where ContentSettingsTypes is used in JS. -diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ---- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -141,6 +141,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends - case ContentSettingsTypes.SOUND: - case ContentSettingsTypes.AUTOPLAY: - case ContentSettingsTypes.JAVASCRIPT_JIT: -+ case ContentSettingsTypes.TIMEZONE_OVERRIDE: - // "Allowed" vs "Blocked". - return ContentSetting.ALLOW; - case ContentSettingsTypes.AR: -diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html ---- a/chrome/browser/resources/settings/site_settings/site_details.html -+++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -276,4 +276,9 @@ - icon="settings:javascript-jit" - label="$i18n{siteSettingsJavascriptJIT}"> - -+ -+ - -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -350,6 +350,14 @@ function getCategoryItemMap(): Map { - enabledLabel: 'siteSettingsJavascriptJITAllowed', - disabledLabel: 'siteSettingsJavascriptJITBlocked', - }, -+ { -+ route: routes.SITE_SETTINGS_TIMEZONE_OVERRIDE, -+ id: Id.TIMEZONE_OVERRIDE, -+ label: 'siteSettingsTimezoneOverride', -+ icon: 'settings:timezone-override', -+ enabledLabel: 'siteSettingsTimezoneOverrideAllowed', -+ disabledLabel: 'siteSettingsTimezoneOverrideBlocked', -+ }, - ]; - - categoryItemMap = new Map(categoryList.map(item => [item.id, item])); -@@ -445,6 +453,7 @@ export class SettingsSiteSettingsPageElement extends - Id.SITE_DATA, - Id.AUTOPLAY, - Id.JAVASCRIPT_JIT, -+ Id.TIMEZONE_OVERRIDE, - ]), - }; - }, -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts -@@ -81,6 +81,8 @@ export function getLocalizationStringForContentType( - return 'siteSettingsAutoplayMidSentence'; - case ContentSettingsTypes.JAVASCRIPT_JIT: - return 'siteSettingsJavascriptJITMidSentence'; -+ case ContentSettingsTypes.TIMEZONE_OVERRIDE: -+ return 'siteSettingsTimezoneOverrideMidSentence'; - // The following members do not have a mid-sentence localization. - case ContentSettingsTypes.ANTI_ABUSE: - case ContentSettingsTypes.PDF_DOCUMENTS: -diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc ---- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc -+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -375,6 +375,9 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - case ContentSettingsType::JAVASCRIPT_JIT: - icon = &vector_icons::kCodeIcon; - break; -+ case ContentSettingsType::TIMEZONE_OVERRIDE: -+ icon = &vector_icons::kAccountCircleIcon; -+ break; - default: - // All other |ContentSettingsType|s do not have icons on desktop or are - // not shown in the Page Info bubble. -diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ---- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2535,6 +2535,13 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source, - {"siteSettingsJavascriptJITAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_ALLOWED_EXCEPTIONS}, - {"siteSettingsJavascriptJITBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_BLOCKED_EXCEPTIONS}, - {"siteSettingsJavascriptJITMidSentence", IDS_SITE_SETTINGS_TYPE_JAVASCRIPT_JIT}, -+ {"siteSettingsTimezoneOverride", IDS_SITE_SETTINGS_TIMEZONE_OVERRIDE_TITLE}, -+ {"siteSettingsTimezoneOverrideDescription", IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_DESCRIPTION}, -+ {"siteSettingsTimezoneOverrideAllowed", IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_ALLOWED}, -+ {"siteSettingsTimezoneOverrideBlocked", IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_BLOCKED}, -+ {"siteSettingsTimezoneOverrideAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_ALLOWED_EXCEPTIONS}, -+ {"siteSettingsTimezoneOverrideBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_TIMEZONE_OVERRIDE_BLOCKED_EXCEPTIONS}, -+ {"siteSettingsTimezoneOverrideMidSentence", IDS_SITE_SETTINGS_TIMEZONE_OVERRIDE_TITLE}, - {"addSite", IDS_SETTINGS_ADD_SITE}, - {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE}, - #if BUILDFLAG(IS_CHROMEOS_ASH) -diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc ---- a/chrome/browser/ui/webui/settings/site_settings_helper.cc -+++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -127,6 +127,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::ANTI_ABUSE, "anti-abuse"}, - {ContentSettingsType::AUTOPLAY, "autoplay"}, - {ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit"}, -+ {ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override"}, - - // Add new content settings here if a corresponding Javascript string - // representation for it is not required, for example if the content setting -diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc ---- a/components/content_settings/core/browser/content_settings_registry.cc -+++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -577,7 +577,7 @@ void ContentSettingsRegistry::Init() { - CONTENT_SETTING_ASK, // custom timezone, default UTC - CONTENT_SETTING_BLOCK}, // random - WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, -- WebsiteSettingsRegistry::PLATFORM_ANDROID, -+ WebsiteSettingsRegistry::ALL_PLATFORMS, - ContentSettingsInfo::INHERIT_IN_INCOGNITO, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, - /*show_into_info_page*/ false, --- -2.25.1 diff --git a/build/patches/00bromite-build-utils.patch b/build/patches/00bromite-build-utils.patch index dffe6826..3111800d 100644 --- a/build/patches/00bromite-build-utils.patch +++ b/build/patches/00bromite-build-utils.patch @@ -5,15 +5,16 @@ Subject: bromite build utils --- build/android/gyp/java_cpp_enum.py | 36 ++++++-- build/android/gyp/util/build_utils.py | 25 +++++- - build/bromite/bromite_utils.gni | 68 +++++++++++++++ + build/bromite/bromite_utils.gni | 69 ++++++++++++++ build/bromite/gyp/cpp_bromite_include.py | 35 ++++++++ build/bromite/gyp/cpp_bromite_include.pydeps | 9 ++ - build/bromite/gyp/java_bromite_impl.py | 92 ++++++++++++++++++++ + build/bromite/gyp/java_bromite_impl.py | 94 ++++++++++++++++++++ build/bromite/gyp/java_bromite_impl.pydeps | 9 ++ build/config/BUILDCONFIG.gn | 1 + build/config/android/rules.gni | 4 + tools/grit/grit/grd_reader.py | 27 ++++-- - 10 files changed, 294 insertions(+), 12 deletions(-) + tools/grit/preprocess_if_expr.py | 32 ++++++- + 11 files changed, 328 insertions(+), 13 deletions(-) create mode 100644 build/bromite/bromite_utils.gni create mode 100644 build/bromite/gyp/cpp_bromite_include.py create mode 100644 build/bromite/gyp/cpp_bromite_include.pydeps @@ -153,7 +154,7 @@ diff --git a/build/bromite/bromite_utils.gni b/build/bromite/bromite_utils.gni new file mode 100644 --- /dev/null +++ b/build/bromite/bromite_utils.gni -@@ -0,0 +1,68 @@ +@@ -0,0 +1,69 @@ +import("//build/config/python.gni") + +# generates the file specified in ouput_file containing @@ -179,10 +180,11 @@ new file mode 100644 + forward_variables_from(invoker, + TESTONLY_AND_VISIBILITY + [ + "deps", ++ "inputs", + ]) + script = "//build/bromite/gyp/cpp_bromite_include.py" + -+ _rebased_directories = rebase_path(invoker.directories, root_build_dir) ++ _rebased_directories = rebase_path(invoker.inputs, root_build_dir) + _output = "$target_gen_dir/" + invoker.output_file + _output_rebased = rebase_path(_output) + @@ -210,7 +212,7 @@ new file mode 100644 + + _srcjar_path = "${target_gen_dir}/${target_name}.srcjar" + _rebased_srcjar_path = rebase_path(_srcjar_path, root_build_dir) -+ _rebased_directories = rebase_path(invoker.directories, root_build_dir) ++ _rebased_directories = rebase_path(invoker.inputs, root_build_dir) + _rebased_template = rebase_path(invoker.template, root_build_dir) + + args = [ @@ -249,7 +251,7 @@ new file mode 100644 + directory = os.path.dirname(include_file) + files = [] + for root, dirs, directory_files in os.walk(directory): -+ for directory_file in directory_files: ++ for directory_file in sorted(directory_files): + files.append(os.path.join(directory, directory_file)) + + files = [f for f in files if f.endswith('.inc')] @@ -280,7 +282,7 @@ diff --git a/build/bromite/gyp/java_bromite_impl.py b/build/bromite/gyp/java_bro new file mode 100644 --- /dev/null +++ b/build/bromite/gyp/java_bromite_impl.py -@@ -0,0 +1,92 @@ +@@ -0,0 +1,94 @@ +#!/usr/bin/env python3 + +import argparse @@ -336,8 +338,10 @@ new file mode 100644 + strings = [] + + for directory in source_paths: -+ for root, dirs, directory_files in os.walk(directory): -+ for directory_file in directory_files: ++ if not directory.endswith('include_all_directory.java'): ++ raise Exception("input path not ends with 'include_all_directory.java'") ++ for root, dirs, directory_files in os.walk(os.path.dirname(directory)): ++ for directory_file in sorted(directory_files): + strings.append(directory_file) + + strings = [f.replace('.java', '') for f in strings @@ -449,5 +453,61 @@ diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py if self.debug: print("End parsing of element %s" % name) +diff --git a/tools/grit/preprocess_if_expr.py b/tools/grit/preprocess_if_expr.py +--- a/tools/grit/preprocess_if_expr.py ++++ b/tools/grit/preprocess_if_expr.py +@@ -8,6 +8,7 @@ import io + import json + import os + import sys ++import re + + # For Node, EvaluateExpression + import grit.node.base +@@ -71,6 +72,35 @@ def ExtensionForComments(input_file): + extension = '.html' + return extension + ++def _extract_template_from_dir(html_file): ++ template = '' ++ directory = os.path.dirname(html_file) ++ for root, dirs, directory_files in os.walk(directory): ++ for directory_file in directory_files: ++ if directory_file.endswith(".html"): ++ template += _extract_template(os.path.join(directory, directory_file)) ++ ++ return template ++ ++def _extract_template(html_file): ++ include_re = re.compile(r'^\s*') ++ with io.open(html_file, encoding='utf-8', mode='r') as f: ++ lines = f.readlines() ++ ++ template_lines = [] ++ for line in lines: ++ include_line = include_re.match(line) ++ if include_line: ++ include_file = include_line.groups()[0] ++ file_to_include = os.path.join(os.path.dirname(html_file), include_file) ++ if file_to_include.endswith("placeholder.txt"): ++ line = _extract_template_from_dir(file_to_include) ++ else: ++ line = _extract_template(file_to_include) ++ template_lines.append(line) ++ ++ template = ''.join(template_lines) ++ return template + + def main(argv): + parser = argparse.ArgumentParser() +@@ -95,7 +125,7 @@ def main(argv): + in_path = os.path.join(in_folder, input_file) + content = "" + with open(in_path, encoding='utf-8') as f: +- content = f.read() ++ content = _extract_template(in_path) + + removal_comments_extension = None # None means no removal comments + if args.enable_removal_comments: -- 2.25.1 diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index ee09d561..ef72ab78 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -9,17 +9,17 @@ Requires patch: Content-settings-infrastructure.patch Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../impl/BromiteWebGLContentSetting.java | 87 +++++++++++++++++++ - .../bromite_content_settings/webgl.grdp | 18 ++++ - .../bromite_content_settings/webgl.inc | 13 +++ + .../impl/BromiteWebGLContentSetting.java | 92 +++++++++++++++++++ + .../bromite_content_settings/webgl.grdp | 27 ++++++ + .../bromite_content_settings/webgl.inc | 23 +++++ .../common/bromite_content_settings/WEBGL.inc | 1 + .../execution_context/execution_context.cc | 7 ++ .../execution_context/execution_context.h | 2 + .../webgl/webgl_rendering_context_base.cc | 32 +++---- .../webgl/webgl_rendering_context_base.h | 2 + - 8 files changed, 143 insertions(+), 19 deletions(-) + 8 files changed, 167 insertions(+), 19 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteWebGLContentSetting.java - create mode 100644 components/browser_ui/strings/android/bromite_content_settings/webgl.grdp + create mode 100644 components/browser_ui/strings/bromite_content_settings/webgl.grdp create mode 100644 components/content_settings/core/browser/bromite_content_settings/webgl.inc create mode 100644 components/content_settings/core/common/bromite_content_settings/WEBGL.inc @@ -27,7 +27,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteWebGLContentSetting.java -@@ -0,0 +1,87 @@ +@@ -0,0 +1,92 @@ +/* + This file is part of Bromite. + @@ -96,6 +96,11 @@ new file mode 100644 + } + + @Override ++ public int getCategoryDescription() { ++ return R.string.settings_site_settings_webgl_description; ++ } ++ ++ @Override + public boolean requiresTriStateContentSetting() { + return false; + } @@ -115,34 +120,43 @@ new file mode 100644 + return value != ContentSettingValues.BLOCK; + } +} -diff --git a/components/browser_ui/strings/android/bromite_content_settings/webgl.grdp b/components/browser_ui/strings/android/bromite_content_settings/webgl.grdp +diff --git a/components/browser_ui/strings/bromite_content_settings/webgl.grdp b/components/browser_ui/strings/bromite_content_settings/webgl.grdp new file mode 100644 --- /dev/null -+++ b/components/browser_ui/strings/android/bromite_content_settings/webgl.grdp -@@ -0,0 +1,18 @@ ++++ b/components/browser_ui/strings/bromite_content_settings/webgl.grdp +@@ -0,0 +1,27 @@ + + -+ ++ + Webgl + -+ ++ ++ Enable Webgl, a JavaScript API for rendering high-performance interactive 3D and 2D graphics ++ ++ + webgl + -+ ++ + Webgl + -+ ++ + Enabled + -+ ++ + Disabled + ++ ++ Allowed to use webgl ++ ++ ++ Not allowed to use webgl ++ + diff --git a/components/content_settings/core/browser/bromite_content_settings/webgl.inc b/components/content_settings/core/browser/bromite_content_settings/webgl.inc new file mode 100644 --- /dev/null +++ b/components/content_settings/core/browser/bromite_content_settings/webgl.inc -@@ -0,0 +1,13 @@ +@@ -0,0 +1,23 @@ + Register(ContentSettingsType::WEBGL, "webgl", CONTENT_SETTING_BLOCK, + WebsiteSettingsInfo::SYNCABLE, + /*allowlisted_schemes=*/{}, @@ -151,11 +165,21 @@ new file mode 100644 + WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -+ /*show_into_info_page*/ true, -+ /*is_renderer_content_setting*/ true, -+ /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_WEBGL, -+ /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_WEBGL_MID_SENTENCE); ++ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ ++ content_settings::WebsiteSettingsRegistry::GetInstance() ++ ->GetMutable(ContentSettingsType::WEBGL) ++ ->set_show_into_info_page() ++ .set_desktop_ui() ++ .set_is_renderer_content_setting() ++ .set_title_ui(IDS_SITE_SETTINGS_TYPE_WEBGL) ++ .set_description_ui(IDS_SETTINGS_SITE_SETTINGS_WEBGL_DESCRIPTION) ++ .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_WEBGL_ENABLED) ++ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_WEBGL_DISABLED) ++ .set_allowed_exceptions_ui(IDS_SETTINGS_SITE_SETTINGS_WEBGL_ALLOWED_EXCEPTIONS) ++ .set_blocked_exceptions_ui(IDS_SETTINGS_SITE_SETTINGS_WEBGL_BLOCKED_EXCEPTIONS) ++ .set_mid_sentence_ui(IDS_SITE_SETTINGS_TYPE_WEBGL); ++ diff --git a/components/content_settings/core/common/bromite_content_settings/WEBGL.inc b/components/content_settings/core/common/bromite_content_settings/WEBGL.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Add-webRTC-site-settings.patch b/build/patches/Add-webRTC-site-settings.patch index 94d95b69..70a0edcd 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -7,16 +7,16 @@ Requires patch: Content-settings-infrastructure.patch Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../impl/BromiteWebRTCContentSetting.java | 88 +++++++++++++++++++ - .../bromite_content_settings/webrtc.grdp | 18 ++++ - .../bromite_content_settings/webrtc.inc | 13 +++ + .../impl/BromiteWebRTCContentSetting.java | 93 +++++++++++++++++++ + .../bromite_content_settings/webrtc.grdp | 27 ++++++ + .../bromite_content_settings/webrtc.inc | 23 +++++ .../bromite_content_settings/WEBRTC.inc | 1 + .../peer_connection_dependency_factory.cc | 6 ++ - .../peerconnection/rtc_rtp_receiver.cc | 10 +++ - .../modules/peerconnection/rtc_rtp_sender.cc | 10 +++ - 7 files changed, 146 insertions(+) + .../peerconnection/rtc_rtp_receiver.cc | 10 ++ + .../modules/peerconnection/rtc_rtp_sender.cc | 10 ++ + 7 files changed, 170 insertions(+) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteWebRTCContentSetting.java - create mode 100644 components/browser_ui/strings/android/bromite_content_settings/webrtc.grdp + create mode 100644 components/browser_ui/strings/bromite_content_settings/webrtc.grdp create mode 100644 components/content_settings/core/browser/bromite_content_settings/webrtc.inc create mode 100644 components/content_settings/core/common/bromite_content_settings/WEBRTC.inc @@ -24,7 +24,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteWebRTCContentSetting.java -@@ -0,0 +1,88 @@ +@@ -0,0 +1,93 @@ +/* + This file is part of Bromite. + @@ -94,6 +94,11 @@ new file mode 100644 + } + + @Override ++ public int getCategoryDescription() { ++ return R.string.settings_site_settings_webrtc_description; ++ } ++ ++ @Override + public boolean requiresTriStateContentSetting() { + return false; + } @@ -113,34 +118,43 @@ new file mode 100644 + return value != ContentSettingValues.BLOCK; + } +} -diff --git a/components/browser_ui/strings/android/bromite_content_settings/webrtc.grdp b/components/browser_ui/strings/android/bromite_content_settings/webrtc.grdp +diff --git a/components/browser_ui/strings/bromite_content_settings/webrtc.grdp b/components/browser_ui/strings/bromite_content_settings/webrtc.grdp new file mode 100644 --- /dev/null -+++ b/components/browser_ui/strings/android/bromite_content_settings/webrtc.grdp -@@ -0,0 +1,18 @@ ++++ b/components/browser_ui/strings/bromite_content_settings/webrtc.grdp +@@ -0,0 +1,27 @@ + + -+ ++ + WebRTC + -+ ++ + webRTC + -+ ++ ++ Enable WebRTC, a JavaScript API for real-time communication and direct peer-to-peer communication ++ ++ + WebRTC + -+ ++ + Enabled + -+ ++ + Disabled + ++ ++ Allowed to use WebRTC ++ ++ ++ Not allowed to use WebRTC ++ + diff --git a/components/content_settings/core/browser/bromite_content_settings/webrtc.inc b/components/content_settings/core/browser/bromite_content_settings/webrtc.inc new file mode 100644 --- /dev/null +++ b/components/content_settings/core/browser/bromite_content_settings/webrtc.inc -@@ -0,0 +1,13 @@ +@@ -0,0 +1,23 @@ + Register(ContentSettingsType::WEBRTC, "webrtc", CONTENT_SETTING_BLOCK, + WebsiteSettingsInfo::SYNCABLE, + /*allowlisted_schemes=*/{}, @@ -149,11 +163,21 @@ new file mode 100644 + WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -+ /*show_into_info_page*/ true, -+ /*is_renderer_content_setting*/ true, -+ /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_WEBRTC, -+ /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_WEBRTC_MID_SENTENCE); ++ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ ++ content_settings::WebsiteSettingsRegistry::GetInstance() ++ ->GetMutable(ContentSettingsType::WEBRTC) ++ ->set_show_into_info_page() ++ .set_desktop_ui() ++ .set_is_renderer_content_setting() ++ .set_title_ui(IDS_SITE_SETTINGS_TYPE_WEBRTC) ++ .set_description_ui(IDS_SETTINGS_SITE_SETTINGS_WEBRTC_DESCRIPTION) ++ .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_WEBRTC_ENABLED) ++ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_WEBRTC_DISABLED) ++ .set_allowed_exceptions_ui(IDS_SETTINGS_SITE_SETTINGS_WEBRTC_ALLOWED_EXCEPTIONS) ++ .set_blocked_exceptions_ui(IDS_SETTINGS_SITE_SETTINGS_WEBRTC_BLOCKED_EXCEPTIONS) ++ .set_mid_sentence_ui(IDS_SITE_SETTINGS_TYPE_WEBRTC_MID_SENTENCE); ++ diff --git a/components/content_settings/core/common/bromite_content_settings/WEBRTC.inc b/components/content_settings/core/common/bromite_content_settings/WEBRTC.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 81b7e100..1d6341e5 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -10,64 +10,555 @@ See BromiteCustomContentSetting_README.md for more information. Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../browser_ui/site_settings/android/BUILD.gn | 15 + - .../BromiteCustomContentSetting.java | 127 ++++++++ - .../BromiteCustomContentSettingImpl.java | 275 ++++++++++++++++++ + .../installable/installed_webapp_bridge.cc | 2 +- + .../settings/privacy_page/privacy_page.html | 1 + + .../settings/privacy_page/privacy_page.ts | 44 ++- + chrome/browser/resources/settings/route.ts | 3 + + .../site_settings/category_default_setting.ts | 11 + + .../settings_category_default_radio_group.ts | 7 + + .../settings/site_settings/site_details.html | 1 + + .../settings/site_settings/site_details.ts | 16 +- + .../site_settings_page/site_settings_page.ts | 28 +- + .../site_settings_page_util.ts | 55 ++++ + chrome/browser/ui/BUILD.gn | 1 + + .../views/page_info/page_info_view_factory.cc | 13 + + .../settings_localized_strings_provider.cc | 39 +++ + .../ui/webui/settings/site_settings_helper.cc | 33 +- + .../browser_ui/site_settings/android/BUILD.gn | 14 + + .../BromiteCustomContentSetting.java | 128 ++++++++ + .../BromiteCustomContentSettingImpl.java | 284 ++++++++++++++++++ .../BromiteCustomContentSetting_README.md | 151 ++++++++++ .../ContentSettingsResources.java | 14 +- - .../site_settings/SingleCategorySettings.java | 27 +- - .../site_settings/SingleWebsiteSettings.java | 22 +- + .../site_settings/SingleCategorySettings.java | 33 +- + .../site_settings/SingleWebsiteSettings.java | 26 +- .../site_settings/SiteSettings.java | 7 +- .../site_settings/SiteSettingsCategory.java | 18 +- .../TriStateSiteSettingsPreference.java | 13 +- .../browser_ui/site_settings/Website.java | 6 + - .../WebsitePermissionsFetcher.java | 2 +- + .../WebsitePermissionsFetcher.java | 4 +- .../WebsitePreferenceBridge.java | 3 +- .../impl/include_all_directory.java | 1 + ...miteCustomContentSettingImplBase.java.tmpl | 48 +++ - .../bromite_content_settings/placeholder.txt | 1 + - .../strings/android/browser_ui_strings.grd | 1 + - components/components_strings.grd | 1 + + .../bromite_content_settings/placeholder.txt | 2 + .../content_settings/core/browser/BUILD.gn | 7 + .../bromite_content_settings/placeholder.txt | 1 + - .../core/browser/content_settings_registry.cc | 15 +- - .../core/browser/content_settings_registry.h | 6 +- + .../core/browser/content_settings_registry.cc | 3 + .../core/browser/content_settings_utils.cc | 12 + - .../core/browser/website_settings_info.cc | 12 +- - .../core/browser/website_settings_info.h | 15 +- - .../core/browser/website_settings_registry.cc | 10 +- - .../core/browser/website_settings_registry.h | 6 +- + .../core/browser/website_settings_info.h | 35 +++ + .../core/browser/website_settings_registry.cc | 6 + + .../core/browser/website_settings_registry.h | 1 + .../content_settings/core/common/BUILD.gn | 6 + .../bromite_content_settings/placeholder.txt | 1 + - .../core/common/content_settings.cc | 19 ++ + .../core/common/content_settings.cc | 21 +- .../core/common/content_settings.h | 10 + .../core/common/content_settings.mojom | 6 + .../common/content_settings_mojom_traits.cc | 12 +- .../common/content_settings_mojom_traits.h | 24 ++ - .../core/common/content_settings_types.h | 2 + - .../renderer/content_settings_agent_impl.cc | 33 +++ + .../common/content_settings_param_traits.h | 2 +- + .../core/common/content_settings_types.h | 4 +- + .../renderer/content_settings_agent_impl.cc | 33 ++ .../renderer/content_settings_agent_impl.h | 5 + + .../PageInfoPermissionsController.java | 9 + .../PermissionParamsListBuilder.java | 1 + .../android/page_info_controller_android.cc | 18 ++ components/page_info/page_info.cc | 22 +- components/page_info/page_info_ui.cc | 18 ++ + components/site_settings_strings.grdp | 1 + .../platform/web_content_settings_client.h | 5 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 44 files changed, 986 insertions(+), 33 deletions(-) + 57 files changed, 1252 insertions(+), 38 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting_README.md create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/include_all_directory.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/java_template/BromiteCustomContentSettingImplBase.java.tmpl - create mode 100644 components/browser_ui/strings/android/bromite_content_settings/placeholder.txt + create mode 100644 components/browser_ui/strings/bromite_content_settings/placeholder.txt create mode 100644 components/content_settings/core/browser/bromite_content_settings/placeholder.txt create mode 100644 components/content_settings/core/common/bromite_content_settings/placeholder.txt +diff --git a/chrome/browser/installable/installed_webapp_bridge.cc b/chrome/browser/installable/installed_webapp_bridge.cc +--- a/chrome/browser/installable/installed_webapp_bridge.cc ++++ b/chrome/browser/installable/installed_webapp_bridge.cc +@@ -18,7 +18,7 @@ using base::android::ScopedJavaLocalRef; + static void JNI_InstalledWebappBridge_NotifyPermissionsChange(JNIEnv* env, + jlong j_provider, + int type) { +- DCHECK_LT(type, static_cast(ContentSettingsType::NUM_TYPES)); ++ DCHECK_LT(type, static_cast(ContentSettingsType::NUM_TYPES_BROMITE)); + InstalledWebappProvider* provider = + reinterpret_cast(j_provider); + provider->Notify(static_cast(type)); +diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html +--- a/chrome/browser/resources/settings/privacy_page/privacy_page.html ++++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html +@@ -1104,4 +1104,5 @@ + + + ++
+ +diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts +--- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts ++++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts +@@ -67,7 +67,49 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { + } + + static get template() { +- return getTemplate(); ++ let template = getTemplate(); ++ let content = template.content.getElementById("bromite-placeholder")!; ++ ++ for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { ++ let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); ++ let name = obj["name"]; ++ let tag_name = obj["tag_ui"]; if (!tag_name) tag_name = obj["name"]; ++ ++ let template = document.createElement("settings-subpage"); ++ template.setAttribute("page-title", loadTimeData.getString(`brSiteSettings${name}`)); ++ template.setAttribute("search-title", loadTimeData.getString("siteSettingsAllSitesSearch")); ++ template.setAttribute("search-term", "{{searchFilter_}}"); ++ ++ let divElement = document.createElement("div"); ++ divElement.setAttribute("class", "content-settings-header secondary"); ++ divElement.innerText = loadTimeData.getString(`brSiteSettings${name}Description`); ++ template.appendChild(divElement); ++ ++ let radioGroup = document.createElement("settings-category-default-radio-group"); ++ radioGroup.setAttribute("category", name); ++ radioGroup.setAttribute("allow-option-label", loadTimeData.getString(`brSiteSettings${name}Allowed`)); ++ radioGroup.setAttribute("allow-option-icon", `br-settings:${name}`); ++ radioGroup.setAttribute("block-option-label", loadTimeData.getString(`brSiteSettings${name}Blocked`)); ++ radioGroup.setAttribute("block-option-icon", `br-settings:${name}-off`); ++ template.appendChild(radioGroup); ++ ++ let exceptions = document.createElement("category-setting-exceptions"); ++ exceptions.setAttribute("category", name); ++ exceptions.setAttribute("allow-header", loadTimeData.getString(`brSiteSettings${name}AllowedExceptions`)); ++ exceptions.setAttribute("block-header", loadTimeData.getString(`brSiteSettings${name}BlockedExceptions`)); ++ exceptions.setAttribute("search-filter", "[[searchFilter_]]"); ++ template.appendChild(exceptions); ++ ++ let tag = document.createElement("template"); ++ tag.setAttribute("is", "dom-if"); ++ tag.setAttribute("route-path", `/content/${tag_name}`); ++ tag.setAttribute("no-search", ""); ++ tag.content.appendChild(template); ++ ++ content.parentElement!.insertBefore(tag, content); ++ } ++ content.parentElement!.removeChild(content); ++ return template; + } + + static get properties() { +diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts +--- a/chrome/browser/resources/settings/route.ts ++++ b/chrome/browser/resources/settings/route.ts +@@ -7,6 +7,7 @@ import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; + + import {pageVisibility} from './page_visibility.js'; + import {Route, Router, SettingsRoutes} from './router.js'; ++import {setupContentSettingsRoutes} from './site_settings_page/site_settings_page_util.js' + + /** + * Add all of the child routes that originate from the privacy route, +@@ -122,6 +123,8 @@ function addPrivacyChildRoutes(r: Partial) { + r.SITE_SETTINGS.createChild('windowManagement'); + r.SITE_SETTINGS_FILE_SYSTEM_WRITE = r.SITE_SETTINGS.createChild('filesystem'); + r.SITE_SETTINGS_LOCAL_FONTS = r.SITE_SETTINGS.createChild('localFonts'); ++ ++ setupContentSettingsRoutes(r); + } + + /** +diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts +--- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts ++++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts +@@ -224,6 +224,17 @@ export class CategoryDefaultSettingElement extends + this.categoryEnabled ? ContentSetting.ASK : ContentSetting.BLOCK); + break; + default: ++ for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { ++ let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); ++ let name = obj["name"]; ++ if (this.category == name) { ++ // "Allowed" vs "Blocked". ++ this.browserProxy.setDefaultValueForContentType( ++ this.category, ++ this.categoryEnabled ? ContentSetting.ALLOW : ContentSetting.BLOCK); ++ break; ++ } ++ } + assertNotReached('Invalid category: ' + this.category); + } + } +diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts +--- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ++++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts +@@ -162,6 +162,13 @@ export class SettingsCategoryDefaultRadioGroupElement extends + // "Ask" vs "Blocked". + return ContentSetting.ASK; + default: ++ for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { ++ let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); ++ let name = obj["name"]; ++ if (this.category == name) { ++ return ContentSetting.ALLOW; ++ } ++ } + assertNotReached('Invalid category: ' + this.category); + } + } +diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html +--- a/chrome/browser/resources/settings/site_settings/site_details.html ++++ b/chrome/browser/resources/settings/site_settings/site_details.html +@@ -266,4 +266,5 @@ + category="[[contentSettingsTypesEnum_.LOCAL_FONTS]]" + icon="settings:local-fonts" label="$i18n{fonts}"> + ++
+
+diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/chrome/browser/resources/settings/site_settings/site_details.ts +--- a/chrome/browser/resources/settings/site_settings/site_details.ts ++++ b/chrome/browser/resources/settings/site_settings/site_details.ts +@@ -61,7 +61,21 @@ export class SiteDetailsElement extends SiteDetailsElementBase { + } + + static get template() { +- return getTemplate(); ++ let template = getTemplate(); ++ let content = template.content.getElementById("bromite-placeholder")!; ++ ++ for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { ++ let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); ++ let name = obj["name"]; ++ ++ let tag = document.createElement("site-details-permission"); ++ tag.setAttribute("category", name); ++ tag.setAttribute("icon", `br-settings:${name}`); ++ tag.setAttribute("label", loadTimeData.getString(`brSiteSettings${name}`)); ++ content.parentElement!.insertBefore(tag, content); ++ } ++ content.parentElement!.removeChild(content); ++ return template; + } + + static get properties() { +diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts +--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ++++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts +@@ -41,7 +41,7 @@ function getCategoryItemMap(): Map { + } + // The following list is ordered alphabetically by |id|. The order in which + // these appear in the UI is determined elsewhere in this file. +- const categoryList = [ ++ let categoryList = [ + { + route: routes.SITE_SETTINGS_ADS, + id: Id.ADS, +@@ -336,10 +336,34 @@ function getCategoryItemMap(): Map { + }, + ]; + ++ for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { ++ let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); ++ let name = obj["name"]; ++ ++ categoryList.push({ ++ route: (routes as any)[`SITE_SETTINGS_${name.toUpperCase()}`], ++ id: name, ++ label: `brSiteSettings${name}`, ++ icon: `br-settings:${name}`, ++ enabledLabel: `brSiteSettings${name}Allowed`, ++ disabledLabel: `brSiteSettings${name}Blocked`, ++ }); ++ } ++ + categoryItemMap = new Map(categoryList.map(item => [item.id, item])); + return categoryItemMap; + } + ++function buildBromiteItemListFromIds(orderedIdList: ContentSettingsTypes[]): ++ CategoryListItem[] { ++ for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { ++ let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); ++ let name = obj["name"]; ++ orderedIdList.push(name); ++ } ++ return buildItemListFromIds(orderedIdList); ++} ++ + function buildItemListFromIds(orderedIdList: ContentSettingsTypes[]): + CategoryListItem[] { + const map = getCategoryItemMap(); +@@ -417,7 +441,7 @@ export class SettingsSiteSettingsPageElement extends + Id.IMAGES, + Id.POPUPS, + ]), +- contentAdvanced: buildItemListFromIds([ ++ contentAdvanced: buildBromiteItemListFromIds([ + Id.SOUND, + Id.ADS, + Id.ZOOM_LEVELS, +diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts +--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts ++++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page_util.ts +@@ -6,6 +6,54 @@ import {assertNotReached} from 'chrome://resources/js/assert_ts.js'; + + import {ContentSettingsTypes} from '../site_settings/constants.js'; + ++import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; ++import {Route, Router, SettingsRoutes} from '../router.js'; ++ ++function createPath_(content: string) : Node { ++ let path = document.createElementNS("http://www.w3.org/2000/svg", "path"); ++ path.setAttribute("d", content); ++ path.setAttribute("fill", "#5F6368"); ++ return path; ++} ++ ++export function setupContentSettingsRoutes(r: Partial) { ++ let iconset = document.createElement("iron-iconset-svg"); ++ iconset.setAttribute("name", "br-settings"); ++ iconset.setAttribute("size", "24"); ++ ++ const svg_ns = "http://www.w3.org/2000/svg"; ++ let svg = document.createElementNS(svg_ns, "svg"); ++ iconset.appendChild(svg); ++ ++ let defs = document.createElementNS(svg_ns, "defs"); ++ svg.appendChild(defs); ++ ++ let routes: any = r; ++ for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { ++ // create the enum ++ let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); ++ let name = obj["name"]; ++ let tag_name = obj["tag_ui"]; if (!tag_name) tag_name = name; ++ routes["SITE_SETTINGS_" + name.toUpperCase()] = r.SITE_SETTINGS!.createChild(tag_name); ++ ++ // add the icons (on) ++ let g_on = document.createElementNS(svg_ns, "g"); ++ g_on.setAttribute("id", `${name}`); ++ g_on.appendChild(createPath_("M8 16h8v2H8v-2zm0-4h8v2H8v-2zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z")); ++ defs.appendChild(g_on); ++ ++ // add the icons (off) ++ let g_off = document.createElementNS(svg_ns, "g"); ++ g_off.setAttribute("id", `${name}-off`); ++ g_off.appendChild(createPath_("M13.002 4.001H7.106L5.252 2.148c.232-.094.485-.147.75-.147h8l6 6v8.896l-2-2V9.001h-5v-5z")); ++ g_off.appendChild(createPath_("M16.002 12.001h-.896l.896.896v-.896zM.6 3.45l1.414-1.414 19.94 19.94-1.414 1.414L.6 3.45zM3.986 20.01V6.84l2 2V20.01h11.172l1.765 1.766c-.28.15-.599.234-.937.234H5.976c-1.1 0-1.99-.9-1.99-2z")); ++ g_off.appendChild(createPath_("M9.158 12.01H7.986v2h3.172l-2-2zM13.158 16.01H7.986v2h7.172l-2-2z")); ++ defs.appendChild(g_off); ++ } ++ ++ document.head.appendChild(iconset); ++} ++ + /** + * Determine localization string for i18n for a given content settings type. + * Sorted alphabetically by |ContentSettingsType|. +@@ -84,6 +132,13 @@ export function getLocalizationStringForContentType( + case ContentSettingsTypes.SITE_DATA: + return null; + default: ++ for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { ++ let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); ++ let name = obj["name"]; ++ if (name == contentSettingsType) { ++ return `brSiteSettings${name}MidSentence`; ++ } ++ } + assertNotReached(); + } + } +diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn +--- a/chrome/browser/ui/BUILD.gn ++++ b/chrome/browser/ui/BUILD.gn +@@ -1859,6 +1859,7 @@ static_library("ui") { + "//components/commerce/core:shopping_service", + "//components/commerce/core/mojom:mojo_bindings", + "//components/commerce/core/webui", ++ "//components/content_settings/core/browser:browser", + "//components/enterprise/common:files_scan_data", + "//components/feedback/proto", + "//components/headless/policy", +diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc +--- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc ++++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc +@@ -25,6 +25,8 @@ + #include "chrome/browser/ui/views/page_info/page_info_navigation_handler.h" + #include "chrome/browser/ui/views/page_info/page_info_permission_content_view.h" + #include "chrome/browser/ui/views/page_info/page_info_security_content_view.h" ++#include "components/content_settings/core/browser/website_settings_info.h" ++#include "components/content_settings/core/browser/website_settings_registry.h" + #include "components/page_info/core/features.h" + #include "components/page_info/core/proto/about_this_site_metadata.pb.h" + #include "components/page_info/page_info.h" +@@ -370,6 +372,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( + icon = &vector_icons::kDevicesIcon; + break; + default: ++ bool found = false; ++ content_settings::WebsiteSettingsRegistry* website_settings = ++ content_settings::WebsiteSettingsRegistry::GetInstance(); ++ for (const content_settings::WebsiteSettingsInfo* cs : *website_settings) { ++ if (cs->type() == info.type && cs->show_into_info_page()) { ++ icon = &vector_icons::kProtectedContentIcon; ++ found = true; ++ break; ++ } ++ } ++ if (found) break; + // All other |ContentSettingsType|s do not have icons on desktop or are + // not shown in the Page Info bubble. + NOTREACHED_NORETURN(); +diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ++++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +@@ -13,6 +13,7 @@ + #include "base/strings/escape.h" + #include "base/strings/string_number_conversions.h" + #include "base/strings/utf_string_conversions.h" ++#include "base/json/json_writer.h" + #include "build/branding_buildflags.h" + #include "build/build_config.h" + #include "build/buildflag.h" +@@ -71,6 +72,8 @@ + #include "components/dom_distiller/core/dom_distiller_features.h" + #include "components/google/core/common/google_util.h" + #include "components/omnibox/common/omnibox_features.h" ++#include "components/content_settings/core/browser/website_settings_info.h" ++#include "components/content_settings/core/browser/website_settings_registry.h" + #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" + #include "components/password_manager/core/browser/manage_passwords_referrer.h" + #include "components/password_manager/core/common/password_manager_features.h" +@@ -3730,6 +3733,42 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, + policy_indicator::AddLocalizedStrings(html_source); + AddSecurityKeysStrings(html_source); + ++ content_settings::WebsiteSettingsRegistry* website_settings = ++ content_settings::WebsiteSettingsRegistry::GetInstance(); ++ int index = 0; ++ for (const content_settings::WebsiteSettingsInfo* info : *website_settings) { ++ if (info->desktop_ui()) { ++ std::string name = info->name(); ++ std::string prefix = "brSiteSettings" + name; ++ ++ html_source->AddLocalizedString(prefix, info->title_ui()); ++ html_source->AddLocalizedString(prefix + "Description", info->description_ui()); ++ html_source->AddLocalizedString(prefix + "Allowed", info->allowed_ui()); ++ html_source->AddLocalizedString(prefix + "Blocked", info->blocked_ui()); ++ html_source->AddLocalizedString(prefix + "AllowedExceptions", info->allowed_exceptions_ui()); ++ html_source->AddLocalizedString(prefix + "BlockedExceptions", info->blocked_exceptions_ui()); ++ html_source->AddLocalizedString(prefix + "MidSentence", info->mid_sentence_ui()); ++ ++ base::Value::Dict dict; ++ dict.Set("name", name); ++ dict.Set("type", (int)info->type()); ++ dict.Set("tag_ui", info->tag_ui()); ++ dict.Set("default", ++ info->initial_default_value().GetInt() == (int)CONTENT_SETTING_ALLOW ? "allow" : ++ info->initial_default_value().GetInt() == (int)CONTENT_SETTING_BLOCK ? "block" : ++ "ask"); ++ ++ std::string json_string; ++ base::JSONWriter::WriteWithOptions( ++ dict, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json_string); ++ base::TrimWhitespaceASCII(json_string, base::TRIM_ALL, &json_string); ++ ++ html_source->AddString("br_cs_" + base::NumberToString(index), json_string); ++ index++; ++ } ++ } ++ html_source->AddInteger("br_cs_count", index); ++ + html_source->UseStringsJs(); + } + +diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc +--- a/chrome/browser/ui/webui/settings/site_settings_helper.cc ++++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc +@@ -38,6 +38,8 @@ + #include "chrome/common/pref_names.h" + #include "chrome/common/url_constants.h" + #include "components/content_settings/core/browser/host_content_settings_map.h" ++#include "components/content_settings/core/browser/website_settings_info.h" ++#include "components/content_settings/core/browser/website_settings_registry.h" + #include "components/content_settings/core/common/content_settings.h" + #include "components/content_settings/core/common/content_settings_pattern.h" + #include "components/content_settings/core/common/content_settings_utils.h" +@@ -190,7 +192,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { + + static_assert(std::size(kContentSettingsTypeGroupNames) == + // ContentSettingsType starts at -1, so add 1 here. +- static_cast(ContentSettingsType::NUM_TYPES) + 1, ++ static_cast(ContentSettingsType::NUM_TYPES_CHROMIUM) + 1, + "kContentSettingsTypeGroupNames should have " + "CONTENT_SETTINGS_NUM_TYPES elements"); + +@@ -440,6 +442,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { + return true; + } + } ++ content_settings::WebsiteSettingsRegistry* website_settings = ++ content_settings::WebsiteSettingsRegistry::GetInstance(); ++ for (const content_settings::WebsiteSettingsInfo* cs : *website_settings) { ++ if (type == cs->type() && cs->desktop_ui()) { ++ return true; ++ } ++ } + return false; + } + +@@ -453,7 +462,13 @@ ContentSettingsType ContentSettingsTypeFromGroupName(base::StringPiece name) { + return entry.type; + } + } +- ++ content_settings::WebsiteSettingsRegistry* website_settings = ++ content_settings::WebsiteSettingsRegistry::GetInstance(); ++ for (const content_settings::WebsiteSettingsInfo* cs : *website_settings) { ++ if (name == cs->name() && cs->desktop_ui()) { ++ return cs->type(); ++ } ++ } + return ContentSettingsType::DEFAULT; + } + +@@ -467,6 +482,13 @@ base::StringPiece ContentSettingsTypeToGroupName(ContentSettingsType type) { + } + } + ++ content_settings::WebsiteSettingsRegistry* website_settings = ++ content_settings::WebsiteSettingsRegistry::GetInstance(); ++ for (const content_settings::WebsiteSettingsInfo* cs : *website_settings) { ++ if (type == cs->type() && cs->desktop_ui()) { ++ return cs->name(); ++ } ++ } + NOTREACHED() << static_cast(type) + << " is not a recognized content settings type."; + return base::StringPiece(); +@@ -535,6 +557,13 @@ const std::vector& GetVisiblePermissionCategories() { + base_types->push_back(ContentSettingsType::PRIVATE_NETWORK_GUARD); + } + ++ content_settings::WebsiteSettingsRegistry* website_settings = ++ content_settings::WebsiteSettingsRegistry::GetInstance(); ++ for (const content_settings::WebsiteSettingsInfo* cs : *website_settings) { ++ if (cs->desktop_ui()) { ++ base_types->push_back(cs->type()); ++ } ++ } + initialized = true; + } + diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -139,6 +139,21 @@ android_library("java") { +@@ -139,6 +139,20 @@ android_library("java") { ] srcjar_deps = [ "//components/content_settings/android:java_pref_names_srcjar" ] @@ -84,7 +575,6 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b + +java_bromite_impl("java_bromite_content_settings") { + inputs = [ "java/src/org/chromium/components/browser_ui/site_settings/impl/include_all_directory.java" ] -+ directories = [ "java/src/org/chromium/components/browser_ui/site_settings/impl" ] + template = "java/src/org/chromium/components/browser_ui/site_settings/impl/java_template/BromiteCustomContentSettingImplBase.java.tmpl" } @@ -93,7 +583,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java -@@ -0,0 +1,127 @@ +@@ -0,0 +1,128 @@ +/* + This file is part of Bromite. + @@ -188,6 +678,7 @@ new file mode 100644 + public abstract ContentSettingsResources.ResourceItem getResourceItem(); + public abstract int getCategorySummary(@Nullable @ContentSettingValues int value); + public abstract int getAddExceptionDialogMessage(); ++ public abstract int getCategoryDescription(); + + public boolean processOnBlockList(@ContentSettingValues Integer value) { + return true; @@ -225,7 +716,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java -@@ -0,0 +1,275 @@ +@@ -0,0 +1,284 @@ +/* + This file is part of Bromite. + @@ -347,6 +838,15 @@ new file mode 100644 + return null; + } + ++ public static int getCategoryDescription(SiteSettingsCategory category) { ++ for (BromiteCustomContentSetting cs : mItemList) { ++ if (category.getType() == cs.getSiteSettingsCategory()) { ++ return cs.getCategoryDescription(); ++ } ++ } ++ return 0; ++ } ++ + public static boolean onPreferenceChange(SiteSettingsCategory category, + BrowserContextHandle browserContextHandle, + Preference preference, Object newValue) { @@ -770,7 +1270,20 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); case GlobalToggleLayout.FOUR_STATE_COOKIE_TOGGLE: FourStateCookieSettingsPreference fourStateCookieToggle = -@@ -1182,6 +1198,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1158,7 +1174,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment + } else if (mCategory.getType() == SiteSettingsCategory.Type.THIRD_PARTY_COOKIES) { + infoText.setSummary(R.string.website_settings_third_party_cookies_page_description); + } else { +- screen.removePreference(infoText); ++ int infoMessage = BromiteCustomContentSettingImpl.getCategoryDescription(mCategory); ++ if (infoMessage == 0) ++ screen.removePreference(infoText); ++ else ++ infoText.setSummary(infoMessage); + } + + // Hide the anti-abuse text preferences, as needed. +@@ -1182,6 +1202,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment screen.removePreference(antiAbuseThingsToConsiderHeader); screen.removePreference(antiAbuseThingsToConsiderSectionOne); } @@ -778,7 +1291,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (permissionBlockedByOs) { maybeShowOsWarning(screen); -@@ -1335,7 +1352,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1335,7 +1356,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment getSiteSettingsDelegate().getBrowserContextHandle(), contentType); int[] descriptionIds = ContentSettingsResources.getTriStateSettingDescriptionIDs(contentType); @@ -787,7 +1300,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private void configureBinaryToggle(ChromeSwitchPreference binaryToggle, int contentType) { -@@ -1439,6 +1456,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1439,6 +1460,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); @@ -858,6 +1371,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c switchPreference.setOnPreferenceChangeListener(this); @ContentSettingsType int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey()); +@@ -1121,7 +1131,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment + public @ContentSettingsType int getContentSettingsTypeFromPreferenceKey(String preferenceKey) { + if (mPreferenceMap == null) { + mPreferenceMap = new HashMap<>(); +- for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES; type++) { ++ for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES_BROMITE; type++) { + String key = getPreferenceKey(type); + if (key != null) { + mPreferenceMap.put(key, type); @@ -1159,7 +1169,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment } @@ -867,6 +1389,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c preference.setIcon(getContentSettingsIcon(type, permission)); if (mWebsiteSettingsObserver != null) { +@@ -1189,7 +1199,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment + // TODO(mvanouwerkerk): Refactor this class so that it does not depend on the screen state + // for its logic. This class should maintain its own data model, and only update the screen + // after a change is made. +- for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES; type++) { ++ for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES_BROMITE; type++) { + String key = getPreferenceKey(type); + if (key != null) { + removePreferenceSafely(key); diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java @@ -1049,6 +1580,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } +@@ -209,7 +209,7 @@ public class WebsitePermissionsFetcher { + if (SiteSettingsFeatureList.isEnabled(SiteSettingsFeatureList.SITE_DATA_IMPROVEMENTS)) { + queue.add(new CookiesInfoFetcher()); + } +- for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES; type++) { ++ for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES_BROMITE; type++) { + addFetcherForContentSettingsType(queue, type); + } + } diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java @@ -1128,34 +1668,13 @@ new file mode 100644 + }} + +}} -diff --git a/components/browser_ui/strings/android/bromite_content_settings/placeholder.txt b/components/browser_ui/strings/android/bromite_content_settings/placeholder.txt +diff --git a/components/browser_ui/strings/bromite_content_settings/placeholder.txt b/components/browser_ui/strings/bromite_content_settings/placeholder.txt new file mode 100644 --- /dev/null -+++ b/components/browser_ui/strings/android/bromite_content_settings/placeholder.txt -@@ -0,0 +1 @@ ++++ b/components/browser_ui/strings/bromite_content_settings/placeholder.txt +@@ -0,0 +1,2 @@ +this file is intentionally empty -diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd ---- a/components/browser_ui/strings/android/browser_ui_strings.grd -+++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -174,6 +174,7 @@ - - - -+ - - - Got it -diff --git a/components/components_strings.grd b/components/components_strings.grd ---- a/components/components_strings.grd -+++ b/components/components_strings.grd -@@ -281,6 +281,7 @@ - - - -+ - - - ++ diff --git a/components/content_settings/core/browser/BUILD.gn b/components/content_settings/core/browser/BUILD.gn --- a/components/content_settings/core/browser/BUILD.gn +++ b/components/content_settings/core/browser/BUILD.gn @@ -1168,7 +1687,7 @@ diff --git a/components/content_settings/core/browser/BUILD.gn b/components/cont +} + +cpp_bromite_include("bromite_content_settings") { -+ directories = [ "bromite_content_settings/placeholder.txt" ] ++ inputs = [ "bromite_content_settings/placeholder.txt" ] + output_file = "bromite_content_settings.inc" } @@ -1182,16 +1701,15 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -15,6 +15,8 @@ +@@ -15,6 +15,7 @@ #include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/features.h" -+#include "components/strings/grit/components_chromium_strings.h" +#include "components/strings/grit/components_strings.h" namespace content_settings { -@@ -592,6 +594,8 @@ void ContentSettingsRegistry::Init() { +@@ -592,6 +593,8 @@ void ContentSettingsRegistry::Init() { WebsiteSettingsRegistry::ALL_PLATFORMS, ContentSettingsInfo::INHERIT_IN_INCOGNITO, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); @@ -1200,47 +1718,6 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. } void ContentSettingsRegistry::Register( -@@ -604,7 +608,11 @@ void ContentSettingsRegistry::Register( - WebsiteSettingsInfo::ScopingType scoping_type, - Platforms platforms, - ContentSettingsInfo::IncognitoBehavior incognito_behavior, -- ContentSettingsInfo::OriginRestriction origin_restriction) { -+ ContentSettingsInfo::OriginRestriction origin_restriction, -+ bool show_into_info_page, -+ bool is_renderer_content_setting, -+ int permission_type_ui, -+ int permission_type_ui_mid_sentence) { - // Ensure that nothing has been registered yet for the given type. - DCHECK(!website_settings_registry_->Get(type)); - -@@ -613,7 +621,10 @@ void ContentSettingsRegistry::Register( - website_settings_registry_->Register( - type, name, std::move(default_value), sync_status, - WebsiteSettingsInfo::NOT_LOSSY, scoping_type, platforms, -- WebsiteSettingsInfo::INHERIT_IN_INCOGNITO); -+ WebsiteSettingsInfo::INHERIT_IN_INCOGNITO, -+ show_into_info_page, is_renderer_content_setting, -+ permission_type_ui, -+ permission_type_ui_mid_sentence); - - // WebsiteSettingsInfo::Register() will return nullptr if content setting type - // is not used on the current platform and doesn't need to be registered. -diff --git a/components/content_settings/core/browser/content_settings_registry.h b/components/content_settings/core/browser/content_settings_registry.h ---- a/components/content_settings/core/browser/content_settings_registry.h -+++ b/components/content_settings/core/browser/content_settings_registry.h -@@ -70,7 +70,11 @@ class ContentSettingsRegistry { - WebsiteSettingsInfo::ScopingType scoping_type, - Platforms platforms, - ContentSettingsInfo::IncognitoBehavior incognito_behavior, -- ContentSettingsInfo::OriginRestriction origin_restriction); -+ ContentSettingsInfo::OriginRestriction origin_restriction, -+ bool show_into_info_page = false, -+ bool is_renderer_content_setting = false, -+ int permission_type_ui = 0, -+ int permission_type_ui_mid_sentence = 0); - - Map content_settings_info_; - raw_ptr website_settings_registry_; diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc @@ -1270,117 +1747,85 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc #if !BUILDFLAG(IS_ANDROID) map->GetSettingsForOneType(ContentSettingsType::IMAGES, &(rules->image_rules)); -diff --git a/components/content_settings/core/browser/website_settings_info.cc b/components/content_settings/core/browser/website_settings_info.cc ---- a/components/content_settings/core/browser/website_settings_info.cc -+++ b/components/content_settings/core/browser/website_settings_info.cc -@@ -33,7 +33,11 @@ WebsiteSettingsInfo::WebsiteSettingsInfo(ContentSettingsType type, - SyncStatus sync_status, - LossyStatus lossy_status, - ScopingType scoping_type, -- IncognitoBehavior incognito_behavior) -+ IncognitoBehavior incognito_behavior, -+ bool show_into_info_page, -+ bool is_renderer_content_setting, -+ int permission_type_ui, -+ int permission_type_ui_mid_sentence) - : type_(type), - name_(name), - pref_name_(GetPreferenceName(name, kPrefPrefix)), -@@ -42,7 +46,11 @@ WebsiteSettingsInfo::WebsiteSettingsInfo(ContentSettingsType type, - sync_status_(sync_status), - lossy_status_(lossy_status), - scoping_type_(scoping_type), -- incognito_behavior_(incognito_behavior) { -+ incognito_behavior_(incognito_behavior), -+ show_into_info_page_(show_into_info_page), -+ is_renderer_content_setting_(is_renderer_content_setting), -+ permission_type_ui_(permission_type_ui), -+ permission_type_ui_mid_sentence_(permission_type_ui_mid_sentence) { - // For legacy reasons the default value is currently restricted to be an int - // or none. - // TODO(raymes): We should migrate the underlying pref to be a dictionary diff --git a/components/content_settings/core/browser/website_settings_info.h b/components/content_settings/core/browser/website_settings_info.h --- a/components/content_settings/core/browser/website_settings_info.h +++ b/components/content_settings/core/browser/website_settings_info.h -@@ -95,7 +95,11 @@ class WebsiteSettingsInfo { - SyncStatus sync_status, - LossyStatus lossy_status, - ScopingType scoping_type, -- IncognitoBehavior incognito_behavior); -+ IncognitoBehavior incognito_behavior, -+ bool show_into_info_page, -+ bool is_renderer_content_setting, -+ int permission_type_ui, -+ int permission_type_ui_mid_sentence); - - WebsiteSettingsInfo(const WebsiteSettingsInfo&) = delete; - WebsiteSettingsInfo& operator=(const WebsiteSettingsInfo&) = delete; -@@ -120,6 +124,11 @@ class WebsiteSettingsInfo { +@@ -120,6 +120,30 @@ class WebsiteSettingsInfo { ScopingType scoping_type() const { return scoping_type_; } IncognitoBehavior incognito_behavior() const { return incognito_behavior_; } + bool show_into_info_page() const { return show_into_info_page_; } + bool is_renderer_content_setting() const { return is_renderer_content_setting_; } -+ int permission_type_ui() const { return permission_type_ui_; } -+ int permission_type_ui_mid_sentence() const { return permission_type_ui_mid_sentence_; } ++ bool desktop_ui() const { return desktop_ui_; } ++ std::string tag_ui() const { return tag_ui_; } ++ int title_ui() const { return title_ui_; } ++ int description_ui() const { return description_ui_; } ++ int allowed_ui() const { return allowed_ui_; } ++ int blocked_ui() const { return blocked_ui_; } ++ int allowed_exceptions_ui() const { return allowed_exceptions_ui_; } ++ int blocked_exceptions_ui() const { return blocked_exceptions_ui_; } ++ int mid_sentence_ui() const { return mid_sentence_ui_; } ++ ++ WebsiteSettingsInfo& set_show_into_info_page() { show_into_info_page_ = true; return *this; } ++ WebsiteSettingsInfo& set_is_renderer_content_setting() { is_renderer_content_setting_ = true; return *this; } ++ WebsiteSettingsInfo& set_desktop_ui() { desktop_ui_ = true; return *this; } ++ WebsiteSettingsInfo& set_tag_ui(const std::string& value) { tag_ui_ = value; return *this; } ++ WebsiteSettingsInfo& set_title_ui(int value) { title_ui_ = value; return *this; } ++ WebsiteSettingsInfo& set_description_ui(int value) { description_ui_ = value; return *this; } ++ WebsiteSettingsInfo& set_allowed_ui(int value) { allowed_ui_ = value; return *this; } ++ WebsiteSettingsInfo& set_blocked_ui(int value) { blocked_ui_ = value; return *this; } ++ WebsiteSettingsInfo& set_allowed_exceptions_ui(int value) { allowed_exceptions_ui_ = value; return *this; } ++ WebsiteSettingsInfo& set_blocked_exceptions_ui(int value) { blocked_exceptions_ui_ = value; return *this; } ++ WebsiteSettingsInfo& set_mid_sentence_ui(int value) { mid_sentence_ui_ = value; return *this; } + private: const ContentSettingsType type_; const std::string name_; -@@ -131,6 +140,10 @@ class WebsiteSettingsInfo { +@@ -131,6 +155,17 @@ class WebsiteSettingsInfo { const LossyStatus lossy_status_; const ScopingType scoping_type_; const IncognitoBehavior incognito_behavior_; -+ const bool show_into_info_page_; -+ const bool is_renderer_content_setting_; -+ const int permission_type_ui_; -+ const int permission_type_ui_mid_sentence_; ++ bool show_into_info_page_ = false; ++ bool is_renderer_content_setting_ = false; ++ bool desktop_ui_ = false; ++ std::string tag_ui_; ++ int title_ui_ = 0; ++ int description_ui_ = 0; ++ int allowed_ui_ = 0; ++ int blocked_ui_ = 0; ++ int allowed_exceptions_ui_ = 0; ++ int blocked_exceptions_ui_ = 0; ++ int mid_sentence_ui_ = 0; }; } // namespace content_settings diff --git a/components/content_settings/core/browser/website_settings_registry.cc b/components/content_settings/core/browser/website_settings_registry.cc --- a/components/content_settings/core/browser/website_settings_registry.cc +++ b/components/content_settings/core/browser/website_settings_registry.cc -@@ -62,7 +62,11 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Register( - WebsiteSettingsInfo::LossyStatus lossy_status, - WebsiteSettingsInfo::ScopingType scoping_type, - Platforms platform, -- WebsiteSettingsInfo::IncognitoBehavior incognito_behavior) { -+ WebsiteSettingsInfo::IncognitoBehavior incognito_behavior, -+ bool show_into_info_page, -+ bool is_renderer_content_setting, -+ int permission_type_ui, -+ int permission_type_ui_mid_sentence) { - #if BUILDFLAG(IS_WIN) - if (!(platform & PLATFORM_WINDOWS)) - return nullptr; -@@ -98,7 +102,9 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Register( - - WebsiteSettingsInfo* info = new WebsiteSettingsInfo( - type, name, std::move(initial_default_value), sync_status, lossy_status, -- scoping_type, incognito_behavior); -+ scoping_type, incognito_behavior, -+ show_into_info_page, is_renderer_content_setting, -+ permission_type_ui, permission_type_ui_mid_sentence); - website_settings_info_[info->type()] = base::WrapUnique(info); - return info; +@@ -45,6 +45,12 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Get( + return nullptr; } + ++raw_ptr WebsiteSettingsRegistry::GetMutable( ++ ContentSettingsType type) { ++ const auto& it = website_settings_info_.find(type); ++ return it->second.get(); ++} ++ + const WebsiteSettingsInfo* WebsiteSettingsRegistry::GetByName( + const std::string& name) const { + for (const auto& entry : website_settings_info_) { diff --git a/components/content_settings/core/browser/website_settings_registry.h b/components/content_settings/core/browser/website_settings_registry.h --- a/components/content_settings/core/browser/website_settings_registry.h +++ b/components/content_settings/core/browser/website_settings_registry.h -@@ -76,7 +76,11 @@ class WebsiteSettingsRegistry { - WebsiteSettingsInfo::LossyStatus lossy_status, - WebsiteSettingsInfo::ScopingType scoping_type, - Platforms platforms, -- WebsiteSettingsInfo::IncognitoBehavior incognito_behavior); -+ WebsiteSettingsInfo::IncognitoBehavior incognito_behavior, -+ bool show_into_info_page = false, -+ bool is_renderer_content_setting = false, -+ int permission_type_ui = 0, -+ int permission_type_ui_mid_sentence = 0); +@@ -61,6 +61,7 @@ class WebsiteSettingsRegistry { + void ResetForTest(); - const_iterator begin() const; - const_iterator end() const; + const WebsiteSettingsInfo* Get(ContentSettingsType type) const; ++ raw_ptr GetMutable(ContentSettingsType type); + const WebsiteSettingsInfo* GetByName(const std::string& name) const; + + // Register a new website setting. This maps an origin to an arbitrary diff --git a/components/content_settings/core/common/BUILD.gn b/components/content_settings/core/common/BUILD.gn --- a/components/content_settings/core/common/BUILD.gn +++ b/components/content_settings/core/common/BUILD.gn @@ -1392,7 +1837,7 @@ diff --git a/components/content_settings/core/common/BUILD.gn b/components/conte +} + +cpp_bromite_include("bromite_content_settings") { -+ directories = [ "bromite_content_settings/placeholder.txt" ] ++ inputs = [ "bromite_content_settings/placeholder.txt" ] + output_file = "bromite_content_settings.inc" } @@ -1422,6 +1867,15 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo // Verify the array is sorted by enum type and contains all values. DCHECK(std::is_sorted(std::begin(kHistogramValue), std::end(kHistogramValue), +@@ -152,7 +154,7 @@ int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting, + static_assert( + kHistogramValue[std::size(kHistogramValue) - 1].type == + ContentSettingsType( +- static_cast(ContentSettingsType::NUM_TYPES) - 1), ++ static_cast(ContentSettingsType::NUM_TYPES_CHROMIUM) - 1), + "Update content settings histogram lookup"); + + const HistogramValue* found = std::lower_bound( @@ -212,6 +214,13 @@ bool ContentSettingPatternSource::IsExpired() const { // static bool RendererContentSettingRules::IsRendererContentSetting( @@ -1569,18 +2023,32 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai static const std::vector& image_rules( const RendererContentSettingRules& r) { return r.image_rules; +diff --git a/components/content_settings/core/common/content_settings_param_traits.h b/components/content_settings/core/common/content_settings_param_traits.h +--- a/components/content_settings/core/common/content_settings_param_traits.h ++++ b/components/content_settings/core/common/content_settings_param_traits.h +@@ -9,7 +9,7 @@ + #include "ipc/ipc_message_macros.h" + + IPC_ENUM_TRAITS_MAX_VALUE(ContentSettingsType, +- static_cast(ContentSettingsType::NUM_TYPES) - ++ static_cast(ContentSettingsType::NUM_TYPES_BROMITE) - + 1) + + #endif // COMPONENTS_CONTENT_SETTINGS_CORE_COMMON_CONTENT_SETTINGS_PARAM_TRAITS_H_ diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h --- a/components/content_settings/core/common/content_settings_types.h +++ b/components/content_settings/core/common/content_settings_types.h -@@ -274,6 +274,8 @@ enum class ContentSettingsType : int32_t { - // site instead of the mobile one. - REQUEST_DESKTOP_SITE, +@@ -330,7 +330,9 @@ enum class ContentSettingsType : int32_t { + // Used to indicate whether HTTPS-First Mode is enabled on the hostname. + HTTPS_ENFORCED, +- NUM_TYPES, ++ NUM_TYPES_CHROMIUM, +#include "components/content_settings/core/common/bromite_content_settings.inc" -+ - // Setting to indicate whether browser should allow signing into a website via - // the browser FedCM API. - FEDERATED_IDENTITY_API, ++ NUM_TYPES_BROMITE, + }; + + struct ContentSettingsTypeHash { diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc --- a/components/content_settings/renderer/content_settings_agent_impl.cc +++ b/components/content_settings/renderer/content_settings_agent_impl.cc @@ -1639,6 +2107,25 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h // blink::WebContentSettingsClient: void AllowStorageAccess(StorageType storage_type, base::OnceCallback callback) override; +diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java +--- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java ++++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java +@@ -174,6 +174,15 @@ public class PageInfoPermissionsController + : perm1.nameMidSentence.toString()); + } + ++ String value = ""; ++ for (PermissionObject perm : permissions) { ++ if (perm.allowed) { ++ if (!value.equals("")) value += ", "; ++ value += perm.nameMidSentence.toString(); ++ } ++ } ++ if ((true)) return value; ++ + // More than 2 permissions. + if (same) { + int resId = perm1.allowed ? R.plurals.page_info_permissions_summary_more_allowed diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java @@ -1661,14 +2148,15 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/page_info/android/jni_headers/PageInfoController_jni.h" -@@ -151,6 +152,14 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -151,6 +152,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( ContentSettingsType::FEDERATED_IDENTITY_API); } + content_settings::WebsiteSettingsRegistry* website_settings = + content_settings::WebsiteSettingsRegistry::GetInstance(); + for (const content_settings::WebsiteSettingsInfo* info : *website_settings) { -+ if (info->show_into_info_page()) { ++ if (info->show_into_info_page() && ++ !base::Contains(permissions_to_display, info->type())) { + permissions_to_display.push_back(info->type()); + } + } @@ -1676,15 +2164,14 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp std::map user_specified_settings_to_display; std::map -@@ -210,6 +219,15 @@ absl::optional PageInfoControllerAndroid::GetSettingToDisplay( +@@ -210,6 +220,14 @@ absl::optional PageInfoControllerAndroid::GetSettingToDisplay( return permission.setting; } + content_settings::WebsiteSettingsRegistry* website_settings = + content_settings::WebsiteSettingsRegistry::GetInstance(); + for (const content_settings::WebsiteSettingsInfo* info : *website_settings) { -+ if (info->type() == permission.type && -+ info->show_into_info_page()) { ++ if (info->type() == permission.type && info->show_into_info_page()) { + return permission.default_setting; + } + } @@ -1749,32 +2236,32 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in #include "components/omnibox/common/omnibox_features.h" #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" -@@ -574,6 +575,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -570,6 +571,12 @@ PageInfoUI::~PageInfoUI() = default; + + // static + std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { ++ const content_settings::WebsiteSettingsInfo* settingInfo = ++ content_settings::WebsiteSettingsRegistry::GetInstance()->Get(type); ++ if (settingInfo && settingInfo->show_into_info_page()) { ++ if (settingInfo->title_ui() != 0) ++ return l10n_util::GetStringUTF16(settingInfo->title_ui()); ++ } + for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id); - } +@@ -581,6 +588,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { + // static + std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( + ContentSettingsType type) { + const content_settings::WebsiteSettingsInfo* settingInfo = + content_settings::WebsiteSettingsRegistry::GetInstance()->Get(type); -+ if (settingInfo && settingInfo->show_into_info_page() && -+ settingInfo->permission_type_ui() != 0) { -+ return l10n_util::GetStringUTF16(settingInfo->permission_type_ui()); ++ if (settingInfo && settingInfo->show_into_info_page()) { ++ if (settingInfo->mid_sentence_ui() != 0) ++ return l10n_util::GetStringUTF16(settingInfo->mid_sentence_ui()); + } - NOTREACHED(); - return std::u16string(); - } -@@ -585,6 +592,12 @@ std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( + for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id_mid_sentence); - } -+ const content_settings::WebsiteSettingsInfo* settingInfo = -+ content_settings::WebsiteSettingsRegistry::GetInstance()->Get(type); -+ if (settingInfo && settingInfo->show_into_info_page() && -+ settingInfo->permission_type_ui_mid_sentence() != 0) { -+ return l10n_util::GetStringUTF16(settingInfo->permission_type_ui_mid_sentence()); -+ } - NOTREACHED(); - return std::u16string(); - } @@ -972,6 +985,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; @@ -1787,6 +2274,16 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in return false; } +diff --git a/components/site_settings_strings.grdp b/components/site_settings_strings.grdp +--- a/components/site_settings_strings.grdp ++++ b/components/site_settings_strings.grdp +@@ -1,5 +1,6 @@ + + ++ + + + Intrusive ads diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/third_party/blink/public/platform/web_content_settings_client.h --- a/third_party/blink/public/platform/web_content_settings_client.h +++ b/third_party/blink/public/platform/web_content_settings_client.h diff --git a/build/patches/JIT-site-settings.patch b/build/patches/JIT-site-settings.patch index 69942e0b..6fcead8f 100644 --- a/build/patches/JIT-site-settings.patch +++ b/build/patches/JIT-site-settings.patch @@ -18,22 +18,24 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../permission_javascript_jit.png | Bin 0 -> 518 bytes .../permission_javascript_jit.png | Bin 0 -> 629 bytes .../permission_javascript_jit.png | Bin 0 -> 797 bytes - .../BromiteJavascriptJITContentSetting.java | 87 ++++++++++++++++++ - .../javascript_jit.grdp | 18 ++++ - .../core/browser/content_settings_registry.cc | 8 +- - 9 files changed, 116 insertions(+), 2 deletions(-) + .../BromiteJavascriptJITContentSetting.java | 92 ++++++++++++++++++ + .../javascript_jit.grdp | 21 ++++ + .../javascript_jit.inc | 13 +++ + .../core/browser/content_settings_registry.cc | 2 +- + 10 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/permission_javascript_jit.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/permission_javascript_jit.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/permission_javascript_jit.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxhdpi/permission_javascript_jit.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxxhdpi/permission_javascript_jit.png create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteJavascriptJITContentSetting.java - create mode 100644 components/browser_ui/strings/android/bromite_content_settings/javascript_jit.grdp + create mode 100644 components/browser_ui/strings/bromite_content_settings/javascript_jit.grdp + create mode 100644 components/content_settings/core/browser/bromite_content_settings/javascript_jit.inc diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -203,6 +203,7 @@ android_resources("java_resources") { +@@ -202,6 +202,7 @@ android_resources("java_resources") { "java/res/drawable-hdpi/permission_background_sync.png", "java/res/drawable-hdpi/permission_images.png", "java/res/drawable-hdpi/permission_javascript.png", @@ -41,7 +43,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-hdpi/permission_popups.png", "java/res/drawable-hdpi/permission_protected_media.png", "java/res/drawable-hdpi/settings_sensors.png", -@@ -211,6 +212,7 @@ android_resources("java_resources") { +@@ -210,6 +211,7 @@ android_resources("java_resources") { "java/res/drawable-mdpi/permission_background_sync.png", "java/res/drawable-mdpi/permission_images.png", "java/res/drawable-mdpi/permission_javascript.png", @@ -49,7 +51,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-hdpi/settings_autoplay.png", "java/res/drawable-xhdpi/settings_autoplay.png", "java/res/drawable-xxhdpi/settings_autoplay.png", -@@ -224,6 +226,7 @@ android_resources("java_resources") { +@@ -223,6 +225,7 @@ android_resources("java_resources") { "java/res/drawable-xhdpi/permission_background_sync.png", "java/res/drawable-xhdpi/permission_images.png", "java/res/drawable-xhdpi/permission_javascript.png", @@ -57,7 +59,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-xhdpi/permission_popups.png", "java/res/drawable-xhdpi/permission_protected_media.png", "java/res/drawable-xhdpi/settings_sensors.png", -@@ -232,6 +235,7 @@ android_resources("java_resources") { +@@ -231,6 +234,7 @@ android_resources("java_resources") { "java/res/drawable-xxhdpi/permission_background_sync.png", "java/res/drawable-xxhdpi/permission_images.png", "java/res/drawable-xxhdpi/permission_javascript.png", @@ -65,7 +67,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-xxhdpi/permission_popups.png", "java/res/drawable-xxhdpi/permission_protected_media.png", "java/res/drawable-xxhdpi/settings_sensors.png", -@@ -240,6 +244,7 @@ android_resources("java_resources") { +@@ -239,6 +243,7 @@ android_resources("java_resources") { "java/res/drawable-xxxhdpi/permission_background_sync.png", "java/res/drawable-xxxhdpi/permission_images.png", "java/res/drawable-xxxhdpi/permission_javascript.png", @@ -175,7 +177,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteJavascriptJITContentSetting.java -@@ -0,0 +1,87 @@ +@@ -0,0 +1,92 @@ +/* + This file is part of Bromite. + @@ -244,6 +246,11 @@ new file mode 100644 + } + + @Override ++ public int getCategoryDescription() { ++ return R.string.settings_site_settings_javascript_jit_description; ++ } ++ ++ @Override + public boolean requiresTriStateContentSetting() { + return false; + } @@ -263,33 +270,54 @@ new file mode 100644 + return value != ContentSettingValues.BLOCK; + } +} -diff --git a/components/browser_ui/strings/android/bromite_content_settings/javascript_jit.grdp b/components/browser_ui/strings/android/bromite_content_settings/javascript_jit.grdp +diff --git a/components/browser_ui/strings/bromite_content_settings/javascript_jit.grdp b/components/browser_ui/strings/bromite_content_settings/javascript_jit.grdp new file mode 100644 --- /dev/null -+++ b/components/browser_ui/strings/android/bromite_content_settings/javascript_jit.grdp -@@ -0,0 +1,18 @@ ++++ b/components/browser_ui/strings/bromite_content_settings/javascript_jit.grdp +@@ -0,0 +1,21 @@ + + -+ ++ + JavaScript JIT + -+ -+ Allow JIT on a specific site. ++ ++ Enable the JIT compiler and WebAssembly support in V8 + -+ -+ Block JIT on a specific site. ++ ++ Allow JIT and WebAssembly on a specific site. + -+ ++ ++ Block JIT and WebAssembly on a specific site. ++ ++ + Allow sites to use just-in-time compilation; more performant but a constant source of security vulnerabilities. + -+ ++ + Block sites from using just-in-time compilation, using only interpreted JavaScript; less performant but more secure against security vulnerabilities. + + +diff --git a/components/content_settings/core/browser/bromite_content_settings/javascript_jit.inc b/components/content_settings/core/browser/bromite_content_settings/javascript_jit.inc +new file mode 100644 +--- /dev/null ++++ b/components/content_settings/core/browser/bromite_content_settings/javascript_jit.inc +@@ -0,0 +1,13 @@ ++ content_settings::WebsiteSettingsRegistry::GetInstance() ++ ->GetMutable(ContentSettingsType::JAVASCRIPT_JIT) ++ ->set_show_into_info_page() ++ .set_desktop_ui() ++ .set_is_renderer_content_setting() ++ .set_title_ui(IDS_JAVASCRIPT_JIT_PERMISSION_TITLE) ++ .set_description_ui(IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_DESCRIPTION) ++ .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_JAVASCRIPT_JIT_ENABLED) ++ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_JAVASCRIPT_JIT_DISABLED) ++ .set_allowed_exceptions_ui(IDS_WEBSITE_SETTINGS_ADD_SITE_DESCRIPTION_JAVASCRIPT_JIT_ALLOW) ++ .set_blocked_exceptions_ui(IDS_WEBSITE_SETTINGS_ADD_SITE_DESCRIPTION_JAVASCRIPT_JIT_BLOCK) ++ .set_mid_sentence_ui(IDS_JAVASCRIPT_JIT_PERMISSION_TITLE); ++ diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -518,14 +518,18 @@ void ContentSettingsRegistry::Init() { +@@ -509,7 +509,7 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit", @@ -298,17 +326,5 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. /*allowlisted_schemes=*/{}, /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, - WebsiteSettingsRegistry::DESKTOP | - WebsiteSettingsRegistry::PLATFORM_ANDROID, - ContentSettingsInfo::INHERIT_IN_INCOGNITO, -- ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -+ /*show_into_info_page*/ true, -+ /*is_renderer_content_setting*/ true, -+ /*permission_type_ui*/ IDS_JAVASCRIPT_JIT_PERMISSION_TITLE, -+ /*permission_type_ui_mid_sentence*/ IDS_JAVASCRIPT_JIT_PERMISSION_TITLE); - - Register(ContentSettingsType::PRIVATE_NETWORK_GUARD, "private-network-guard", - CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, -- 2.25.1 diff --git a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch index 0c83f3ae..46dc7fa1 100644 --- a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch +++ b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch @@ -11,24 +11,26 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../res/drawable-xhdpi/settings_autoplay.png | Bin 0 -> 551 bytes .../res/drawable-xxhdpi/settings_autoplay.png | Bin 0 -> 792 bytes .../drawable-xxxhdpi/settings_autoplay.png | Bin 0 -> 1064 bytes - .../impl/BromiteAutoplayContentSetting.java | 87 ++++++++++++++++++ - .../bromite_content_settings/autoplay.grdp | 15 +++ - .../core/browser/content_settings_registry.cc | 8 +- + .../impl/BromiteAutoplayContentSetting.java | 92 ++++++++++++++++++ + .../bromite_content_settings/autoplay.grdp | 21 ++++ + .../bromite_content_settings/autoplay.inc | 13 +++ + .../core/browser/content_settings_registry.cc | 2 +- .../core/html/media/autoplay_policy.cc | 14 +++ .../core/html/media/autoplay_policy.h | 4 + - 11 files changed, 131 insertions(+), 2 deletions(-) + 12 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_autoplay.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/settings_autoplay.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_autoplay.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxhdpi/settings_autoplay.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxxhdpi/settings_autoplay.png create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteAutoplayContentSetting.java - create mode 100644 components/browser_ui/strings/android/bromite_content_settings/autoplay.grdp + create mode 100644 components/browser_ui/strings/bromite_content_settings/autoplay.grdp + create mode 100644 components/content_settings/core/browser/bromite_content_settings/autoplay.inc diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -209,6 +209,11 @@ android_resources("java_resources") { +@@ -208,6 +208,11 @@ android_resources("java_resources") { "java/res/drawable-mdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-mdpi/permission_background_sync.png", "java/res/drawable-mdpi/permission_javascript.png", @@ -152,7 +154,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteAutoplayContentSetting.java -@@ -0,0 +1,87 @@ +@@ -0,0 +1,92 @@ +/* + This file is part of Bromite. + @@ -221,6 +223,11 @@ new file mode 100644 + } + + @Override ++ public int getCategoryDescription() { ++ return R.string.website_settings_add_site_description_autoplay; ++ } ++ ++ @Override + public boolean requiresTriStateContentSetting() { + return false; + } @@ -240,30 +247,54 @@ new file mode 100644 + return value != ContentSettingValues.BLOCK; + } +} -diff --git a/components/browser_ui/strings/android/bromite_content_settings/autoplay.grdp b/components/browser_ui/strings/android/bromite_content_settings/autoplay.grdp +diff --git a/components/browser_ui/strings/bromite_content_settings/autoplay.grdp b/components/browser_ui/strings/bromite_content_settings/autoplay.grdp new file mode 100644 --- /dev/null -+++ b/components/browser_ui/strings/android/bromite_content_settings/autoplay.grdp -@@ -0,0 +1,15 @@ ++++ b/components/browser_ui/strings/bromite_content_settings/autoplay.grdp +@@ -0,0 +1,21 @@ + + -+ ++ + Autoplay + -+ ++ + Allow autoplay for a specific site. + -+ ++ + Allow sites to automatically play muted videos + -+ ++ + Autoplay disabled + ++ ++ Allowed to autoplay ++ ++ ++ Not allowed to autoplay ++ + +diff --git a/components/content_settings/core/browser/bromite_content_settings/autoplay.inc b/components/content_settings/core/browser/bromite_content_settings/autoplay.inc +new file mode 100644 +--- /dev/null ++++ b/components/content_settings/core/browser/bromite_content_settings/autoplay.inc +@@ -0,0 +1,13 @@ ++ content_settings::WebsiteSettingsRegistry::GetInstance() ++ ->GetMutable(ContentSettingsType::AUTOPLAY) ++ ->set_show_into_info_page() ++ .set_desktop_ui() ++ .set_is_renderer_content_setting() ++ .set_title_ui(IDS_AUTOPLAY_PERMISSION_TITLE) ++ .set_description_ui(IDS_WEBSITE_SETTINGS_ADD_SITE_DESCRIPTION_AUTOPLAY) ++ .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_AUTOPLAY_ENABLED) ++ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_AUTOPLAY_DISABLED) ++ .set_allowed_exceptions_ui(IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_ALLOWED_EXCEPTIONS) ++ .set_blocked_exceptions_ui(IDS_SETTINGS_SITE_SETTINGS_AUTOPLAY_BLOCKED_EXCEPTIONS) ++ .set_mid_sentence_ui(IDS_AUTOPLAY_PERMISSION_TITLE); ++ diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -238,14 +238,18 @@ void ContentSettingsRegistry::Init() { +@@ -237,7 +237,7 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::INHERIT_IN_INCOGNITO, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); @@ -272,18 +303,6 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. WebsiteSettingsInfo::UNSYNCABLE, /*allowlisted_schemes=*/{}, /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, - WebsiteSettingsRegistry::DESKTOP | - WebsiteSettingsRegistry::PLATFORM_ANDROID, - ContentSettingsInfo::INHERIT_IN_INCOGNITO, -- ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -+ /*show_into_info_page*/ false, -+ /*is_renderer_content_setting*/ true, -+ /*permission_type_ui*/ IDS_AUTOPLAY_PERMISSION_TITLE, -+ /*permission_type_ui_mid_sentence*/ IDS_AUTOPLAY_PERMISSION_TITLE); - - Register(ContentSettingsType::SOUND, "sound", CONTENT_SETTING_ALLOW, - WebsiteSettingsInfo::UNSYNCABLE, /*allowlisted_schemes=*/{}, diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/third_party/blink/renderer/core/html/media/autoplay_policy.cc --- a/third_party/blink/renderer/core/html/media/autoplay_policy.cc +++ b/third_party/blink/renderer/core/html/media/autoplay_policy.cc diff --git a/build/patches/Site-setting-for-images.patch b/build/patches/Site-setting-for-images.patch index 6f303ba6..c674c53e 100644 --- a/build/patches/Site-setting-for-images.patch +++ b/build/patches/Site-setting-for-images.patch @@ -11,23 +11,25 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../res/drawable-xhdpi/permission_images.png | Bin 0 -> 316 bytes .../res/drawable-xxhdpi/permission_images.png | Bin 0 -> 449 bytes .../drawable-xxxhdpi/permission_images.png | Bin 0 -> 532 bytes - .../impl/BromiteImagesContentSetting.java | 87 ++++++++++++++++++ + .../impl/BromiteImagesContentSetting.java | 92 ++++++++++++++++++ .../bromite_content_settings/images.grdp | 23 +++++ - .../core/browser/content_settings_registry.cc | 8 +- + .../bromite_content_settings/images.inc | 7 ++ + .../core/browser/content_settings_registry.cc | 2 +- .../core/browser/content_settings_utils.cc | 8 +- - 10 files changed, 123 insertions(+), 8 deletions(-) + 11 files changed, 130 insertions(+), 7 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/permission_images.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/permission_images.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/permission_images.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxhdpi/permission_images.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxxhdpi/permission_images.png create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteImagesContentSetting.java - create mode 100644 components/browser_ui/strings/android/bromite_content_settings/images.grdp + create mode 100644 components/browser_ui/strings/bromite_content_settings/images.grdp + create mode 100644 components/content_settings/core/browser/bromite_content_settings/images.inc diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -201,6 +201,7 @@ android_resources("java_resources") { +@@ -200,6 +200,7 @@ android_resources("java_resources") { sources = [ "java/res/drawable-hdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-hdpi/permission_background_sync.png", @@ -35,7 +37,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-hdpi/permission_javascript.png", "java/res/drawable-hdpi/permission_popups.png", "java/res/drawable-hdpi/permission_protected_media.png", -@@ -208,6 +209,7 @@ android_resources("java_resources") { +@@ -207,6 +208,7 @@ android_resources("java_resources") { "java/res/drawable-hdpi/web_asset.png", "java/res/drawable-mdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-mdpi/permission_background_sync.png", @@ -43,7 +45,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-mdpi/permission_javascript.png", "java/res/drawable-hdpi/settings_autoplay.png", "java/res/drawable-xhdpi/settings_autoplay.png", -@@ -220,6 +222,7 @@ android_resources("java_resources") { +@@ -219,6 +221,7 @@ android_resources("java_resources") { "java/res/drawable-mdpi/web_asset.png", "java/res/drawable-xhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xhdpi/permission_background_sync.png", @@ -51,7 +53,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-xhdpi/permission_javascript.png", "java/res/drawable-xhdpi/permission_popups.png", "java/res/drawable-xhdpi/permission_protected_media.png", -@@ -227,6 +230,7 @@ android_resources("java_resources") { +@@ -226,6 +229,7 @@ android_resources("java_resources") { "java/res/drawable-xhdpi/web_asset.png", "java/res/drawable-xxhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xxhdpi/permission_background_sync.png", @@ -59,7 +61,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-xxhdpi/permission_javascript.png", "java/res/drawable-xxhdpi/permission_popups.png", "java/res/drawable-xxhdpi/permission_protected_media.png", -@@ -234,6 +238,7 @@ android_resources("java_resources") { +@@ -233,6 +237,7 @@ android_resources("java_resources") { "java/res/drawable-xxhdpi/web_asset.png", "java/res/drawable-xxxhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xxxhdpi/permission_background_sync.png", @@ -153,7 +155,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteImagesContentSetting.java -@@ -0,0 +1,87 @@ +@@ -0,0 +1,92 @@ +/* + This file is part of Bromite. + @@ -222,6 +224,11 @@ new file mode 100644 + } + + @Override ++ public int getCategoryDescription() { ++ return 0; ++ } ++ ++ @Override + public boolean requiresTriStateContentSetting() { + return false; + } @@ -241,53 +248,58 @@ new file mode 100644 + return value != ContentSettingValues.BLOCK; + } +} -diff --git a/components/browser_ui/strings/android/bromite_content_settings/images.grdp b/components/browser_ui/strings/android/bromite_content_settings/images.grdp +diff --git a/components/browser_ui/strings/bromite_content_settings/images.grdp b/components/browser_ui/strings/bromite_content_settings/images.grdp new file mode 100644 --- /dev/null -+++ b/components/browser_ui/strings/android/bromite_content_settings/images.grdp ++++ b/components/browser_ui/strings/bromite_content_settings/images.grdp @@ -0,0 +1,23 @@ + + + -+ ++ + Images + -+ -+ images ++ ++ Images + + -+ ++ + Images + -+ ++ + Allow images on websites you specify while blocking them for the rest of the web + -+ ++ + Allow sites to load images + -+ ++ + Disallow sites to load images + + +diff --git a/components/content_settings/core/browser/bromite_content_settings/images.inc b/components/content_settings/core/browser/bromite_content_settings/images.inc +new file mode 100644 +--- /dev/null ++++ b/components/content_settings/core/browser/bromite_content_settings/images.inc +@@ -0,0 +1,7 @@ ++ content_settings::WebsiteSettingsRegistry::GetInstance() ++ ->GetMutable(ContentSettingsType::IMAGES) ++ ->set_show_into_info_page() ++ .set_is_renderer_content_setting() ++ .set_title_ui(IDS_SITE_SETTINGS_TYPE_IMAGES) ++ .set_mid_sentence_ui(IDS_SITE_SETTINGS_TYPE_IMAGES_MID_SENTENCE); ++ diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -97,9 +97,13 @@ void ContentSettingsRegistry::Init() { +@@ -96,7 +96,7 @@ void ContentSettingsRegistry::Init() { {kChromeUIScheme, kChromeDevToolsScheme, kExtensionScheme}, /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, WebsiteSettingsInfo::TOP_ORIGIN_WITH_RESOURCE_EXCEPTIONS_SCOPE, - WebsiteSettingsRegistry::DESKTOP, + WebsiteSettingsRegistry::DESKTOP | WebsiteSettingsRegistry::PLATFORM_ANDROID, ContentSettingsInfo::INHERIT_IN_INCOGNITO, -- ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -+ /*show_into_info_page*/ true, -+ /*is_renderer_content_setting*/ true, -+ /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_IMAGES, -+ /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_IMAGES_MID_SENTENCE); + ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); - Register(ContentSettingsType::JAVASCRIPT, "javascript", CONTENT_SETTING_ALLOW, - WebsiteSettingsInfo::SYNCABLE, diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc diff --git a/build/patches/Timezone-customization.patch b/build/patches/Timezone-customization.patch index 35dba817..9c94cfd9 100644 --- a/build/patches/Timezone-customization.patch +++ b/build/patches/Timezone-customization.patch @@ -26,28 +26,30 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../WebsitePermissionsFetcher.java | 2 + .../WebsitePreferenceBridge.java | 12 ++ .../android/website_preference_bridge.cc | 16 ++ - .../bromite_content_settings/timezone.grdp | 36 ++++ + .../bromite_content_settings/timezone.grdp | 39 ++++ + .../timezone_override.inc | 24 +++ .../browser/content_settings_pref_provider.cc | 16 ++ .../browser/content_settings_pref_provider.h | 4 + - .../core/browser/content_settings_registry.cc | 13 ++ .../core/browser/content_settings_utils.cc | 5 + .../core/browser/host_content_settings_map.cc | 8 + .../core/browser/host_content_settings_map.h | 3 + + .../bromite_content_settings/TIMEZONE.inc | 2 + .../core/common/content_settings.h | 1 + .../core/common/content_settings.mojom | 1 + .../common/content_settings_mojom_traits.cc | 3 +- .../common/content_settings_mojom_traits.h | 5 + - .../core/common/content_settings_types.h | 3 + .../core/common/pref_names.cc | 3 + .../content_settings/core/common/pref_names.h | 2 + .../renderer/content_settings_agent_impl.cc | 80 ++++++++ .../renderer/content_settings_agent_impl.h | 11 + .../WebLayerSiteSettingsDelegate.java | 3 + - 34 files changed, 664 insertions(+), 6 deletions(-) + 34 files changed, 677 insertions(+), 6 deletions(-) create mode 100755 components/browser_ui/site_settings/android/java/res/layout/time_zone_select_dialog.xml create mode 100755 components/browser_ui/site_settings/android/java/res/layout/timezoneoverride_site_settings_preference.xml create mode 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java - create mode 100644 components/browser_ui/strings/android/bromite_content_settings/timezone.grdp + create mode 100644 components/browser_ui/strings/bromite_content_settings/timezone.grdp + create mode 100644 components/content_settings/core/browser/bromite_content_settings/timezone_override.inc + create mode 100644 components/content_settings/core/common/bromite_content_settings/TIMEZONE.inc diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java @@ -93,7 +95,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] resources_package = "org.chromium.components.browser_ui.site_settings" -@@ -263,6 +264,8 @@ android_resources("java_resources") { +@@ -262,6 +263,8 @@ android_resources("java_resources") { "java/res/xml/site_settings_preferences.xml", "java/res/xml/site_settings_preferences_with_categories.xml", "java/res/xml/website_preferences.xml", @@ -447,7 +449,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureTriStateToggle(triStateToggle, contentType); break; case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: -@@ -1200,6 +1239,12 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1204,6 +1243,12 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment } BromiteCustomContentSettingImpl.configureGlobalToggles(mCategory, screen); @@ -460,7 +462,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (permissionBlockedByOs) { maybeShowOsWarning(screen); -@@ -1355,6 +1400,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1359,6 +1404,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment triStateToggle.initialize(contentType, setting, descriptionIds); } @@ -778,7 +780,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c case ContentSettingsType.AR: case ContentSettingsType.CLIPBOARD_READ_WRITE: @@ -212,6 +213,7 @@ public class WebsitePermissionsFetcher { - for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES; type++) { + for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES_BROMITE; type++) { addFetcherForContentSettingsType(queue, type); } + queue.add(new ExceptionInfoFetcher(ContentSettingsType.TIMEZONE_OVERRIDE)); @@ -843,47 +845,79 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid + GetHostContentSettingsMap(jbrowser_context_handle)->GetTimezoneOverrideValue(custom_timezone); + return ConvertUTF8ToJavaString(env, custom_timezone); +} -diff --git a/components/browser_ui/strings/android/bromite_content_settings/timezone.grdp b/components/browser_ui/strings/android/bromite_content_settings/timezone.grdp +diff --git a/components/browser_ui/strings/bromite_content_settings/timezone.grdp b/components/browser_ui/strings/bromite_content_settings/timezone.grdp new file mode 100644 --- /dev/null -+++ b/components/browser_ui/strings/android/bromite_content_settings/timezone.grdp -@@ -0,0 +1,36 @@ ++++ b/components/browser_ui/strings/bromite_content_settings/timezone.grdp +@@ -0,0 +1,39 @@ + + -+ ++ ++ Timezone override ++ ++ + Override timezone with a custom or random one, or use the system timezone + -+ ++ + None (use system timezone) + -+ ++ + Random + -+ ++ + System timezone + -+ ++ + Custom timezone + -+ ++ + Specify a custom timezone (default UTC) + -+ ++ + Random (for each page) + -+ ++ + Choose Timezone... + -+ ++ + Choose Timezone + -+ ++ + Select + -+ ++ + Timezone override + + +diff --git a/components/content_settings/core/browser/bromite_content_settings/timezone_override.inc b/components/content_settings/core/browser/bromite_content_settings/timezone_override.inc +new file mode 100644 +--- /dev/null ++++ b/components/content_settings/core/browser/bromite_content_settings/timezone_override.inc +@@ -0,0 +1,24 @@ ++ Register(ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override", CONTENT_SETTING_ALLOW, ++ WebsiteSettingsInfo::SYNCABLE, ++ /*allowlisted_schemes=*/{}, ++ /*valid_settings=*/{CONTENT_SETTING_ALLOW, // use system time ++ CONTENT_SETTING_ASK, // custom timezone, default UTC ++ CONTENT_SETTING_BLOCK}, // random ++ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, ++ WebsiteSettingsRegistry::ALL_PLATFORMS, ++ ContentSettingsInfo::INHERIT_IN_INCOGNITO, ++ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ ++ content_settings::WebsiteSettingsRegistry::GetInstance() ++ ->GetMutable(ContentSettingsType::TIMEZONE_OVERRIDE) ++ ->set_show_into_info_page() ++ .set_desktop_ui() ++ .set_is_renderer_content_setting() ++ .set_title_ui(IDS_SITE_SETTINGS_TIMEZONE_OVERRIDE_TITLE) ++ .set_description_ui(IDS_WEBSITE_SETTINGS_TIMEOVERRIDE_INFO) ++ .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_TIMEZONE_OVERRIDE_ALLOWED) ++ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_TIMEZONE_OVERRIDE_RANDOM) ++ .set_allowed_exceptions_ui(IDS_WEBSITE_SETTINGS_CATEGORY_TIMEZONE_OVERRIDE_ALLOWED) ++ .set_blocked_exceptions_ui(IDS_WEBSITE_SETTINGS_CATEGORY_TIMEZONE_OVERRIDE_RANDOM) ++ .set_mid_sentence_ui(IDS_SITE_SETTINGS_TIMEZONE_OVERRIDE_TITLE); ++ diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc --- a/components/content_settings/core/browser/content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc @@ -943,29 +977,6 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov }; } // namespace content_settings -diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc ---- a/components/content_settings/core/browser/content_settings_registry.cc -+++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -557,6 +557,19 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::INHERIT_IN_INCOGNITO, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); - -+ Register(ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override", CONTENT_SETTING_ALLOW, -+ WebsiteSettingsInfo::SYNCABLE, -+ /*allowlisted_schemes=*/{}, -+ /*valid_settings=*/{CONTENT_SETTING_ALLOW, // use system time -+ CONTENT_SETTING_ASK, // custom timezone, default UTC -+ CONTENT_SETTING_BLOCK}, // random -+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, -+ WebsiteSettingsRegistry::PLATFORM_ANDROID, -+ ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -+ /*show_into_info_page*/ false, -+ /*is_renderer_content_setting*/ true); -+ - Register(ContentSettingsType::FEDERATED_IDENTITY_API, "webid-api", - CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, - /*allowlisted_schemes=*/{}, diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc @@ -1012,6 +1023,13 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. private: friend class base::RefCountedThreadSafe; friend class content_settings::TestUtils; +diff --git a/components/content_settings/core/common/bromite_content_settings/TIMEZONE.inc b/components/content_settings/core/common/bromite_content_settings/TIMEZONE.inc +new file mode 100644 +--- /dev/null ++++ b/components/content_settings/core/common/bromite_content_settings/TIMEZONE.inc +@@ -0,0 +1,2 @@ ++ // Content setting for timezone customization functionality. ++ TIMEZONE_OVERRIDE, diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h @@ -1060,19 +1078,6 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai static bool Read( content_settings::mojom::RendererContentSettingRulesDataView data, RendererContentSettingRules* out); -diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h ---- a/components/content_settings/core/common/content_settings_types.h -+++ b/components/content_settings/core/common/content_settings_types.h -@@ -226,6 +226,9 @@ enum class ContentSettingsType : int32_t { - // by the File System Access API. - FILE_SYSTEM_LAST_PICKED_DIRECTORY, - -+ // Content setting for timezone customization functionality. -+ TIMEZONE_OVERRIDE, -+ - // Controls access to the getDisplayMedia API when {preferCurrentTab: true} - // is specified. - // TODO(crbug.com/1150788): Also apply this when getDisplayMedia() is called diff --git a/components/content_settings/core/common/pref_names.cc b/components/content_settings/core/common/pref_names.cc --- a/components/content_settings/core/common/pref_names.cc +++ b/components/content_settings/core/common/pref_names.cc