diff options
author | rdevlin.cronin <rdevlin.cronin@chromium.org> | 2015-09-22 21:04:46 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-23 04:05:47 +0000 |
commit | ca056fb34f9003262f28061856042ed87ed865c4 (patch) | |
tree | 226757ed7fb4e4dc4c92b0bb2d13b479c5eea3bb | |
parent | 121c0328c09332f88713ddf0691e71ee00798002 (diff) | |
download | chromium_src-ca056fb34f9003262f28061856042ed87ed865c4.zip chromium_src-ca056fb34f9003262f28061856042ed87ed865c4.tar.gz chromium_src-ca056fb34f9003262f28061856042ed87ed865c4.tar.bz2 |
[Extensions Toolbar] Add a finch config for the redesign
Add an entry in field trials for the extension action redesign, and
fix any tests that fail with it as a default.
BUG=533101
TBR=avi@chromium.org for micro cocoa change
Review URL: https://codereview.chromium.org/1363463002
Cr-Commit-Position: refs/heads/master@{#350296}
14 files changed, 156 insertions, 70 deletions
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc index 74eebe0..68901bd 100644 --- a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc +++ b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc @@ -21,6 +21,7 @@ #include "content/public/test/browser_test_utils.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" +#include "extensions/browser/test_extension_registry_observer.h" #include "extensions/test/extension_test_message_listener.h" #include "testing/gmock/include/gmock/gmock.h" @@ -643,32 +644,65 @@ IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, ShowPageActionWithoutPageAction) { + // Load an extension without a page action. std::string manifest_without_page_action = kDeclarativeContentManifest; base::ReplaceSubstringsAfterOffset( &manifest_without_page_action, 0, "\"page_action\": {},", ""); ASSERT_NE(kDeclarativeContentManifest, manifest_without_page_action); ext_dir_.WriteManifest(manifest_without_page_action); ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); - const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); - ASSERT_TRUE(extension); - EXPECT_THAT(ExecuteScriptInBackgroundPage( - extension->id(), - "setRules([{\n" - " conditions: [new PageStateMatcher({\n" - " pageUrl: {hostPrefix: \"test\"}})],\n" - " actions: [new ShowPageAction()]\n" - "}], 'test_rule');\n"), - testing::HasSubstr("without a page action")); + std::string extension_id; - content::WebContents* const tab = - browser()->tab_strip_model()->GetWebContentsAt(0); - NavigateInRenderer(tab, GURL("http://test/")); + std::string script = + "setRules([{\n" + " conditions: [new PageStateMatcher({\n" + " pageUrl: {hostPrefix: \"test\"}})],\n" + " actions: [new ShowPageAction()]\n" + "}], 'test_rule');\n"; - EXPECT_EQ(NULL, - ExtensionActionManager::Get(browser()->profile())-> - GetPageAction(*extension)); - EXPECT_EQ(0u, extension_action_test_util::GetVisiblePageActionCount(tab)); + { + // Without the extension action redesign, the extension should get an error. + FeatureSwitch::ScopedOverride override_toolbar_redesign( + FeatureSwitch::extension_action_redesign(), false); + const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); + ASSERT_TRUE(extension); + extension_id = extension->id(); + + EXPECT_THAT(ExecuteScriptInBackgroundPage(extension->id(), script), + testing::HasSubstr("without a page action")); + + content::WebContents* const tab = + browser()->tab_strip_model()->GetWebContentsAt(0); + NavigateInRenderer(tab, GURL("http://test/")); + + // There should be no page action. + EXPECT_EQ(nullptr, ExtensionActionManager::Get(browser()->profile()) + ->GetPageAction(*extension)); + EXPECT_EQ(0u, extension_action_test_util::GetVisiblePageActionCount(tab)); + } + { + // With the extension action redesign, it should work normally. + FeatureSwitch::ScopedOverride override_toolbar_redesign( + FeatureSwitch::extension_action_redesign(), true); + ReloadExtension(extension_id); + const Extension* extension = + ExtensionRegistry::Get(profile())->enabled_extensions().GetByID( + extension_id); + ASSERT_TRUE(extension); + + EXPECT_THAT(ExecuteScriptInBackgroundPage(extension->id(), script), + testing::Not(testing::HasSubstr("without a page action"))); + + content::WebContents* const tab = + browser()->tab_strip_model()->GetWebContentsAt(0); + NavigateInRenderer(tab, GURL("http://test/")); + + // There should be a page action. + EXPECT_TRUE(ExtensionActionManager::Get(browser()->profile()) + ->GetPageAction(*extension)); + EXPECT_EQ(1u, extension_action_test_util::GetVisiblePageActionCount(tab)); + } } IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, diff --git a/chrome/browser/extensions/extension_action.cc b/chrome/browser/extensions/extension_action.cc index af9e868..c6033e5 100644 --- a/chrome/browser/extensions/extension_action.cc +++ b/chrome/browser/extensions/extension_action.cc @@ -256,15 +256,20 @@ gfx::Image ExtensionAction::GetDefaultIconImage() const { if (default_icon_image_) return default_icon_image_->image(); - // If the extension action redesign is enabled, we use a special placeholder - // icon (with the first letter of the extension name) rather than the default - // (puzzle piece). - if (extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) { - return extensions::ExtensionIconPlaceholder::CreateImage( - extension_misc::EXTENSION_ICON_ACTION, extension_name_); + if (placeholder_icon_image_.IsEmpty()) { + // If the extension action redesign is enabled, we use a special placeholder + // icon (with the first letter of the extension name) rather than the + // default (puzzle piece). + if (extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) { + placeholder_icon_image_ = + extensions::ExtensionIconPlaceholder::CreateImage( + extension_misc::EXTENSION_ICON_ACTION, extension_name_); + } else { + placeholder_icon_image_ = GetDefaultIcon(); + } } - return GetDefaultIcon(); + return placeholder_icon_image_; } bool ExtensionAction::HasPopupUrl(int tab_id) const { diff --git a/chrome/browser/extensions/extension_action.h b/chrome/browser/extensions/extension_action.h index 9e73dbc..ff29481 100644 --- a/chrome/browser/extensions/extension_action.h +++ b/chrome/browser/extensions/extension_action.h @@ -13,6 +13,7 @@ #include "base/stl_util.h" #include "chrome/common/extensions/api/extension_action/action_info.h" #include "third_party/skia/include/core/SkColor.h" +#include "ui/gfx/image/image.h" class GURL; @@ -287,6 +288,11 @@ class ExtensionAction { // Lazily initialized via LoadDefaultIconImage(). scoped_ptr<extensions::IconImage> default_icon_image_; + // The lazily-initialized image for a placeholder icon, in the event that the + // extension doesn't have its own icon. (Mutable to allow lazy init in + // GetDefaultIconImage().) + mutable gfx::Image placeholder_icon_image_; + // The id for the ExtensionAction, for example: "RssPageAction". This is // needed for compat with an older version of the page actions API. std::string id_; diff --git a/chrome/browser/extensions/lazy_background_page_apitest.cc b/chrome/browser/extensions/lazy_background_page_apitest.cc index 7a4f85f..02434b8 100644 --- a/chrome/browser/extensions/lazy_background_page_apitest.cc +++ b/chrome/browser/extensions/lazy_background_page_apitest.cc @@ -9,6 +9,7 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/extensions/browser_action_test_util.h" +#include "chrome/browser/extensions/extension_action_test_util.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/lazy_background_page_test_util.h" #include "chrome/browser/profiles/profile.h" @@ -41,8 +42,8 @@ using bookmarks::BookmarkModel; using bookmarks::BookmarkNode; -using extensions::Extension; -using extensions::ResultCatcher; + +namespace extensions { namespace { @@ -52,12 +53,11 @@ namespace { // incognito involves reloading the extension - and the background pages may // have already loaded once before then. So we wait until the extension is // unloaded before listening to the background page notifications. -class LoadedIncognitoObserver : public extensions::ExtensionRegistryObserver { +class LoadedIncognitoObserver : public ExtensionRegistryObserver { public: explicit LoadedIncognitoObserver(Profile* profile) : profile_(profile), extension_registry_observer_(this) { - extension_registry_observer_.Add( - extensions::ExtensionRegistry::Get(profile_)); + extension_registry_observer_.Add(ExtensionRegistry::Get(profile_)); } void Wait() { @@ -67,18 +67,16 @@ class LoadedIncognitoObserver : public extensions::ExtensionRegistryObserver { } private: - void OnExtensionUnloaded( - content::BrowserContext* browser_context, - const Extension* extension, - extensions::UnloadedExtensionInfo::Reason reason) override { + void OnExtensionUnloaded(content::BrowserContext* browser_context, + const Extension* extension, + UnloadedExtensionInfo::Reason reason) override { original_complete_.reset(new LazyBackgroundObserver(profile_)); incognito_complete_.reset( new LazyBackgroundObserver(profile_->GetOffTheRecordProfile())); } Profile* profile_; - ScopedObserver<extensions::ExtensionRegistry, - extensions::ExtensionRegistryObserver> + ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> extension_registry_observer_; scoped_ptr<LazyBackgroundObserver> original_complete_; scoped_ptr<LazyBackgroundObserver> incognito_complete_; @@ -94,8 +92,8 @@ class LazyBackgroundPageApiTest : public ExtensionApiTest { void SetUpInProcessBrowserTestFixture() override { ExtensionApiTest::SetUpInProcessBrowserTestFixture(); // Set shorter delays to prevent test timeouts. - extensions::ProcessManager::SetEventPageIdleTimeForTesting(1); - extensions::ProcessManager::SetEventPageSuspendingTimeForTesting(1); + ProcessManager::SetEventPageIdleTimeForTesting(1); + ProcessManager::SetEventPageSuspendingTimeForTesting(1); } void SetUpCommandLine(base::CommandLine* command_line) override { @@ -121,8 +119,7 @@ class LazyBackgroundPageApiTest : public ExtensionApiTest { // Returns true if the lazy background page for the extension with // |extension_id| is still running. bool IsBackgroundPageAlive(const std::string& extension_id) { - extensions::ProcessManager* pm = - extensions::ProcessManager::Get(browser()->profile()); + ProcessManager* pm = ProcessManager::Get(browser()->profile()); return pm->GetBackgroundHostForExtension(extension_id); } @@ -191,9 +188,9 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, BroadcastEvent) { // Page action is shown. WaitForPageActionVisibilityChangeTo(num_page_actions + 1); - EXPECT_EQ(num_page_actions + 1, - browser()->window()->GetLocationBar()-> - GetLocationBarForTesting()->PageActionVisibleCount()); + EXPECT_EQ(static_cast<size_t>(num_page_actions + 1), + extension_action_test_util::GetVisiblePageActionCount( + browser()->tab_strip_model()->GetActiveWebContents())); } IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, Filters) { @@ -239,8 +236,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, WaitForDialog) { EXPECT_TRUE(IsBackgroundPageAlive(extension->id())); // Close the dialog. The keep alive count is decremented. - extensions::ProcessManager* pm = - extensions::ProcessManager::Get(browser()->profile()); + ProcessManager* pm = ProcessManager::Get(browser()->profile()); int previous_keep_alive_count = pm->GetLazyKeepaliveCount(extension); dialog->CloseModalDialog(); EXPECT_EQ(previous_keep_alive_count - 1, @@ -295,9 +291,8 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, WaitForRequest) { EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); // Lazy Background Page still exists, because the extension started a request. - extensions::ProcessManager* pm = - extensions::ProcessManager::Get(browser()->profile()); - extensions::ExtensionHost* host = + ProcessManager* pm = ProcessManager::Get(browser()->profile()); + ExtensionHost* host = pm->GetBackgroundHostForExtension(last_loaded_extension_id()); ASSERT_TRUE(host); @@ -399,10 +394,8 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, DISABLED_IncognitoSplitMode) { } // Lazy Background Page doesn't exist yet. - extensions::ProcessManager* pm = - extensions::ProcessManager::Get(browser()->profile()); - extensions::ProcessManager* pmi = - extensions::ProcessManager::Get(incognito_browser->profile()); + ProcessManager* pm = ProcessManager::Get(browser()->profile()); + ProcessManager* pmi = ProcessManager::Get(incognito_browser->profile()); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); EXPECT_FALSE(pmi->GetBackgroundHostForExtension(last_loaded_extension_id())); @@ -488,8 +481,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, ImpulseAddsCount) { ASSERT_TRUE(extension); // Lazy Background Page doesn't exist yet. - extensions::ProcessManager* pm = - extensions::ProcessManager::Get(browser()->profile()); + ProcessManager* pm = ProcessManager::Get(browser()->profile()); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); EXPECT_EQ(1, browser()->tab_strip_model()->count()); @@ -535,8 +527,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, EventDispatchToTab) { ResultCatcher catcher; catcher.RestrictToBrowserContext(browser()->profile()); - const extensions::Extension* extension = - LoadExtensionAndWait("event_dispatch_to_tab"); + const Extension* extension = LoadExtensionAndWait("event_dispatch_to_tab"); ExtensionTestMessageListener page_ready("ready", true); GURL page_url = extension->GetResourceURL("page.html"); @@ -630,3 +621,5 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnSuspendUseStorageApi) { // TODO: background page with timer. // TODO: background page that interacts with popup. + +} // namespace extensions diff --git a/chrome/browser/extensions/location_bar_controller.cc b/chrome/browser/extensions/location_bar_controller.cc index f32d633..89af53a5 100644 --- a/chrome/browser/extensions/location_bar_controller.cc +++ b/chrome/browser/extensions/location_bar_controller.cc @@ -30,8 +30,7 @@ LocationBarController::LocationBarController( should_show_page_actions_( !FeatureSwitch::extension_action_redesign()->IsEnabled()), extension_registry_observer_(this) { - if (should_show_page_actions_) - extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_)); + extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_)); } LocationBarController::~LocationBarController() { @@ -93,7 +92,7 @@ std::vector<ExtensionAction*> LocationBarController::GetCurrentActions() { void LocationBarController::OnExtensionLoaded( content::BrowserContext* browser_context, const Extension* extension) { - if (action_manager_->GetPageAction(*extension)) { + if (should_show_page_actions_ && action_manager_->GetPageAction(*extension)) { ExtensionActionAPI::Get(browser_context)-> NotifyPageActionsChanged(web_contents_); } @@ -122,7 +121,7 @@ void LocationBarController::OnExtensionUnloaded( content::BrowserContext* browser_context, const Extension* extension, UnloadedExtensionInfo::Reason reason) { - if (action_manager_->GetPageAction(*extension)) { + if (should_show_page_actions_ && action_manager_->GetPageAction(*extension)) { ExtensionActionAPI::Get(browser_context)-> NotifyPageActionsChanged(web_contents_); } diff --git a/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm b/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm index 657dc40..4789f29 100644 --- a/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm +++ b/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm @@ -234,10 +234,12 @@ bool ExtensionInstalledBubbleBridge::MaybeShowNow() { NSMaxY(bounds) - extension_installed_bubble::kAppsBubbleArrowOffset); arrowPoint = [button convertPoint:anchor toView:nil]; } else if (type_ == extension_installed_bubble::kBrowserAction || - extensions::FeatureSwitch::extension_action_redesign()-> - IsEnabled()) { + (extensions::FeatureSwitch::extension_action_redesign()-> + IsEnabled() && + type_ != extension_installed_bubble::kBundle)) { // If the toolbar redesign is enabled, all bubbles for extensions point to - // their toolbar action. + // their toolbar action. The exception is for bundles, for which there is no + // single associated extension. BrowserActionsController* controller = [[window->cocoa_controller() toolbarController] browserActionsController]; diff --git a/chrome/browser/ui/location_bar/location_bar_browsertest.cc b/chrome/browser/ui/location_bar/location_bar_browsertest.cc index f972f50..4db53f1 100644 --- a/chrome/browser/ui/location_bar/location_bar_browsertest.cc +++ b/chrome/browser/ui/location_bar/location_bar_browsertest.cc @@ -54,6 +54,7 @@ class LocationBarBrowserTest : public ExtensionBrowserTest { private: scoped_ptr<extensions::FeatureSwitch::ScopedOverride> enable_override_; + scoped_ptr<extensions::FeatureSwitch::ScopedOverride> enable_redesign_; DISALLOW_COPY_AND_ASSIGN(LocationBarBrowserTest); }; @@ -63,6 +64,10 @@ void LocationBarBrowserTest::SetUpCommandLine(base::CommandLine* command_line) { // enable the switch. enable_override_.reset(new extensions::FeatureSwitch::ScopedOverride( extensions::FeatureSwitch::enable_override_bookmarks_ui(), true)); + // For testing page actions in the location bar, we also have to be sure to + // *not* have the redesign turned on. + enable_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( + extensions::FeatureSwitch::extension_action_redesign(), false)); ExtensionBrowserTest::SetUpCommandLine(command_line); } diff --git a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc index a9d2a72..f12b10f 100644 --- a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc +++ b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc @@ -60,8 +60,12 @@ BrowserActionsBarBrowserTest::~BrowserActionsBarBrowserTest() { void BrowserActionsBarBrowserTest::SetUpCommandLine( base::CommandLine* command_line) { - ToolbarActionsBar::disable_animations_for_testing_ = true; ExtensionBrowserTest::SetUpCommandLine(command_line); + ToolbarActionsBar::disable_animations_for_testing_ = true; + // These tests are deliberately testing behavior without the redesign. + // Forcefully disable it. + override_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( + extensions::FeatureSwitch::extension_action_redesign(), false)); } void BrowserActionsBarBrowserTest::SetUpOnMainThread() { @@ -110,9 +114,9 @@ BrowserActionsBarRedesignBrowserTest::~BrowserActionsBarRedesignBrowserTest() { void BrowserActionsBarRedesignBrowserTest::SetUpCommandLine( base::CommandLine* command_line) { BrowserActionsBarBrowserTest::SetUpCommandLine(command_line); - enable_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( - extensions::FeatureSwitch::extension_action_redesign(), - true)); + // Override to force the redesign. + override_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( + extensions::FeatureSwitch::extension_action_redesign(), true)); } // Test the basic functionality. diff --git a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.h b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.h index 3dcf83c..d814407 100644 --- a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.h +++ b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.h @@ -48,6 +48,10 @@ class BrowserActionsBarBrowserTest : public ExtensionBrowserTest { return extension_c_.get(); } + protected: + // Enable or disable the feature redesign switch. + scoped_ptr<extensions::FeatureSwitch::ScopedOverride> override_redesign_; + private: scoped_ptr<BrowserActionTestUtil> browser_actions_bar_; @@ -72,9 +76,6 @@ class BrowserActionsBarRedesignBrowserTest void SetUpCommandLine(base::CommandLine* command_line) override; private: - // Enable the feature redesign switch. - scoped_ptr<extensions::FeatureSwitch::ScopedOverride> enable_redesign_; - DISALLOW_COPY_AND_ASSIGN(BrowserActionsBarRedesignBrowserTest); }; diff --git a/chrome/browser/ui/views/location_bar/page_action_image_view_interactive_uitest.cc b/chrome/browser/ui/views/location_bar/page_action_image_view_interactive_uitest.cc index 798701a..d4a42d2 100644 --- a/chrome/browser/ui/views/location_bar/page_action_image_view_interactive_uitest.cc +++ b/chrome/browser/ui/views/location_bar/page_action_image_view_interactive_uitest.cc @@ -14,6 +14,7 @@ #include "chrome/browser/ui/views/location_bar/page_action_with_badge_view.h" #include "chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.h" #include "extensions/common/constants.h" +#include "extensions/common/feature_switch.h" #include "extensions/test/extension_test_message_listener.h" #include "ui/base/test/ui_controls.h" #include "ui/gfx/image/canvas_image_source.h" @@ -21,7 +22,23 @@ #include "ui/gfx/image/image_skia_operations.h" #include "ui/views/controls/menu/menu_controller.h" -using PageActionImageViewInteractiveUITest = ExtensionBrowserTest; +class PageActionImageViewInteractiveUITest : public ExtensionBrowserTest { + protected: + PageActionImageViewInteractiveUITest() {} + ~PageActionImageViewInteractiveUITest() override {} + + void SetUpCommandLine(base::CommandLine* command_line) override { + ExtensionBrowserTest::SetUpCommandLine(command_line); + // Testing page action-specific UI means we need to disable the redesign. + disable_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( + extensions::FeatureSwitch::extension_action_redesign(), false)); + } + + private: + scoped_ptr<extensions::FeatureSwitch::ScopedOverride> disable_redesign_; + + DISALLOW_COPY_AND_ASSIGN(PageActionImageViewInteractiveUITest); +}; // An ImageSkia source that will do nothing. We need this because we need a // blank canvas at a certain size, and that can't be done by just using a null diff --git a/testing/variations/fieldtrial_testing_config_chromeos.json b/testing/variations/fieldtrial_testing_config_chromeos.json index 47b4979..5e974a7b 100644 --- a/testing/variations/fieldtrial_testing_config_chromeos.json +++ b/testing/variations/fieldtrial_testing_config_chromeos.json @@ -19,6 +19,11 @@ "group_name": "Button" } ], + "ExtensionActionRedesign": [ + { + "group_name": "Enabled" + } + ], "PluginPowerSaver": [ { "group_name": "Enabled" diff --git a/testing/variations/fieldtrial_testing_config_linux.json b/testing/variations/fieldtrial_testing_config_linux.json index 8c9e4ec..36d33c1 100644 --- a/testing/variations/fieldtrial_testing_config_linux.json +++ b/testing/variations/fieldtrial_testing_config_linux.json @@ -29,6 +29,11 @@ "group_name": "Enabled" } ], + "ExtensionActionRedesign": [ + { + "group_name": "Enabled" + } + ], "InstanceID": [ { "group_name": "Enabled" diff --git a/testing/variations/fieldtrial_testing_config_mac.json b/testing/variations/fieldtrial_testing_config_mac.json index 94443fa..dec8562 100644 --- a/testing/variations/fieldtrial_testing_config_mac.json +++ b/testing/variations/fieldtrial_testing_config_mac.json @@ -24,6 +24,11 @@ "group_name": "Button" } ], + "ExtensionActionRedesign": [ + { + "group_name": "Enabled" + } + ], "ExtensionDeveloperModeWarning": [ { "group_name": "Enabled" diff --git a/testing/variations/fieldtrial_testing_config_win.json b/testing/variations/fieldtrial_testing_config_win.json index 8d1e12b..cd0d1c1 100644 --- a/testing/variations/fieldtrial_testing_config_win.json +++ b/testing/variations/fieldtrial_testing_config_win.json @@ -44,6 +44,11 @@ "group_name": "Enabled" } ], + "ExtensionActionRedesign": [ + { + "group_name": "Enabled" + } + ], "ExtensionContentVerification": [ { "group_name": "Enforce" |