Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1323)

Unified Diff: chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc

Issue 2613713005: Make ToolbarActionsModel own ComponentToolbarActionsFactory (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc
diff --git a/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc b/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc
index c39f29ddc3d5d4d4f0456de878752f52404d80ce..026629040a6ba83e1f5fc11d2bfe9a1b46155c26 100644
--- a/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc
+++ b/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc
@@ -123,10 +123,6 @@ class ToolbarActionsModelUnitTest
~ToolbarActionsModelUnitTest() override {}
protected:
- // Initialize the ExtensionService, ToolbarActionsModel, and
- // ExtensionSystem.
- void Init();
-
enum class MigrationStatus {
// The feature is enabled without any extension to migrate.
FEATURE_ENABLED_NO_EXTENSION,
@@ -141,11 +137,24 @@ class ToolbarActionsModelUnitTest
FEATURE_DISABLED_WITH_PREF_TRUE,
};
- // Initialize the ExtensionService, ToolbarActionsModel, and ExtensionSystem,
+ // Initializes the ExtensionService, ToolbarActionsModel, and ExtensionSystem.
+ void Init();
+
+ // Initializes the ExtensionService, ToolbarActionsModel, and ExtensionSystem,
+ // making ToolbarActionsModel use a MockComponentToolbarActionsFactory.
+ void InitWithMockActionsFactory();
+
+ // Initializes the ExtensionService, ToolbarActionsModel, and ExtensionSystem,
// and an action extension to migrate to a component. |migration_status|
// is used to configure the user's initial migration status.
void InitForMigrationTest(MigrationStatus migration_status);
+ // Initializes ExtensionSystem and triggers ToolbarActionsModel::OnReady() to
+ // be called with |mock_actions_factory| in use. The ownership of the actions
+ // factory gets transferred to |toolbar_model_|.
+ void ReadyWithMockActionsFactory(
+ MockComponentToolbarActionsFactory* mock_actions_factory);
+
void TearDown() override;
// Adds or removes the given |extension| and verify success.
@@ -164,7 +173,8 @@ class ToolbarActionsModelUnitTest
testing::AssertionResult AddActionExtensions() WARN_UNUSED_RESULT;
// Creates an extension that is to be migrated to a component action.
- void CreateMigratedActionExtension();
+ void CreateMigratedActionExtension(
+ MockComponentToolbarActionsFactory* mock_actions_factory);
// Returns the action's id at the given index in the toolbar model, or empty
// if one does not exist.
@@ -177,8 +187,6 @@ class ToolbarActionsModelUnitTest
// Returns true if the |toobar_model_| has an action with the given |id|.
bool ModelHasActionForId(const std::string& id) const;
- void SetMockActionsFactory(MockComponentToolbarActionsFactory* factory);
-
ToolbarActionsModel* toolbar_model() { return toolbar_model_; }
const ToolbarActionsModelTestObserver* observer() const {
@@ -237,8 +245,6 @@ class ToolbarActionsModelUnitTest
scoped_refptr<const extensions::Extension> page_action_extension_;
scoped_refptr<const extensions::Extension> no_action_extension_;
- std::unique_ptr<MockComponentToolbarActionsFactory> mock_actions_factory_;
-
DISALLOW_COPY_AND_ASSIGN(ToolbarActionsModelUnitTest);
};
@@ -250,45 +256,69 @@ void ToolbarActionsModelUnitTest::Init() {
model_observer_.reset(new ToolbarActionsModelTestObserver(toolbar_model_));
}
+void ToolbarActionsModelUnitTest::InitWithMockActionsFactory() {
msw 2017/01/10 23:23:59 nit: this is called once, maybe inline the functio
takumif 2017/02/17 03:22:52 The test that calls this was already very long, so
+ InitializeEmptyExtensionService();
+ toolbar_model_ = extensions::extension_action_test_util::
+ CreateToolbarModelForProfileWithoutWaitingForReady(profile());
+ MockComponentToolbarActionsFactory* mock_actions_factory =
+ new MockComponentToolbarActionsFactory(profile(), toolbar_model_);
msw 2017/01/10 23:23:59 Use base::MakeUnique
takumif 2017/02/17 03:22:52 Done.
+ ReadyWithMockActionsFactory(mock_actions_factory);
+}
+
+void ToolbarActionsModelUnitTest::ReadyWithMockActionsFactory(
+ MockComponentToolbarActionsFactory* mock_actions_factory) {
msw 2017/01/10 23:23:59 Use unique_ptr for ownership passing
takumif 2017/02/17 03:22:52 Done.
+ mock_actions_factory->RegisterComponentMigrations();
+ toolbar_model_->SetMockActionsFactory(mock_actions_factory);
+
+ // Trigger ToolbarActionsModel::OnReady() after the actions factory has been
+ // swapped out for a mock one.
+ static_cast<extensions::TestExtensionSystem*>(
+ extensions::ExtensionSystem::Get(profile()))
+ ->SetReady();
+ base::RunLoop().RunUntilIdle();
+
+ model_observer_.reset(new ToolbarActionsModelTestObserver(toolbar_model_));
+}
+
void ToolbarActionsModelUnitTest::InitForMigrationTest(
MigrationStatus migration_status) {
InitializeEmptyExtensionService();
- SetMockActionsFactory(new MockComponentToolbarActionsFactory(nullptr));
- CreateMigratedActionExtension();
+ toolbar_model_ = extensions::extension_action_test_util::
+ CreateToolbarModelForProfileWithoutWaitingForReady(profile());
+ MockComponentToolbarActionsFactory* mock_actions_factory =
+ new MockComponentToolbarActionsFactory(profile(), toolbar_model_);
+ CreateMigratedActionExtension(mock_actions_factory);
{
DictionaryPrefUpdate update(profile()->GetPrefs(),
::prefs::kToolbarMigratedComponentActionStatus);
switch (migration_status) {
case MigrationStatus::FEATURE_ENABLED_EXTENSION_INSTALLED:
- mock_actions_factory_->set_migrated_feature_enabled(true);
+ mock_actions_factory->set_migrated_feature_enabled(true);
ASSERT_TRUE(AddExtension(browser_action_migrated()));
break;
case MigrationStatus::FEATURE_ENABLED_NO_EXTENSION:
- mock_actions_factory_->set_migrated_feature_enabled(true);
+ mock_actions_factory->set_migrated_feature_enabled(true);
break;
case MigrationStatus::FEATURE_ENABLED_WITH_PREF_TRUE:
- mock_actions_factory_->set_migrated_feature_enabled(true);
+ mock_actions_factory->set_migrated_feature_enabled(true);
ASSERT_TRUE(AddExtension(browser_action_migrated()));
update->SetBoolean(component_action_id(), true);
break;
case MigrationStatus::FEATURE_ENABLED_WITH_PREF_FALSE:
- mock_actions_factory_->set_migrated_feature_enabled(true);
+ mock_actions_factory->set_migrated_feature_enabled(true);
ASSERT_TRUE(AddExtension(browser_action_migrated()));
update->SetBoolean(component_action_id(), false);
break;
case MigrationStatus::FEATURE_DISABLED_WITH_PREF_TRUE:
- mock_actions_factory_->set_migrated_feature_enabled(false);
+ mock_actions_factory->set_migrated_feature_enabled(false);
ASSERT_TRUE(AddExtension(browser_action_migrated()));
update->SetBoolean(component_action_id(), true);
break;
}
}
- toolbar_model_ =
- extensions::extension_action_test_util::CreateToolbarModelForProfile(
- profile());
- model_observer_.reset(new ToolbarActionsModelTestObserver(toolbar_model_));
+ ReadyWithMockActionsFactory(mock_actions_factory);
}
void ToolbarActionsModelUnitTest::TearDown() {
@@ -368,12 +398,13 @@ ToolbarActionsModelUnitTest::AddBrowserActionExtensions() {
return AddAndVerifyExtensions(extensions);
}
-void ToolbarActionsModelUnitTest::CreateMigratedActionExtension() {
+void ToolbarActionsModelUnitTest::CreateMigratedActionExtension(
+ MockComponentToolbarActionsFactory* mock_actions_factory) {
browser_action_migrated_ =
extensions::extension_action_test_util::CreateActionExtension(
"browser_actionMigrated",
extensions::extension_action_test_util::BROWSER_ACTION);
- mock_actions_factory_->set_migrated_extension_id(
+ mock_actions_factory->set_migrated_extension_id(
browser_action_migrated_->id());
}
@@ -411,11 +442,6 @@ testing::AssertionResult ToolbarActionsModelUnitTest::AddAndVerifyExtensions(
return testing::AssertionSuccess();
}
-void ToolbarActionsModelUnitTest::SetMockActionsFactory(
- MockComponentToolbarActionsFactory* factory) {
- mock_actions_factory_.reset(factory);
-}
-
// A basic test for component actions and extensions with browser actions
// showing up in the toolbar.
TEST_F(ToolbarActionsModelUnitTest, BasicToolbarActionsModelTest) {
@@ -1314,8 +1340,7 @@ TEST_F(ToolbarActionsModelUnitTest,
ActionsToolbarReorderAndReinsertWithSwitchAndComponentActions) {
extensions::FeatureSwitch::ScopedOverride enable_redesign(
extensions::FeatureSwitch::extension_action_redesign(), true);
- SetMockActionsFactory(new MockComponentToolbarActionsFactory(nullptr));
- Init();
+ InitWithMockActionsFactory();
// One component action was added when the model was initialized.
EXPECT_EQ(1u, num_toolbar_items());

Powered by Google App Engine
This is Rietveld 408576698