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

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

Issue 1240573012: Extension syncing: Introduce a NeedsSync pref (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ext_sync_uninstall
Patch Set: (b); hackfix sync_integration_tests Created 5 years, 5 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/extensions/extension_service_unittest.cc
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 3378d72db7de623b815975fe239e77b04c9079f1..1577828d182b11689f68625b2c8bac3f85b2b4ee 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -72,6 +72,7 @@
#include "chrome/common/extensions/api/plugins/plugins_handler.h"
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
#include "chrome/common/extensions/manifest_handlers/content_scripts_handler.h"
+#include "chrome/common/extensions/sync_helper.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/scoped_browser_locale.h"
@@ -1148,11 +1149,6 @@ class ExtensionServiceTest : public extensions::ExtensionServiceTestBase,
#endif
}
- void InitializeExtensionSyncService() {
Marc Treib 2015/07/21 10:54:00 Not necessary anymore, now that the ExtensionSyncS
not at google - send to devlin 2015/07/21 13:43:30 wow...
- extension_sync_service_.reset(new ExtensionSyncService(
- profile(), ExtensionPrefs::Get(browser_context()), service()));
- }
-
void InitializeEmptyExtensionServiceWithTestingPrefs() {
ExtensionServiceTestBase::ExtensionServiceInitParams params =
CreateDefaultInitParams();
@@ -1165,13 +1161,12 @@ class ExtensionServiceTest : public extensions::ExtensionServiceTestBase,
}
ExtensionSyncService* extension_sync_service() {
- return extension_sync_service_.get();
+ return ExtensionSyncService::Get(profile());
}
protected:
typedef extensions::ExtensionManagementPrefUpdater<TestingPrefServiceSyncable>
ManagementPrefUpdater;
- scoped_ptr<ExtensionSyncService> extension_sync_service_;
extensions::ExtensionList loaded_;
std::string unloaded_id_;
UnloadedExtensionInfo::Reason unloaded_reason_;
@@ -5796,7 +5791,6 @@ TEST_F(ExtensionServiceTest, ComponentExtensions) {
TEST_F(ExtensionServiceTest, DeferredSyncStartupPreInstalledComponent) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
bool flare_was_called = false;
syncer::ModelType triggered_type(syncer::UNSPECIFIED);
@@ -5823,7 +5817,6 @@ TEST_F(ExtensionServiceTest, DeferredSyncStartupPreInstalledComponent) {
TEST_F(ExtensionServiceTest, DeferredSyncStartupPreInstalledNormal) {
InitializeGoodInstalledExtensionService();
- InitializeExtensionSyncService();
bool flare_was_called = false;
syncer::ModelType triggered_type(syncer::UNSPECIFIED);
@@ -5846,7 +5839,6 @@ TEST_F(ExtensionServiceTest, DeferredSyncStartupPreInstalledNormal) {
TEST_F(ExtensionServiceTest, DeferredSyncStartupOnInstall) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
service()->Init();
ASSERT_TRUE(service()->is_ready());
@@ -5890,7 +5882,6 @@ TEST_F(ExtensionServiceTest, DisableExtensionFromSync) {
source_install_dir.DirName().Append(chrome::kPreferencesFilename);
InitializeInstalledExtensionService(pref_path, source_install_dir);
- InitializeExtensionSyncService();
// The user has enabled sync.
ProfileSyncService* sync_service =
@@ -5907,30 +5898,34 @@ TEST_F(ExtensionServiceTest, DisableExtensionFromSync) {
ASSERT_TRUE(extension);
ASSERT_TRUE(service()->IsExtensionEnabled(good0));
+ // Sync starts up.
+ extension_sync_service()->MergeDataAndStartSyncing(
+ syncer::EXTENSIONS,
+ syncer::SyncDataList(),
+ make_scoped_ptr(new syncer::FakeSyncChangeProcessor),
+ scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
+
// Then sync data arrives telling us to disable |good0|.
ExtensionSyncData disable_good_crx(*extension, false,
Extension::DISABLE_USER_ACTION, false,
false, ExtensionSyncData::BOOLEAN_UNSET);
- 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 syncer::FakeSyncChangeProcessor),
- scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
+ syncer::SyncChange sync_change(FROM_HERE,
+ syncer::SyncChange::ACTION_UPDATE,
+ disable_good_crx.GetSyncData());
+ syncer::SyncChangeList list(1, sync_change);
+ extension_sync_service()->ProcessSyncChanges(FROM_HERE, list);
+
ASSERT_FALSE(service()->IsExtensionEnabled(good0));
}
-TEST_F(ExtensionServiceTest, DontDisableExtensionWithPendingEnableFromSync) {
- // Start the extensions service with one external extension already installed.
+TEST_F(ExtensionServiceTest, IgnoreSyncChangesWhenLocalStateIsMoreRecent) {
+ // Start the extension service with three extensions already installed.
base::FilePath source_install_dir =
data_dir().AppendASCII("good").AppendASCII("Extensions");
base::FilePath pref_path =
source_install_dir.DirName().Append(chrome::kPreferencesFilename);
InitializeInstalledExtensionService(pref_path, source_install_dir);
- InitializeExtensionSyncService();
// The user has enabled sync.
ProfileSyncService* sync_service =
@@ -5941,39 +5936,48 @@ TEST_F(ExtensionServiceTest, DontDisableExtensionWithPendingEnableFromSync) {
ASSERT_TRUE(service()->is_ready());
ASSERT_EQ(3u, loaded_.size());
- const Extension* extension = service()->GetExtensionById(good0, true);
ASSERT_TRUE(service()->IsExtensionEnabled(good0));
+ ASSERT_TRUE(service()->IsExtensionEnabled(good2));
- // Disable extension before first sync data arrives.
+ // Disable and re-enable good0 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.
- ExtensionSyncData disable_good_crx(*extension, false,
- Extension::DISABLE_USER_ACTION, false,
- false, ExtensionSyncData::BOOLEAN_UNSET);
+ // Disable good2 before first sync data arrives (good1 is considered
+ // non-syncable because it has plugin permission).
+ service()->DisableExtension(good2, Extension::DISABLE_USER_ACTION);
+ ASSERT_FALSE(service()->IsExtensionEnabled(good2));
+
+ const Extension* extension0 = service()->GetExtensionById(good0, true);
+ const Extension* extension2 = service()->GetExtensionById(good2, true);
+ ASSERT_TRUE(extensions::sync_helper::IsSyncable(extension0));
+ ASSERT_TRUE(extensions::sync_helper::IsSyncable(extension2));
+
+ // Now sync data comes in that says to disable good0 and enable good2.
+ ExtensionSyncData disable_good0(*extension0, false,
+ Extension::DISABLE_USER_ACTION, false, false,
+ ExtensionSyncData::BOOLEAN_UNSET);
+ ExtensionSyncData enable_good2(*extension2, true, Extension::DISABLE_NONE,
+ false, false,
+ ExtensionSyncData::BOOLEAN_UNSET);
syncer::SyncDataList sync_data;
- sync_data.push_back(disable_good_crx.GetSyncData());
+ sync_data.push_back(disable_good0.GetSyncData());
+ sync_data.push_back(enable_good2.GetSyncData());
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
sync_data,
- scoped_ptr<syncer::SyncChangeProcessor>(
- new syncer::FakeSyncChangeProcessor),
- scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
+ make_scoped_ptr(new syncer::FakeSyncChangeProcessor),
+ make_scoped_ptr(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));
+ // Both sync changes should be ignored, since the local state was changed
+ // before sync started, and so the local state is considered more recent.
+ EXPECT_TRUE(service()->IsExtensionEnabled(good0));
+ EXPECT_FALSE(service()->IsExtensionEnabled(good2));
}
TEST_F(ExtensionServiceTest, GetSyncData) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
const Extension* extension = service()->GetInstalledExtension(good_crx);
ASSERT_TRUE(extension);
@@ -6005,7 +6009,6 @@ TEST_F(ExtensionServiceTest, GetSyncData) {
TEST_F(ExtensionServiceTest, GetSyncDataTerminated) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
TerminateExtension(good_crx);
const Extension* extension = service()->GetInstalledExtension(good_crx);
@@ -6039,7 +6042,6 @@ TEST_F(ExtensionServiceTest, GetSyncDataTerminated) {
TEST_F(ExtensionServiceTest, GetSyncDataFilter) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
const Extension* extension = service()->GetInstalledExtension(good_crx);
ASSERT_TRUE(extension);
@@ -6059,7 +6061,6 @@ TEST_F(ExtensionServiceTest, GetSyncDataFilter) {
TEST_F(ExtensionServiceTest, GetSyncExtensionDataUserSettings) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
const Extension* extension = service()->GetInstalledExtension(good_crx);
ASSERT_TRUE(extension);
@@ -6130,7 +6131,6 @@ TEST_F(ExtensionServiceTest, GetSyncExtensionDataUserSettings) {
TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
InstallCRXWithLocation(
data_dir().AppendASCII("good.crx"), Manifest::EXTERNAL_PREF, INSTALL_NEW);
const Extension* extension = service()->GetInstalledExtension(good_crx);
@@ -6171,7 +6171,6 @@ TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) {
TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettings) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
const Extension* app =
PackAndInstallCRX(data_dir().AppendASCII("app"), INSTALL_NEW);
ASSERT_TRUE(app);
@@ -6232,7 +6231,6 @@ TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettings) {
// PackAndInstallCRX(). When we clean up a bit more, this should move out.
TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettingsOnExtensionMoved) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
const size_t kAppCount = 3;
const Extension* apps[kAppCount];
apps[0] = PackAndInstallCRX(data_dir().AppendASCII("app1"), INSTALL_NEW);
@@ -6283,7 +6281,6 @@ TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettingsOnExtensionMoved) {
TEST_F(ExtensionServiceTest, GetSyncDataList) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
InstallCRX(data_dir().AppendASCII("page_action.crx"), INSTALL_NEW);
InstallCRX(data_dir().AppendASCII("theme.crx"), INSTALL_NEW);
@@ -6313,7 +6310,6 @@ TEST_F(ExtensionServiceTest, GetSyncDataList) {
TEST_F(ExtensionServiceTest, ProcessSyncDataUninstall) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
syncer::FakeSyncChangeProcessor processor;
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
@@ -6354,7 +6350,6 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataUninstall) {
TEST_F(ExtensionServiceTest, ProcessSyncDataWrongType) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
// Install the extension.
base::FilePath extension_path = data_dir().AppendASCII("good.crx");
@@ -6402,7 +6397,6 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataWrongType) {
TEST_F(ExtensionServiceTest, ProcessSyncDataSettings) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
syncer::FakeSyncChangeProcessor processor;
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
@@ -6515,7 +6509,6 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataSettings) {
TEST_F(ExtensionServiceTest, ProcessSyncDataNewExtension) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
syncer::FakeSyncChangeProcessor processor;
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
@@ -6596,7 +6589,6 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataNewExtension) {
TEST_F(ExtensionServiceTest, ProcessSyncDataTerminatedExtension) {
InitializeExtensionServiceWithUpdater();
- InitializeExtensionSyncService();
syncer::FakeSyncChangeProcessor processor;
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
@@ -6634,7 +6626,6 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataTerminatedExtension) {
TEST_F(ExtensionServiceTest, ProcessSyncDataVersionCheck) {
InitializeExtensionServiceWithUpdater();
- InitializeExtensionSyncService();
syncer::FakeSyncChangeProcessor processor;
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
@@ -6704,7 +6695,6 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataVersionCheck) {
TEST_F(ExtensionServiceTest, ProcessSyncDataNotInstalled) {
InitializeExtensionServiceWithUpdater();
- InitializeExtensionSyncService();
syncer::FakeSyncChangeProcessor processor;
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
@@ -6746,7 +6736,6 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataNotInstalled) {
TEST_F(ExtensionServiceTest, ProcessSyncDataEnableDisable) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
syncer::SyncDataList(),
@@ -6844,7 +6833,6 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataPermissionApproval) {
"http://localhost/autoupdate/updates.xml");
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
syncer::SyncDataList(),
@@ -7132,7 +7120,6 @@ TEST_F(ExtensionServiceTest, SupervisedUser_UpdateWithPermissionIncrease) {
TEST_F(ExtensionServiceTest,
SupervisedUser_SyncUninstallByCustodianSkipsPolicy) {
InitializeEmptyExtensionService();
- InitializeExtensionSyncService();
extension_sync_service()->MergeDataAndStartSyncing(
syncer::EXTENSIONS,
syncer::SyncDataList(),

Powered by Google App Engine
This is Rietveld 408576698