From 5081673bff52bfdce76bc6530da8eb861547e079 Mon Sep 17 00:00:00 2001
From: Chris Xiong <chirs241097@gmail.com>
Date: Sat, 22 Feb 2025 10:08:58 -0500
Subject: reverse mv2 deprecation

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

(limited to 'www-client/chromium/files')

diff --git a/www-client/chromium/files/chromium-135-mv2-ungoogled.patch b/www-client/chromium/files/chromium-135-mv2-ungoogled.patch
new file mode 100644
index 0000000..db276b3
--- /dev/null
+++ b/www-client/chromium/files/chromium-135-mv2-ungoogled.patch
@@ -0,0 +1,183 @@
+diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
+index e330cb7163..08da10083a 100644
+--- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
++++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
+@@ -618,17 +618,6 @@ void ExtensionInfoGenerator::CreateExtensionInfoHelper(
+     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 eb2350fca9..f13816a016 100644
+--- a/chrome/browser/extensions/extension_management.cc
++++ b/chrome/browser/extensions/extension_management.cc
+@@ -318,31 +318,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 == INSTALLATION_FORCED ||
+-             installation_mode == INSTALLATION_RECOMMENDED;
+-  }
+ }
+ 
+ bool ExtensionManagement::IsAllowedManifestVersion(const Extension* extension) {
+@@ -363,26 +339,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 == INSTALLATION_FORCED ||
+-             installation_mode == INSTALLATION_RECOMMENDED;
+-  }
+-
+-  return false;
+ }
+ 
+ bool ExtensionManagement::IsAllowedByUnpublishedAvailabilityPolicy(
+diff --git a/chrome/browser/extensions/keyed_services/chrome_browser_context_keyed_service_factories.cc b/chrome/browser/extensions/keyed_services/chrome_browser_context_keyed_service_factories.cc
+index 555fd894e8..3f042548bd 100644
+--- a/chrome/browser/extensions/keyed_services/chrome_browser_context_keyed_service_factories.cc
++++ b/chrome/browser/extensions/keyed_services/chrome_browser_context_keyed_service_factories.cc
+@@ -23,7 +23,6 @@
+ #include "chrome/browser/extensions/extension_web_ui_override_registrar.h"
+ #include "chrome/browser/extensions/install_tracker_factory.h"
+ #include "chrome/browser/extensions/install_verifier_factory.h"
+-#include "chrome/browser/extensions/manifest_v2_experiment_manager.h"
+ #include "chrome/browser/extensions/menu_manager_factory.h"
+ #include "chrome/browser/extensions/permissions/permissions_updater.h"
+ #include "chrome/browser/extensions/plugin_manager.h"
+@@ -55,7 +54,6 @@ void EnsureChromeBrowserContextKeyedServiceFactoriesBuilt() {
+   extensions::ChromeExtensionSystemFactory::GetInstance();
+   extensions::InstallTrackerFactory::GetInstance();
+   extensions::InstallVerifierFactory::GetInstance();
+-  extensions::ManifestV2ExperimentManager::GetFactory();
+   extensions::MenuManagerFactory::GetInstance();
+   extensions::PermissionsUpdater::EnsureAssociatedFactoryBuilt();
+ #if BUILDFLAG(ENABLE_PLUGINS)
+diff --git a/chrome/browser/extensions/manifest_v2_experiment_manager.cc b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
+index 2e47e928e3..81ad199a24 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 057dc619e9..52d0e388c9 100644
+--- a/chrome/browser/ui/webui/extensions/extensions_ui.cc
++++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
+@@ -477,7 +477,7 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile,
+           extensions_features::kExtensionsMenuAccessControlWithPermittedSites));
+   source->AddBoolean(
+       "safetyHubThreeDotDetails",
+-      base::FeatureList::IsEnabled(features::kSafetyHubThreeDotDetails));
++      false);
+ 
+ // TODO(crbug.com/392777363): Clean these up with non-placeholder values.
+ #if BUILDFLAG(IS_ANDROID)
+diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
+index 833ea42681..dfd41632bd 100644
+--- a/extensions/common/extension.cc
++++ b/extensions/common/extension.cc
+@@ -96,13 +96,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