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

Unified Diff: chrome/browser/extensions/extension_service_unittest.cc

Issue 69683002: Merge 233885 "Revert 231221 - "Remove enabled/disabled state fro..." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1700/src/
Patch Set: Created 7 years, 1 month 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
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/extensions/extension_sync_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_service_unittest.cc
===================================================================
--- chrome/browser/extensions/extension_service_unittest.cc (revision 234311)
+++ chrome/browser/extensions/extension_service_unittest.cc (working copy)
@@ -5279,6 +5279,91 @@
ASSERT_EQ(syncer::UNSPECIFIED, triggered_type);
}
+TEST_F(ExtensionServiceTest, DisableExtensionFromSync) {
+ // Start the extensions service with one external extension already installed.
+ base::FilePath source_install_dir = data_dir_
+ .AppendASCII("good")
+ .AppendASCII("Extensions");
+ base::FilePath pref_path = source_install_dir
+ .DirName()
+ .AppendASCII("Preferences");
+
+ InitializeInstalledExtensionService(pref_path, source_install_dir);
+ InitializeExtensionSyncService();
+
+ // The user has enabled sync.
+ ProfileSyncService* sync_service =
+ ProfileSyncServiceFactory::GetForProfile(profile_.get());
+ sync_service->SetSyncSetupCompleted();
+
+ service_->Init();
+ ASSERT_TRUE(service_->is_ready());
+
+ ASSERT_EQ(3u, loaded_.size());
+
+ // We start enabled.
+ const Extension* extension = service_->GetExtensionById(good0, true);
+ ASSERT_TRUE(extension);
+ ASSERT_TRUE(service_->IsExtensionEnabled(good0));
+ extensions::ExtensionSyncData disable_good_crx(*extension, false, false);
+
+ // Then sync data arrives telling us to disable |good0|.
+ syncer::SyncDataList sync_data;
+ sync_data.push_back(disable_good_crx.GetSyncData());
+ extension_sync_service_->MergeDataAndStartSyncing(
+ syncer::EXTENSIONS, sync_data,
+ scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub),
+ scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
+ ASSERT_FALSE(service_->IsExtensionEnabled(good0));
+}
+
+TEST_F(ExtensionServiceTest, DontDisableExtensionWithPendingEnableFromSync) {
+ // Start the extensions service with one external extension already installed.
+ base::FilePath source_install_dir = data_dir_
+ .AppendASCII("good")
+ .AppendASCII("Extensions");
+ base::FilePath pref_path = source_install_dir
+ .DirName()
+ .AppendASCII("Preferences");
+
+ InitializeInstalledExtensionService(pref_path, source_install_dir);
+ InitializeExtensionSyncService();
+
+ // The user has enabled sync.
+ ProfileSyncService* sync_service =
+ ProfileSyncServiceFactory::GetForProfile(profile_.get());
+ sync_service->SetSyncSetupCompleted();
+
+ service_->Init();
+ ASSERT_TRUE(service_->is_ready());
+ ASSERT_EQ(3u, loaded_.size());
+
+ const Extension* extension = service_->GetExtensionById(good0, true);
+ ASSERT_TRUE(service_->IsExtensionEnabled(good0));
+
+ // Disable extension before first sync data arrives.
+ service_->DisableExtension(good0, Extension::DISABLE_USER_ACTION);
+ ASSERT_FALSE(service_->IsExtensionEnabled(good0));
+
+ // Enable extension - this is now the most recent state.
+ service_->EnableExtension(good0);
+ ASSERT_TRUE(service_->IsExtensionEnabled(good0));
+
+ // Now sync data comes in that says to disable good0. This should be
+ // ignored.
+ extensions::ExtensionSyncData disable_good_crx(*extension, false, false);
+ syncer::SyncDataList sync_data;
+ sync_data.push_back(disable_good_crx.GetSyncData());
+ extension_sync_service_->MergeDataAndStartSyncing(
+ syncer::EXTENSIONS, sync_data,
+ scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub),
+ scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
+
+ // The extension was enabled locally before the sync data arrived, so it
+ // should still be enabled now.
+ ASSERT_TRUE(service_->IsExtensionEnabled(good0));
+}
+
TEST_F(ExtensionServiceTest, GetSyncData) {
InitializeEmptyExtensionService();
InitializeExtensionSyncService();
@@ -5297,6 +5382,7 @@
extensions::ExtensionSyncData data(list[0]);
EXPECT_EQ(extension->id(), data.id());
EXPECT_FALSE(data.uninstalled());
+ EXPECT_EQ(service_->IsExtensionEnabled(good_crx), data.enabled());
EXPECT_EQ(extension_util::IsIncognitoEnabled(good_crx, service_),
data.incognito_enabled());
EXPECT_TRUE(data.version().Equals(*extension->version()));
@@ -5325,6 +5411,7 @@
extensions::ExtensionSyncData data(list[0]);
EXPECT_EQ(extension->id(), data.id());
EXPECT_FALSE(data.uninstalled());
+ EXPECT_EQ(service_->IsExtensionEnabled(good_crx), data.enabled());
EXPECT_EQ(extension_util::IsIncognitoEnabled(good_crx, service_),
data.incognito_enabled());
EXPECT_TRUE(data.version().Equals(*extension->version()));
@@ -5370,17 +5457,39 @@
syncer::EXTENSIONS);
ASSERT_EQ(list.size(), 1U);
extensions::ExtensionSyncData data(list[0]);
+ EXPECT_TRUE(data.enabled());
EXPECT_FALSE(data.incognito_enabled());
}
+ service_->DisableExtension(good_crx, Extension::DISABLE_USER_ACTION);
+ {
+ syncer::SyncDataList list = extension_sync_service_->GetAllSyncData(
+ syncer::EXTENSIONS);
+ ASSERT_EQ(list.size(), 1U);
+ extensions::ExtensionSyncData data(list[0]);
+ EXPECT_FALSE(data.enabled());
+ EXPECT_FALSE(data.incognito_enabled());
+ }
+
extension_util::SetIsIncognitoEnabled(good_crx, service_, true);
{
syncer::SyncDataList list = extension_sync_service_->GetAllSyncData(
syncer::EXTENSIONS);
ASSERT_EQ(list.size(), 1U);
extensions::ExtensionSyncData data(list[0]);
+ EXPECT_FALSE(data.enabled());
EXPECT_TRUE(data.incognito_enabled());
}
+
+ service_->EnableExtension(good_crx);
+ {
+ syncer::SyncDataList list = extension_sync_service_->GetAllSyncData(
+ syncer::EXTENSIONS);
+ ASSERT_EQ(list.size(), 1U);
+ extensions::ExtensionSyncData data(list[0]);
+ EXPECT_TRUE(data.enabled());
+ EXPECT_TRUE(data.incognito_enabled());
+ }
}
TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) {
@@ -5406,6 +5515,7 @@
app_specifics->mutable_extension();
extension_specifics->set_id(good_crx);
extension_specifics->set_version("1.0");
+ extension_specifics->set_enabled(true);
syncer::SyncData sync_data =
syncer::SyncData::CreateLocalData(good_crx, "Name", specifics);
@@ -5598,6 +5708,7 @@
service_->GetInstalledExtension(good_crx)->version()->GetString());
{
+ extension_specifics->set_enabled(true);
syncer::SyncData sync_data =
syncer::SyncData::CreateLocalData(good_crx, "Name", specifics);
syncer::SyncChange sync_change(FROM_HERE,
@@ -5612,6 +5723,7 @@
}
{
+ extension_specifics->set_enabled(false);
syncer::SyncData sync_data =
syncer::SyncData::CreateLocalData(good_crx, "Name", specifics);
syncer::SyncChange sync_change(FROM_HERE,
@@ -5645,6 +5757,7 @@
ext_specifics->set_id(good_crx);
ext_specifics->set_version(
service_->GetInstalledExtension(good_crx)->version()->GetString());
+ ext_specifics->set_enabled(false);
{
syncer::SyncData sync_data =
@@ -5655,13 +5768,12 @@
syncer::SyncChangeList list(1);
list[0] = sync_change;
extension_sync_service_->ProcessSyncChanges(FROM_HERE, list);
+ EXPECT_FALSE(service_->IsExtensionEnabled(good_crx));
EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_));
}
{
- // Note: enabled is a deprecated field. Although clients may set it,
- // we should ignore it.
- ext_specifics->set_enabled(false);
+ ext_specifics->set_enabled(true);
ext_specifics->set_incognito_enabled(true);
syncer::SyncData sync_data =
syncer::SyncData::CreateLocalData(good_crx, "Name", specifics);
@@ -5675,6 +5787,21 @@
EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_));
}
+ {
+ ext_specifics->set_enabled(false);
+ ext_specifics->set_incognito_enabled(true);
+ syncer::SyncData sync_data =
+ syncer::SyncData::CreateLocalData(good_crx, "Name", specifics);
+ syncer::SyncChange sync_change(FROM_HERE,
+ syncer::SyncChange::ACTION_UPDATE,
+ sync_data);
+ syncer::SyncChangeList list(1);
+ list[0] = sync_change;
+ extension_sync_service_->ProcessSyncChanges(FROM_HERE, list);
+ EXPECT_FALSE(service_->IsExtensionEnabled(good_crx));
+ EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_));
+ }
+
EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx));
}
@@ -5697,6 +5824,7 @@
ext_specifics->set_id(good_crx);
ext_specifics->set_version(
service_->GetInstalledExtension(good_crx)->version()->GetString());
+ ext_specifics->set_enabled(false);
ext_specifics->set_incognito_enabled(true);
syncer::SyncData sync_data =
syncer::SyncData::CreateLocalData(good_crx, "Name", specifics);
@@ -5707,6 +5835,7 @@
list[0] = sync_change;
extension_sync_service_->ProcessSyncChanges(FROM_HERE, list);
+ EXPECT_FALSE(service_->IsExtensionEnabled(good_crx));
EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_));
EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx));
@@ -5728,6 +5857,7 @@
sync_pb::EntitySpecifics specifics;
sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension();
ext_specifics->set_id(good_crx);
+ ext_specifics->set_enabled(true);
{
ext_specifics->set_version(
@@ -5791,6 +5921,7 @@
sync_pb::EntitySpecifics specifics;
sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension();
ext_specifics->set_id(good_crx);
+ ext_specifics->set_enabled(false);
ext_specifics->set_incognito_enabled(true);
ext_specifics->set_update_url("http://www.google.com/");
ext_specifics->set_version("1.2.3.4");
@@ -5807,6 +5938,7 @@
EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_));
extension_sync_service_->ProcessSyncChanges(FROM_HERE, list);
EXPECT_TRUE(service_->updater()->WillCheckSoon());
+ EXPECT_FALSE(service_->IsExtensionEnabled(good_crx));
EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_));
const extensions::PendingExtensionInfo* info;
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/extensions/extension_sync_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698