From 020c222e254bf19d852c9c23f2b20ec698c7a0cc Mon Sep 17 00:00:00 2001
From: Chris Xiong <chirs241097@gmail.com>
Date: Sat, 7 Jun 2025 01:55:38 -0400
Subject: chromium-139.0.7219.3?

---
 .../files/chromium-139-mv2-ungoogled.patch         | 172 +++++++++++++++++++++
 1 file changed, 172 insertions(+)
 create mode 100644 www-client/chromium/files/chromium-139-mv2-ungoogled.patch

(limited to 'www-client/chromium/files/chromium-139-mv2-ungoogled.patch')

diff --git a/www-client/chromium/files/chromium-139-mv2-ungoogled.patch b/www-client/chromium/files/chromium-139-mv2-ungoogled.patch
new file mode 100644
index 0000000..816e9aa
--- /dev/null
+++ b/www-client/chromium/files/chromium-139-mv2-ungoogled.patch
@@ -0,0 +1,172 @@
+diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator_shared.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator_shared.cc
+index 3950614ed7..fecfe19744 100644
+--- a/chrome/browser/extensions/api/developer_private/extension_info_generator_shared.cc
++++ b/chrome/browser/extensions/api/developer_private/extension_info_generator_shared.cc
+@@ -596,17 +596,6 @@ void ExtensionInfoGeneratorShared::FillExtensionInfo(
+     info.controlled_info.emplace();
+     info.controlled_info->text =
+         l10n_util::GetStringUTF8(IDS_EXTENSIONS_INSTALL_LOCATION_ENTERPRISE);
+-  } else {
+-    // Create Safety Hub information for any non-enterprise extension.
+-    developer::SafetyCheckWarningReason warning_reason =
+-        ExtensionSafetyCheckUtils::GetSafetyCheckWarningReason(extension,
+-                                                               profile);
+-    if (warning_reason != developer::SafetyCheckWarningReason::kNone) {
+-      info.safety_check_warning_reason = warning_reason;
+-      info.safety_check_text =
+-          ExtensionSafetyCheckUtils::GetSafetyCheckWarningStrings(
+-              warning_reason, state);
+-    }
+   }
+ 
+   bool is_enabled = state == developer::ExtensionState::kEnabled;
+diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc
+index ae782891ad..b0b82002e2 100644
+--- a/chrome/browser/extensions/extension_management.cc
++++ b/chrome/browser/extensions/extension_management.cc
+@@ -322,31 +322,7 @@ bool ExtensionManagement::IsAllowedManifestVersion(
+     int manifest_version,
+     const std::string& extension_id,
+     Manifest::Type manifest_type) {
+-  bool enabled_by_default =
+-      !base::FeatureList::IsEnabled(
+-          extensions_features::kExtensionsManifestV3Only) ||
+-      manifest_version >= 3;
+-
+-  // Manifest version policy only supports normal extensions and Chrome OS login
+-  // screen extension.
+-  if (manifest_type != Manifest::Type::TYPE_EXTENSION &&
+-      manifest_type != Manifest::Type::TYPE_LOGIN_SCREEN_EXTENSION) {
+-    return enabled_by_default;
+-  }
+-  switch (global_settings_->manifest_v2_setting) {
+-    case internal::GlobalSettings::ManifestV2Setting::kDefault:
+-      return enabled_by_default;
+-    case internal::GlobalSettings::ManifestV2Setting::kDisabled:
+-      return manifest_version >= 3;
+-    case internal::GlobalSettings::ManifestV2Setting::kEnabled:
+       return true;
+-    case internal::GlobalSettings::ManifestV2Setting::kEnabledForForceInstalled:
+-      auto installation_mode =
+-          GetInstallationMode(extension_id, /*update_url=*/std::string());
+-      return manifest_version >= 3 ||
+-             installation_mode == ManagedInstallationMode::kForced ||
+-             installation_mode == ManagedInstallationMode::kRecommended;
+-  }
+ }
+ 
+ bool ExtensionManagement::IsAllowedManifestVersion(const Extension* extension) {
+@@ -367,26 +343,8 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy(
+     return false;
+   }
+ 
+-  switch (global_settings_->manifest_v2_setting) {
+-    case internal::GlobalSettings::ManifestV2Setting::kDefault:
+-      // Default browser behavior. Not exempt.
+-      return false;
+-    case internal::GlobalSettings::ManifestV2Setting::kDisabled:
+-      // All MV2 extensions are disallowed. Not exempt.
+-      return false;
+-    case internal::GlobalSettings::ManifestV2Setting::kEnabled:
+       // All MV2 extensions are allowed. Exempt.
+       return true;
+-    case internal::GlobalSettings::ManifestV2Setting::kEnabledForForceInstalled:
+-      // Force-installed MV2 extensions are allowed. Exempt if it's a force-
+-      // installed extension only.
+-      auto installation_mode =
+-          GetInstallationMode(extension_id, /*update_url=*/std::string());
+-      return installation_mode == ManagedInstallationMode::kForced ||
+-             installation_mode == ManagedInstallationMode::kRecommended;
+-  }
+-
+-  return false;
+ }
+ 
+ bool ExtensionManagement::IsAllowedByUnpublishedAvailabilityPolicy(
+diff --git a/chrome/browser/extensions/manifest_v2_experiment_manager.cc b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
+index 08b7de6995..47ff0885ad 100644
+--- a/chrome/browser/extensions/manifest_v2_experiment_manager.cc
++++ b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
+@@ -145,22 +145,6 @@ bool ManifestV2ExperimentManagerFactory::ServiceIsCreatedWithBrowserContext()
+ 
+ // Determines the current stage of the MV2 deprecation experiments.
+ MV2ExperimentStage CalculateCurrentExperimentStage() {
+-  // Return the "highest" stage that is currently active for the user.
+-  if (base::FeatureList::IsEnabled(
+-          extensions_features::kExtensionManifestV2Unsupported)) {
+-    return MV2ExperimentStage::kUnsupported;
+-  }
+-
+-  if (base::FeatureList::IsEnabled(
+-          extensions_features::kExtensionManifestV2Disabled)) {
+-    return MV2ExperimentStage::kDisableWithReEnable;
+-  }
+-
+-  if (base::FeatureList::IsEnabled(
+-          extensions_features::kExtensionManifestV2DeprecationWarning)) {
+-    return MV2ExperimentStage::kWarning;
+-  }
+-
+   return MV2ExperimentStage::kNone;
+ }
+ 
+@@ -200,19 +184,7 @@ PrefMap GetGlobalNoticeAcknowledgedPrefFor(
+ // Returns true if legacy extensions should be disabled, looking at both
+ // experiment stage and global state.
+ bool ShouldDisableLegacyExtensions(MV2ExperimentStage stage) {
+-  if (g_allow_mv2_for_testing) {
+-    // We allow legacy MV2 extensions for testing purposes.
+-    return false;
+-  }
+-
+-  switch (stage) {
+-    case MV2ExperimentStage::kNone:
+-    case MV2ExperimentStage::kWarning:
+       return false;
+-    case MV2ExperimentStage::kDisableWithReEnable:
+-    case MV2ExperimentStage::kUnsupported:
+-      return true;
+-  }
+ }
+ 
+ // Returns true if the given `stage` is one in which extension enablement should
+diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc
+index 7a4d1338c4..7a01c8c5f3 100644
+--- a/chrome/browser/ui/webui/extensions/extensions_ui.cc
++++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
+@@ -490,16 +490,7 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile,
+           extensions_features::kExtensionsMenuAccessControlWithPermittedSites));
+   source->AddBoolean(
+       "safetyHubThreeDotDetails",
+-      base::FeatureList::IsEnabled(features::kSafetyHubThreeDotDetails));
+-
+-  // MV2 deprecation.
+-  auto* mv2_experiment_manager = ManifestV2ExperimentManager::Get(profile);
+-  MV2ExperimentStage experiment_stage =
+-      mv2_experiment_manager->GetCurrentExperimentStage();
+-  source->AddInteger("MV2ExperimentStage", static_cast<int>(experiment_stage));
+-  source->AddBoolean(
+-      "MV2DeprecationNoticeDismissed",
+-      mv2_experiment_manager->DidUserAcknowledgeNoticeGlobally());
++      false);
+ 
+ #if BUILDFLAG(IS_ANDROID)
+   source->AddResourcePath("images/product_logo.png",
+diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
+index f82aaf92ad..48041098a8 100644
+--- a/extensions/common/extension.cc
++++ b/extensions/common/extension.cc
+@@ -104,13 +104,6 @@ bool IsManifestSupported(int manifest_version,
+   // Supported versions are always safe.
+   if (manifest_version >= kMinimumSupportedManifestVersion &&
+       manifest_version <= kMaximumSupportedManifestVersion) {
+-    // Emit a warning for unpacked extensions on Manifest V2 warning that
+-    // MV2 is deprecated.
+-    if (type == Manifest::TYPE_EXTENSION && manifest_version == 2 &&
+-        Manifest::IsUnpackedLocation(location) &&
+-        !g_silence_deprecated_manifest_version_warnings) {
+-      *warning = errors::kManifestV2IsDeprecatedWarning;
+-    }
+     return true;
+   }
+ 
-- 
cgit v1.2.3