Enable kExtensionDisableUnsupportedDeveloper by default
Disable the feature in tests, since the majority of tests use
unpacked extensions and the default developer mode state is OFF.
Bug: 362756477
Change-Id: Ie14988d781b733042f2f4cf6c4f39aa880f215f2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6211237
Commit-Queue: Richard Chen <richche@google.com>
Reviewed-by: Vignesh Shenvi <vshenvi@google.com>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Emilia Paz <emiliapaz@chromium.org>
Reviewed-by: David Bertoni <dbertoni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1414935}
diff --git a/chrome/browser/ash/boca/on_task/on_task_extensions_manager_impl_unittest.cc b/chrome/browser/ash/boca/on_task/on_task_extensions_manager_impl_unittest.cc
index 112e289..e5341ef 100644
--- a/chrome/browser/ash/boca/on_task/on_task_extensions_manager_impl_unittest.cc
+++ b/chrome/browser/ash/boca/on_task/on_task_extensions_manager_impl_unittest.cc
@@ -19,6 +19,7 @@
#include "extensions/browser/unloaded_extension_reason.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h"
+#include "extensions/common/extension_features.h"
#include "extensions/common/mojom/manifest.mojom.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -38,6 +39,13 @@
namespace {
class OnTaskExtensionsManagerImplTest : public ::testing::Test {
+ public:
+ OnTaskExtensionsManagerImplTest() {
+ // Allow unpacked extensions without developer mode for testing.
+ scoped_feature_list_.InitAndDisableFeature(
+ extensions_features::kExtensionDisableUnsupportedDeveloper);
+ }
+
protected:
const Extension* AddExtension(
ManifestLocation location = ManifestLocation::kUnpacked) {
@@ -54,6 +62,7 @@
TestingProfile* profile() { return extension_environment_.profile(); }
+ base::test::ScopedFeatureList scoped_feature_list_;
TestExtensionEnvironment extension_environment_;
};
diff --git a/chrome/browser/extensions/activity_log/activity_log_enabled_unittest.cc b/chrome/browser/extensions/activity_log/activity_log_enabled_unittest.cc
index 5af6ddb..31791d2 100644
--- a/chrome/browser/extensions/activity_log/activity_log_enabled_unittest.cc
+++ b/chrome/browser/extensions/activity_log/activity_log_enabled_unittest.cc
@@ -17,6 +17,7 @@
#include "components/prefs/pref_service.h"
#include "extensions/browser/uninstall_reason.h"
#include "extensions/common/extension_builder.h"
+#include "extensions/common/extension_features.h"
namespace extensions {
@@ -24,6 +25,12 @@
class ActivityLogEnabledTest : public ChromeRenderViewHostTestHarness {
protected:
+ ActivityLogEnabledTest() {
+ // Allow unpacked extensions without developer mode for testing.
+ scoped_feature_list_.InitAndDisableFeature(
+ extensions_features::kExtensionDisableUnsupportedDeveloper);
+ }
+
void SetUp() override {
ChromeRenderViewHostTestHarness::SetUp();
SetActivityLogTaskRunnerForTesting(
@@ -34,6 +41,8 @@
ChromeRenderViewHostTestHarness::TearDown();
SetActivityLogTaskRunnerForTesting(nullptr);
}
+
+ base::test::ScopedFeatureList scoped_feature_list_;
};
TEST_F(ActivityLogEnabledTest, NoSwitch) {
diff --git a/chrome/browser/extensions/api/gcm/extension_gcm_app_handler_unittest.cc b/chrome/browser/extensions/api/gcm/extension_gcm_app_handler_unittest.cc
index 91d562c..8bddb1e 100644
--- a/chrome/browser/extensions/api/gcm/extension_gcm_app_handler_unittest.cc
+++ b/chrome/browser/extensions/api/gcm/extension_gcm_app_handler_unittest.cc
@@ -55,6 +55,7 @@
#include "extensions/browser/uninstall_reason.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h"
+#include "extensions/common/extension_features.h"
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
#include "extensions/common/permissions/api_permission.h"
@@ -256,7 +257,11 @@
: task_environment_(content::BrowserTaskEnvironment::REAL_IO_THREAD),
extension_service_(nullptr),
registration_result_(gcm::GCMClient::UNKNOWN_ERROR),
- unregistration_result_(gcm::GCMClient::UNKNOWN_ERROR) {}
+ unregistration_result_(gcm::GCMClient::UNKNOWN_ERROR) {
+ // Allow unpacked extensions without developer mode for testing.
+ scoped_feature_list_.InitAndDisableFeature(
+ extensions_features::kExtensionDisableUnsupportedDeveloper);
+ }
ExtensionGCMAppHandlerTest(const ExtensionGCMAppHandlerTest&) = delete;
ExtensionGCMAppHandlerTest& operator=(const ExtensionGCMAppHandlerTest&) =
@@ -418,6 +423,7 @@
}
private:
+ base::test::ScopedFeatureList scoped_feature_list_;
content::BrowserTaskEnvironment task_environment_;
std::unique_ptr<content::InProcessUtilityThreadHelper>
in_process_utility_thread_helper_;
diff --git a/chrome/browser/extensions/extension_service_test_base.cc b/chrome/browser/extensions/extension_service_test_base.cc
index 1110a71..030c43b3 100644
--- a/chrome/browser/extensions/extension_service_test_base.cc
+++ b/chrome/browser/extensions/extension_service_test_base.cc
@@ -53,6 +53,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/pref_names.h"
+#include "extensions/common/extension_features.h"
#include "extensions/common/extensions_client.h"
#if BUILDFLAG(IS_CHROMEOS)
@@ -266,6 +267,9 @@
std::vector<
raw_ptr<policy::ConfigurationPolicyProvider, VectorExperimental>>{
&policy_provider_});
+ // Allow unpacked extensions without developer mode for testing.
+ feature_list_.InitAndDisableFeature(
+ extensions_features::kExtensionDisableUnsupportedDeveloper);
}
ExtensionServiceTestBase::~ExtensionServiceTestBase() {
diff --git a/chrome/browser/extensions/extension_service_test_base.h b/chrome/browser/extensions/extension_service_test_base.h
index fbf4296b..ce28aab 100644
--- a/chrome/browser/extensions/extension_service_test_base.h
+++ b/chrome/browser/extensions/extension_service_test_base.h
@@ -190,6 +190,7 @@
}
#endif // BUILDFLAG(IS_CHROMEOS)
+ private:
// If a test uses a feature list, it should be destroyed after
// |task_environment_|, to avoid tsan data races between the ScopedFeatureList
// destructor, and any tasks running on different threads that check if a
@@ -197,7 +198,6 @@
// finish before |feature_list_| is destroyed.
base::test::ScopedFeatureList feature_list_;
- private:
// Must be declared before anything that may make use of the
// directory so as to ensure files are closed before cleanup.
base::ScopedTempDir temp_dir_;
diff --git a/chrome/browser/extensions/user_script_listener_unittest.cc b/chrome/browser/extensions/user_script_listener_unittest.cc
index d57f15a..72fbf33 100644
--- a/chrome/browser/extensions/user_script_listener_unittest.cc
+++ b/chrome/browser/extensions/user_script_listener_unittest.cc
@@ -35,6 +35,7 @@
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/scripting_utils.h"
#include "extensions/browser/test_extension_registry_observer.h"
+#include "extensions/common/extension_features.h"
#include "extensions/common/url_pattern_set.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -90,7 +91,11 @@
UserScriptListenerTest()
: task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP),
profile_manager_(
- new TestingProfileManager(TestingBrowserProcess::GetGlobal())) {}
+ new TestingProfileManager(TestingBrowserProcess::GetGlobal())) {
+ // Allow unpacked extensions without developer mode for testing.
+ scoped_feature_list_.InitAndDisableFeature(
+ extensions_features::kExtensionDisableUnsupportedDeveloper);
+ }
~UserScriptListenerTest() override = default;
@@ -170,6 +175,7 @@
persistent_urls);
}
+ base::test::ScopedFeatureList scoped_feature_list_;
content::BrowserTaskEnvironment task_environment_;
content::RenderViewHostTestEnabler rvh_test_enabler_;
std::unique_ptr<TestingProfileManager> profile_manager_;
diff --git a/chrome/browser/ui/views/extensions/extensions_toolbar_unittest.cc b/chrome/browser/ui/views/extensions/extensions_toolbar_unittest.cc
index c3cd5e10..f6a9622 100644
--- a/chrome/browser/ui/views/extensions/extensions_toolbar_unittest.cc
+++ b/chrome/browser/ui/views/extensions/extensions_toolbar_unittest.cc
@@ -21,6 +21,7 @@
#include "content/public/test/test_utils.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h"
+#include "extensions/common/extension_features.h"
#include "extensions/common/mojom/manifest.mojom-shared.h"
#include "extensions/test/permissions_manager_waiter.h"
#include "ui/events/base_event_utils.h"
@@ -30,11 +31,19 @@
using PermissionsManager = extensions::PermissionsManager;
using SitePermissionsHelper = extensions::SitePermissionsHelper;
-ExtensionsToolbarUnitTest::ExtensionsToolbarUnitTest() = default;
+ExtensionsToolbarUnitTest::ExtensionsToolbarUnitTest() {
+ // Allow unpacked extensions without developer mode for testing.
+ scoped_feature_list_.InitAndDisableFeature(
+ extensions_features::kExtensionDisableUnsupportedDeveloper);
+}
ExtensionsToolbarUnitTest::ExtensionsToolbarUnitTest(
base::test::TaskEnvironment::TimeSource time_source)
- : TestWithBrowserView(time_source) {}
+ : TestWithBrowserView(time_source) {
+ // Allow unpacked extensions without developer mode for testing.
+ scoped_feature_list_.InitAndDisableFeature(
+ extensions_features::kExtensionDisableUnsupportedDeveloper);
+}
ExtensionsToolbarUnitTest::~ExtensionsToolbarUnitTest() = default;
diff --git a/chrome/browser/ui/views/extensions/extensions_toolbar_unittest.h b/chrome/browser/ui/views/extensions/extensions_toolbar_unittest.h
index 2869b6d..ed14aad1 100644
--- a/chrome/browser/ui/views/extensions/extensions_toolbar_unittest.h
+++ b/chrome/browser/ui/views/extensions/extensions_toolbar_unittest.h
@@ -163,6 +163,7 @@
void TearDown() override;
private:
+ base::test::ScopedFeatureList scoped_feature_list_;
raw_ptr<extensions::ExtensionService, DanglingUntriaged> extension_service_ =
nullptr;
raw_ptr<extensions::PermissionsManager, DanglingUntriaged>
diff --git a/chrome/test/base/in_process_browser_test.cc b/chrome/test/base/in_process_browser_test.cc
index 7369742..372793f 100644
--- a/chrome/test/base/in_process_browser_test.cc
+++ b/chrome/test/base/in_process_browser_test.cc
@@ -93,6 +93,7 @@
#include "content/public/test/test_launcher.h"
#include "content/public/test/test_navigation_observer.h"
#include "extensions/buildflags/buildflags.h"
+#include "extensions/common/extension_features.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "services/device/public/cpp/device_features.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
@@ -364,6 +365,10 @@
disabled_features.push_back(
features::kRestartNetworkServiceUnsandboxedForFailedLaunch);
+ // Allow unpacked extensions without developer mode for testing.
+ disabled_features.push_back(
+ extensions_features::kExtensionDisableUnsupportedDeveloper);
+
// In-product help can conflict with tests' expected window activation and
// focus. Individual tests can re-enable IPH.
block_all_iph_feature_list_.InitWithNoFeaturesAllowed();
diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc
index d172137..d36dd95 100644
--- a/extensions/common/extension_features.cc
+++ b/extensions/common/extension_features.cc
@@ -68,7 +68,7 @@
BASE_FEATURE(kExtensionDisableUnsupportedDeveloper,
"ExtensionDisableUnsupportedDeveloper",
- base::FEATURE_DISABLED_BY_DEFAULT);
+ base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kExtensionDynamicURLRedirection,
"ExtensionDynamicURLRedirection",