From 4f1048b6d4186897676d08d18c49191f44488a53 Mon Sep 17 00:00:00 2001 From: Rootkit404 <175176948+RKNF404@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:13:17 -0500 Subject: [PATCH 01/12] feat: add preferences for various features --- patches/disable-extensions-by-default.patch | 14 +--- patches/expose-flags.patch | 33 ++++---- patches/user-preferences.patch | 87 +++++++++++++++++++++ 3 files changed, 105 insertions(+), 29 deletions(-) create mode 100644 patches/user-preferences.patch diff --git a/patches/disable-extensions-by-default.patch b/patches/disable-extensions-by-default.patch index 1f10f150..ed8a87f8 100644 --- a/patches/disable-extensions-by-default.patch +++ b/patches/disable-extensions-by-default.patch @@ -2,22 +2,12 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil index 89254771117da..411ef3dfa5908 100644 --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc -@@ -42,6 +42,7 @@ - #include "content/public/browser/web_contents.h" - #include "content/public/browser/web_ui.h" - #include "extensions/buildflags/buildflags.h" -+#include "base/command_line.h" - - #if BUILDFLAG(IS_CHROMEOS) - #include "ash/constants/ash_switches.h" -@@ -321,7 +322,9 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -321,7 +321,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterIntegerPref(prefs::kContextualSearchPromoCardShownCount, 0); #endif // BUILDFLAG(IS_ANDROID) registry->RegisterStringPref(prefs::kSessionExitType, std::string()); - registry->RegisterBooleanPref(prefs::kDisableExtensions, false); -+ registry->RegisterBooleanPref(prefs::kDisableExtensions, !(base::CommandLine:: -+ ForCurrentProcess()->HasSwitch( -+ "enable-extensions"))); ++ registry->RegisterBooleanPref(prefs::kDisableExtensions, true); #if BUILDFLAG(ENABLE_EXTENSIONS) registry->RegisterBooleanPref(extensions::pref_names::kAlertsInitialized, false); diff --git a/patches/expose-flags.patch b/patches/expose-flags.patch index 0d29c420..1922a7af 100644 --- a/patches/expose-flags.patch +++ b/patches/expose-flags.patch @@ -1,39 +1,38 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc -index 9d0181f447a1a..8e10017c678f9 100644 +index ad599311ac46d..0f57380771272 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -4220,6 +4220,39 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4237,7 +4237,37 @@ const FeatureEntry kFeatureEntries[] = { + // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. #include "build/chromeos_buildflags.h" - #include "chrome/browser/unexpire_flags_gen.inc" -+ {"disable-internal-page-jit", "Disable Internal Page Jit", -+ "Disable JIT for JavaScript and WASM on internal pages. Enabled by " -+ "default. This feature is provided by hardened-chromium.", -+ kOsAll, FEATURE_VALUE_TYPE(features::kDisableInternalPageJit)}, +-#include "chrome/browser/unexpire_flags_gen.inc" ++#include "chrome/browser/unexpire_flags_gen.inc", + {"incognito-launch", "Incognito Launch", + "Launch external links and open new sessions in Incognito. Disabled by " + "default. This feature is provided by hardened-chromium.", + kOsAll, FEATURE_VALUE_TYPE(features::kIncognitoLaunch)}, + {"disable-cross-origin-referrers", "Clear cross-origin referrers", -+ "Clears referrers when navigating across origins. Defaults to disabled. " ++ "Clears referrers when navigating across origins. Disabled by default. " + "This feature is provided by hardened-chromium.", kOsAll, + FEATURE_VALUE_TYPE(net::features::kDisableCrossOriginReferrers)}, + {"cross-origin-trim-referrer", "Cross-origin referrer trimming", + "Trims the referrer to just the origin on cross origin navigation. " -+ "Defaults to enabled. This feature is exposed by hardened-chromium.", ++ "Enabled by default. This feature is exposed by hardened-chromium.", + kOsAll, + FEATURE_VALUE_TYPE(net::features::kCapReferrerToOriginOnCrossOrigin)}, -+ {"hide-profile-icon", "Hide profile icon in toolbar", -+ "Hides the profile icon in the toolbar in regular profiles. Defaults " -+ "to enabled. This feature is provided by hardened-chromium." , kOsAll, -+ FEATURE_VALUE_TYPE(features::kHideProfileIcon)}, + {"show-punycode-domains", "Show punycode for IDN domains", + "Shows punycode for IDN domains to mitigate IDN homograph attacks. " -+ "Defaults to disabled. This feature is provided by hardened-chromium.", ++ "Disabled by default. This feature is provided by hardened-chromium.", + kOsAll, FEATURE_VALUE_TYPE(url::kShowPunycodeDomains)}, -+ {"extensions-support", "Extensions Support", -+ "Toggle extensions support. This switch is provided by hardened-chromium.", -+ kOsAll, SINGLE_VALUE_TYPE("enable-extensions")}, ++ {"hide-profile-icon", "Hide profile icon in toolbar", ++ "Hides the profile icon in the toolbar in regular profiles. Enabled " ++ "by default. This feature is provided by hardened-chromium." , kOsAll, ++ FEATURE_VALUE_TYPE(features::kHideProfileIcon)}, ++ {"disable-internal-page-jit", "Disable Internal Page Jit", ++ "Disable JIT for JavaScript and WASM on internal pages. Enabled by " ++ "default. This feature is provided by hardened-chromium.", ++ kOsAll, FEATURE_VALUE_TYPE(features::kDisableInternalPageJit)} + {"enable-gssapi", "Enable GSSAPI Authentication", + "Enables GSSAPI for authentication. WARNING! This can cause the " + "network service sandbox to become persistently disabled, enable only " diff --git a/patches/user-preferences.patch b/patches/user-preferences.patch new file mode 100644 index 00000000..f8ff7f32 --- /dev/null +++ b/patches/user-preferences.patch @@ -0,0 +1,87 @@ +diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc +index 9be2589cac759..be53fe96dd397 100644 +--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc ++++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc +@@ -172,6 +172,16 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { + } + s_allowlist = new PrefsUtil::TypedPrefMap(); + ++ // hardened-chromium ++ (*s_allowlist)[::prefs::kWebRTCIPHandlingPolicy] = ++ settings_api::PrefType::kString; ++ (*s_allowlist)[::prefs::kDisable3DAPIs] = ++ settings_api::PrefType::kBoolean; ++ (*s_allowlist)[::prefs::kWebKitForceDarkModeEnabled] = ++ settings_api::PrefType::kBoolean; ++ (*s_allowlist)[::prefs::kDisableExtensions] = ++ settings_api::PrefType::kBoolean; ++ + // Miscellaneous + (*s_allowlist)[::embedder_support::kAlternateErrorPagesEnabled] = + settings_api::PrefType::kBoolean; +diff --git a/chrome/browser/resources/settings/appearance_page/appearance_page.html b/chrome/browser/resources/settings/appearance_page/appearance_page.html +index 47120511edffd..acbcbfc8e4c1a 100644 +--- a/chrome/browser/resources/settings/appearance_page/appearance_page.html ++++ b/chrome/browser/resources/settings/appearance_page/appearance_page.html +@@ -250,6 +250,11 @@ + inverted> + + ++
++ ++ +
+