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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/at_exit.h" 9 #include "base/at_exit.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 #include "chrome/browser/policy/profile_policy_connector.h" 65 #include "chrome/browser/policy/profile_policy_connector.h"
66 #include "chrome/browser/policy/profile_policy_connector_factory.h" 66 #include "chrome/browser/policy/profile_policy_connector_factory.h"
67 #include "chrome/browser/prefs/pref_service_syncable.h" 67 #include "chrome/browser/prefs/pref_service_syncable.h"
68 #include "chrome/browser/sync/profile_sync_service.h" 68 #include "chrome/browser/sync/profile_sync_service.h"
69 #include "chrome/browser/sync/profile_sync_service_factory.h" 69 #include "chrome/browser/sync/profile_sync_service_factory.h"
70 #include "chrome/common/chrome_constants.h" 70 #include "chrome/common/chrome_constants.h"
71 #include "chrome/common/chrome_switches.h" 71 #include "chrome/common/chrome_switches.h"
72 #include "chrome/common/extensions/api/plugins/plugins_handler.h" 72 #include "chrome/common/extensions/api/plugins/plugins_handler.h"
73 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" 73 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
74 #include "chrome/common/extensions/manifest_handlers/content_scripts_handler.h" 74 #include "chrome/common/extensions/manifest_handlers/content_scripts_handler.h"
75 #include "chrome/common/extensions/sync_helper.h"
75 #include "chrome/common/pref_names.h" 76 #include "chrome/common/pref_names.h"
76 #include "chrome/common/url_constants.h" 77 #include "chrome/common/url_constants.h"
77 #include "chrome/test/base/scoped_browser_locale.h" 78 #include "chrome/test/base/scoped_browser_locale.h"
78 #include "chrome/test/base/testing_pref_service_syncable.h" 79 #include "chrome/test/base/testing_pref_service_syncable.h"
79 #include "chrome/test/base/testing_profile.h" 80 #include "chrome/test/base/testing_profile.h"
80 #include "components/crx_file/id_util.h" 81 #include "components/crx_file/id_util.h"
81 #include "components/pref_registry/pref_registry_syncable.h" 82 #include "components/pref_registry/pref_registry_syncable.h"
82 #include "content/public/browser/dom_storage_context.h" 83 #include "content/public/browser/dom_storage_context.h"
83 #include "content/public/browser/gpu_data_manager.h" 84 #include "content/public/browser/gpu_data_manager.h"
84 #include "content/public/browser/indexed_db_context.h" 85 #include "content/public/browser/indexed_db_context.h"
(...skipping 1056 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 1142
1142 SetPref(extension_id, pref_path, list_value, msg); 1143 SetPref(extension_id, pref_path, list_value, msg);
1143 } 1144 }
1144 1145
1145 void InitPluginService() { 1146 void InitPluginService() {
1146 #if defined(ENABLE_PLUGINS) 1147 #if defined(ENABLE_PLUGINS)
1147 PluginService::GetInstance()->Init(); 1148 PluginService::GetInstance()->Init();
1148 #endif 1149 #endif
1149 } 1150 }
1150 1151
1151 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...
1152 extension_sync_service_.reset(new ExtensionSyncService(
1153 profile(), ExtensionPrefs::Get(browser_context()), service()));
1154 }
1155
1156 void InitializeEmptyExtensionServiceWithTestingPrefs() { 1152 void InitializeEmptyExtensionServiceWithTestingPrefs() {
1157 ExtensionServiceTestBase::ExtensionServiceInitParams params = 1153 ExtensionServiceTestBase::ExtensionServiceInitParams params =
1158 CreateDefaultInitParams(); 1154 CreateDefaultInitParams();
1159 params.pref_file = base::FilePath(); 1155 params.pref_file = base::FilePath();
1160 InitializeExtensionService(params); 1156 InitializeExtensionService(params);
1161 } 1157 }
1162 1158
1163 extensions::ManagementPolicy* GetManagementPolicy() { 1159 extensions::ManagementPolicy* GetManagementPolicy() {
1164 return ExtensionSystem::Get(browser_context())->management_policy(); 1160 return ExtensionSystem::Get(browser_context())->management_policy();
1165 } 1161 }
1166 1162
1167 ExtensionSyncService* extension_sync_service() { 1163 ExtensionSyncService* extension_sync_service() {
1168 return extension_sync_service_.get(); 1164 return ExtensionSyncService::Get(profile());
1169 } 1165 }
1170 1166
1171 protected: 1167 protected:
1172 typedef extensions::ExtensionManagementPrefUpdater<TestingPrefServiceSyncable> 1168 typedef extensions::ExtensionManagementPrefUpdater<TestingPrefServiceSyncable>
1173 ManagementPrefUpdater; 1169 ManagementPrefUpdater;
1174 scoped_ptr<ExtensionSyncService> extension_sync_service_;
1175 extensions::ExtensionList loaded_; 1170 extensions::ExtensionList loaded_;
1176 std::string unloaded_id_; 1171 std::string unloaded_id_;
1177 UnloadedExtensionInfo::Reason unloaded_reason_; 1172 UnloadedExtensionInfo::Reason unloaded_reason_;
1178 const Extension* installed_; 1173 const Extension* installed_;
1179 bool was_update_; 1174 bool was_update_;
1180 std::string old_name_; 1175 std::string old_name_;
1181 FeatureSwitch::ScopedOverride override_external_install_prompt_; 1176 FeatureSwitch::ScopedOverride override_external_install_prompt_;
1182 1177
1183 private: 1178 private:
1184 // Create a CrxInstaller and install the CRX file. 1179 // Create a CrxInstaller and install the CRX file.
(...skipping 4604 matching lines...) Expand 10 before | Expand all | Expand 10 after
5789 // Reload all extensions, and make sure it comes back. 5784 // Reload all extensions, and make sure it comes back.
5790 std::string extension_id = (*registry()->enabled_extensions().begin())->id(); 5785 std::string extension_id = (*registry()->enabled_extensions().begin())->id();
5791 loaded_.clear(); 5786 loaded_.clear();
5792 service()->ReloadExtensionsForTest(); 5787 service()->ReloadExtensionsForTest();
5793 ASSERT_EQ(1u, registry()->enabled_extensions().size()); 5788 ASSERT_EQ(1u, registry()->enabled_extensions().size());
5794 EXPECT_EQ(extension_id, (*registry()->enabled_extensions().begin())->id()); 5789 EXPECT_EQ(extension_id, (*registry()->enabled_extensions().begin())->id());
5795 } 5790 }
5796 5791
5797 TEST_F(ExtensionServiceTest, DeferredSyncStartupPreInstalledComponent) { 5792 TEST_F(ExtensionServiceTest, DeferredSyncStartupPreInstalledComponent) {
5798 InitializeEmptyExtensionService(); 5793 InitializeEmptyExtensionService();
5799 InitializeExtensionSyncService();
5800 5794
5801 bool flare_was_called = false; 5795 bool flare_was_called = false;
5802 syncer::ModelType triggered_type(syncer::UNSPECIFIED); 5796 syncer::ModelType triggered_type(syncer::UNSPECIFIED);
5803 base::WeakPtrFactory<ExtensionServiceTest> factory(this); 5797 base::WeakPtrFactory<ExtensionServiceTest> factory(this);
5804 extension_sync_service()->SetSyncStartFlare( 5798 extension_sync_service()->SetSyncStartFlare(
5805 base::Bind(&ExtensionServiceTest::MockSyncStartFlare, 5799 base::Bind(&ExtensionServiceTest::MockSyncStartFlare,
5806 factory.GetWeakPtr(), 5800 factory.GetWeakPtr(),
5807 &flare_was_called, // Safe due to WeakPtrFactory scope. 5801 &flare_was_called, // Safe due to WeakPtrFactory scope.
5808 &triggered_type)); // Safe due to WeakPtrFactory scope. 5802 &triggered_type)); // Safe due to WeakPtrFactory scope.
5809 5803
5810 // Install a component extension. 5804 // Install a component extension.
5811 std::string manifest; 5805 std::string manifest;
5812 ASSERT_TRUE(base::ReadFileToString( 5806 ASSERT_TRUE(base::ReadFileToString(
5813 good0_path().Append(extensions::kManifestFilename), &manifest)); 5807 good0_path().Append(extensions::kManifestFilename), &manifest));
5814 service()->component_loader()->Add(manifest, good0_path()); 5808 service()->component_loader()->Add(manifest, good0_path());
5815 ASSERT_FALSE(service()->is_ready()); 5809 ASSERT_FALSE(service()->is_ready());
5816 service()->Init(); 5810 service()->Init();
5817 ASSERT_TRUE(service()->is_ready()); 5811 ASSERT_TRUE(service()->is_ready());
5818 5812
5819 // Extensions added before service is_ready() don't trigger sync startup. 5813 // Extensions added before service is_ready() don't trigger sync startup.
5820 EXPECT_FALSE(flare_was_called); 5814 EXPECT_FALSE(flare_was_called);
5821 ASSERT_EQ(syncer::UNSPECIFIED, triggered_type); 5815 ASSERT_EQ(syncer::UNSPECIFIED, triggered_type);
5822 } 5816 }
5823 5817
5824 TEST_F(ExtensionServiceTest, DeferredSyncStartupPreInstalledNormal) { 5818 TEST_F(ExtensionServiceTest, DeferredSyncStartupPreInstalledNormal) {
5825 InitializeGoodInstalledExtensionService(); 5819 InitializeGoodInstalledExtensionService();
5826 InitializeExtensionSyncService();
5827 5820
5828 bool flare_was_called = false; 5821 bool flare_was_called = false;
5829 syncer::ModelType triggered_type(syncer::UNSPECIFIED); 5822 syncer::ModelType triggered_type(syncer::UNSPECIFIED);
5830 base::WeakPtrFactory<ExtensionServiceTest> factory(this); 5823 base::WeakPtrFactory<ExtensionServiceTest> factory(this);
5831 extension_sync_service()->SetSyncStartFlare( 5824 extension_sync_service()->SetSyncStartFlare(
5832 base::Bind(&ExtensionServiceTest::MockSyncStartFlare, 5825 base::Bind(&ExtensionServiceTest::MockSyncStartFlare,
5833 factory.GetWeakPtr(), 5826 factory.GetWeakPtr(),
5834 &flare_was_called, // Safe due to WeakPtrFactory scope. 5827 &flare_was_called, // Safe due to WeakPtrFactory scope.
5835 &triggered_type)); // Safe due to WeakPtrFactory scope. 5828 &triggered_type)); // Safe due to WeakPtrFactory scope.
5836 5829
5837 ASSERT_FALSE(service()->is_ready()); 5830 ASSERT_FALSE(service()->is_ready());
5838 service()->Init(); 5831 service()->Init();
5839 ASSERT_EQ(3u, loaded_.size()); 5832 ASSERT_EQ(3u, loaded_.size());
5840 ASSERT_TRUE(service()->is_ready()); 5833 ASSERT_TRUE(service()->is_ready());
5841 5834
5842 // Extensions added before service is_ready() don't trigger sync startup. 5835 // Extensions added before service is_ready() don't trigger sync startup.
5843 EXPECT_FALSE(flare_was_called); 5836 EXPECT_FALSE(flare_was_called);
5844 ASSERT_EQ(syncer::UNSPECIFIED, triggered_type); 5837 ASSERT_EQ(syncer::UNSPECIFIED, triggered_type);
5845 } 5838 }
5846 5839
5847 TEST_F(ExtensionServiceTest, DeferredSyncStartupOnInstall) { 5840 TEST_F(ExtensionServiceTest, DeferredSyncStartupOnInstall) {
5848 InitializeEmptyExtensionService(); 5841 InitializeEmptyExtensionService();
5849 InitializeExtensionSyncService();
5850 service()->Init(); 5842 service()->Init();
5851 ASSERT_TRUE(service()->is_ready()); 5843 ASSERT_TRUE(service()->is_ready());
5852 5844
5853 bool flare_was_called = false; 5845 bool flare_was_called = false;
5854 syncer::ModelType triggered_type(syncer::UNSPECIFIED); 5846 syncer::ModelType triggered_type(syncer::UNSPECIFIED);
5855 base::WeakPtrFactory<ExtensionServiceTest> factory(this); 5847 base::WeakPtrFactory<ExtensionServiceTest> factory(this);
5856 extension_sync_service()->SetSyncStartFlare( 5848 extension_sync_service()->SetSyncStartFlare(
5857 base::Bind(&ExtensionServiceTest::MockSyncStartFlare, 5849 base::Bind(&ExtensionServiceTest::MockSyncStartFlare,
5858 factory.GetWeakPtr(), 5850 factory.GetWeakPtr(),
5859 &flare_was_called, // Safe due to WeakPtrFactory scope. 5851 &flare_was_called, // Safe due to WeakPtrFactory scope.
(...skipping 23 matching lines...) Expand all
5883 } 5875 }
5884 5876
5885 TEST_F(ExtensionServiceTest, DisableExtensionFromSync) { 5877 TEST_F(ExtensionServiceTest, DisableExtensionFromSync) {
5886 // Start the extensions service with one external extension already installed. 5878 // Start the extensions service with one external extension already installed.
5887 base::FilePath source_install_dir = 5879 base::FilePath source_install_dir =
5888 data_dir().AppendASCII("good").AppendASCII("Extensions"); 5880 data_dir().AppendASCII("good").AppendASCII("Extensions");
5889 base::FilePath pref_path = 5881 base::FilePath pref_path =
5890 source_install_dir.DirName().Append(chrome::kPreferencesFilename); 5882 source_install_dir.DirName().Append(chrome::kPreferencesFilename);
5891 5883
5892 InitializeInstalledExtensionService(pref_path, source_install_dir); 5884 InitializeInstalledExtensionService(pref_path, source_install_dir);
5893 InitializeExtensionSyncService();
5894 5885
5895 // The user has enabled sync. 5886 // The user has enabled sync.
5896 ProfileSyncService* sync_service = 5887 ProfileSyncService* sync_service =
5897 ProfileSyncServiceFactory::GetForProfile(profile()); 5888 ProfileSyncServiceFactory::GetForProfile(profile());
5898 sync_service->SetSyncSetupCompleted(); 5889 sync_service->SetSyncSetupCompleted();
5899 5890
5900 service()->Init(); 5891 service()->Init();
5901 ASSERT_TRUE(service()->is_ready()); 5892 ASSERT_TRUE(service()->is_ready());
5902 5893
5903 ASSERT_EQ(3u, loaded_.size()); 5894 ASSERT_EQ(3u, loaded_.size());
5904 5895
5905 // We start enabled. 5896 // We start enabled.
5906 const Extension* extension = service()->GetExtensionById(good0, true); 5897 const Extension* extension = service()->GetExtensionById(good0, true);
5907 ASSERT_TRUE(extension); 5898 ASSERT_TRUE(extension);
5908 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); 5899 ASSERT_TRUE(service()->IsExtensionEnabled(good0));
5909 5900
5901 // Sync starts up.
5902 extension_sync_service()->MergeDataAndStartSyncing(
5903 syncer::EXTENSIONS,
5904 syncer::SyncDataList(),
5905 make_scoped_ptr(new syncer::FakeSyncChangeProcessor),
5906 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
5907
5910 // Then sync data arrives telling us to disable |good0|. 5908 // Then sync data arrives telling us to disable |good0|.
5911 ExtensionSyncData disable_good_crx(*extension, false, 5909 ExtensionSyncData disable_good_crx(*extension, false,
5912 Extension::DISABLE_USER_ACTION, false, 5910 Extension::DISABLE_USER_ACTION, false,
5913 false, ExtensionSyncData::BOOLEAN_UNSET); 5911 false, ExtensionSyncData::BOOLEAN_UNSET);
5914 syncer::SyncDataList sync_data; 5912 syncer::SyncChange sync_change(FROM_HERE,
5915 sync_data.push_back(disable_good_crx.GetSyncData()); 5913 syncer::SyncChange::ACTION_UPDATE,
5916 extension_sync_service()->MergeDataAndStartSyncing( 5914 disable_good_crx.GetSyncData());
5917 syncer::EXTENSIONS, 5915 syncer::SyncChangeList list(1, sync_change);
5918 sync_data, 5916 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list);
5919 scoped_ptr<syncer::SyncChangeProcessor>( 5917
5920 new syncer::FakeSyncChangeProcessor),
5921 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
5922 ASSERT_FALSE(service()->IsExtensionEnabled(good0)); 5918 ASSERT_FALSE(service()->IsExtensionEnabled(good0));
5923 } 5919 }
5924 5920
5925 TEST_F(ExtensionServiceTest, DontDisableExtensionWithPendingEnableFromSync) { 5921 TEST_F(ExtensionServiceTest, IgnoreSyncChangesWhenLocalStateIsMoreRecent) {
5926 // Start the extensions service with one external extension already installed. 5922 // Start the extension service with three extensions already installed.
5927 base::FilePath source_install_dir = 5923 base::FilePath source_install_dir =
5928 data_dir().AppendASCII("good").AppendASCII("Extensions"); 5924 data_dir().AppendASCII("good").AppendASCII("Extensions");
5929 base::FilePath pref_path = 5925 base::FilePath pref_path =
5930 source_install_dir.DirName().Append(chrome::kPreferencesFilename); 5926 source_install_dir.DirName().Append(chrome::kPreferencesFilename);
5931 5927
5932 InitializeInstalledExtensionService(pref_path, source_install_dir); 5928 InitializeInstalledExtensionService(pref_path, source_install_dir);
5933 InitializeExtensionSyncService();
5934 5929
5935 // The user has enabled sync. 5930 // The user has enabled sync.
5936 ProfileSyncService* sync_service = 5931 ProfileSyncService* sync_service =
5937 ProfileSyncServiceFactory::GetForProfile(profile()); 5932 ProfileSyncServiceFactory::GetForProfile(profile());
5938 sync_service->SetSyncSetupCompleted(); 5933 sync_service->SetSyncSetupCompleted();
5939 5934
5940 service()->Init(); 5935 service()->Init();
5941 ASSERT_TRUE(service()->is_ready()); 5936 ASSERT_TRUE(service()->is_ready());
5942 ASSERT_EQ(3u, loaded_.size()); 5937 ASSERT_EQ(3u, loaded_.size());
5943 5938
5944 const Extension* extension = service()->GetExtensionById(good0, true);
5945 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); 5939 ASSERT_TRUE(service()->IsExtensionEnabled(good0));
5940 ASSERT_TRUE(service()->IsExtensionEnabled(good2));
5946 5941
5947 // Disable extension before first sync data arrives. 5942 // Disable and re-enable good0 before first sync data arrives.
5948 service()->DisableExtension(good0, Extension::DISABLE_USER_ACTION); 5943 service()->DisableExtension(good0, Extension::DISABLE_USER_ACTION);
5949 ASSERT_FALSE(service()->IsExtensionEnabled(good0)); 5944 ASSERT_FALSE(service()->IsExtensionEnabled(good0));
5950
5951 // Enable extension - this is now the most recent state.
5952 service()->EnableExtension(good0); 5945 service()->EnableExtension(good0);
5953 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); 5946 ASSERT_TRUE(service()->IsExtensionEnabled(good0));
5947 // Disable good2 before first sync data arrives (good1 is considered
5948 // non-syncable because it has plugin permission).
5949 service()->DisableExtension(good2, Extension::DISABLE_USER_ACTION);
5950 ASSERT_FALSE(service()->IsExtensionEnabled(good2));
5954 5951
5955 // Now sync data comes in that says to disable good0. This should be 5952 const Extension* extension0 = service()->GetExtensionById(good0, true);
5956 // ignored. 5953 const Extension* extension2 = service()->GetExtensionById(good2, true);
5957 ExtensionSyncData disable_good_crx(*extension, false, 5954 ASSERT_TRUE(extensions::sync_helper::IsSyncable(extension0));
5958 Extension::DISABLE_USER_ACTION, false, 5955 ASSERT_TRUE(extensions::sync_helper::IsSyncable(extension2));
5959 false, ExtensionSyncData::BOOLEAN_UNSET); 5956
5957 // Now sync data comes in that says to disable good0 and enable good2.
5958 ExtensionSyncData disable_good0(*extension0, false,
5959 Extension::DISABLE_USER_ACTION, false, false,
5960 ExtensionSyncData::BOOLEAN_UNSET);
5961 ExtensionSyncData enable_good2(*extension2, true, Extension::DISABLE_NONE,
5962 false, false,
5963 ExtensionSyncData::BOOLEAN_UNSET);
5960 syncer::SyncDataList sync_data; 5964 syncer::SyncDataList sync_data;
5961 sync_data.push_back(disable_good_crx.GetSyncData()); 5965 sync_data.push_back(disable_good0.GetSyncData());
5966 sync_data.push_back(enable_good2.GetSyncData());
5962 extension_sync_service()->MergeDataAndStartSyncing( 5967 extension_sync_service()->MergeDataAndStartSyncing(
5963 syncer::EXTENSIONS, 5968 syncer::EXTENSIONS,
5964 sync_data, 5969 sync_data,
5965 scoped_ptr<syncer::SyncChangeProcessor>( 5970 make_scoped_ptr(new syncer::FakeSyncChangeProcessor),
5966 new syncer::FakeSyncChangeProcessor), 5971 make_scoped_ptr(new syncer::SyncErrorFactoryMock));
5967 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
5968 5972
5969 // The extension was enabled locally before the sync data arrived, so it 5973 // Both sync changes should be ignored, since the local state was changed
5970 // should still be enabled now. 5974 // before sync started, and so the local state is considered more recent.
5971 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); 5975 EXPECT_TRUE(service()->IsExtensionEnabled(good0));
5976 EXPECT_FALSE(service()->IsExtensionEnabled(good2));
5972 } 5977 }
5973 5978
5974 TEST_F(ExtensionServiceTest, GetSyncData) { 5979 TEST_F(ExtensionServiceTest, GetSyncData) {
5975 InitializeEmptyExtensionService(); 5980 InitializeEmptyExtensionService();
5976 InitializeExtensionSyncService();
5977 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 5981 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
5978 const Extension* extension = service()->GetInstalledExtension(good_crx); 5982 const Extension* extension = service()->GetInstalledExtension(good_crx);
5979 ASSERT_TRUE(extension); 5983 ASSERT_TRUE(extension);
5980 5984
5981 extension_sync_service()->MergeDataAndStartSyncing( 5985 extension_sync_service()->MergeDataAndStartSyncing(
5982 syncer::EXTENSIONS, 5986 syncer::EXTENSIONS,
5983 syncer::SyncDataList(), 5987 syncer::SyncDataList(),
5984 scoped_ptr<syncer::SyncChangeProcessor>( 5988 scoped_ptr<syncer::SyncChangeProcessor>(
5985 new syncer::FakeSyncChangeProcessor), 5989 new syncer::FakeSyncChangeProcessor),
5986 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 5990 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
(...skipping 11 matching lines...) Expand all
5998 data->incognito_enabled()); 6002 data->incognito_enabled());
5999 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled()); 6003 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled());
6000 EXPECT_TRUE(data->version().Equals(*extension->version())); 6004 EXPECT_TRUE(data->version().Equals(*extension->version()));
6001 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), 6005 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension),
6002 data->update_url()); 6006 data->update_url());
6003 EXPECT_EQ(extension->name(), data->name()); 6007 EXPECT_EQ(extension->name(), data->name());
6004 } 6008 }
6005 6009
6006 TEST_F(ExtensionServiceTest, GetSyncDataTerminated) { 6010 TEST_F(ExtensionServiceTest, GetSyncDataTerminated) {
6007 InitializeEmptyExtensionService(); 6011 InitializeEmptyExtensionService();
6008 InitializeExtensionSyncService();
6009 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 6012 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
6010 TerminateExtension(good_crx); 6013 TerminateExtension(good_crx);
6011 const Extension* extension = service()->GetInstalledExtension(good_crx); 6014 const Extension* extension = service()->GetInstalledExtension(good_crx);
6012 ASSERT_TRUE(extension); 6015 ASSERT_TRUE(extension);
6013 6016
6014 syncer::FakeSyncChangeProcessor processor; 6017 syncer::FakeSyncChangeProcessor processor;
6015 extension_sync_service()->MergeDataAndStartSyncing( 6018 extension_sync_service()->MergeDataAndStartSyncing(
6016 syncer::EXTENSIONS, 6019 syncer::EXTENSIONS,
6017 syncer::SyncDataList(), 6020 syncer::SyncDataList(),
6018 scoped_ptr<syncer::SyncChangeProcessor>( 6021 scoped_ptr<syncer::SyncChangeProcessor>(
(...skipping 13 matching lines...) Expand all
6032 data->incognito_enabled()); 6035 data->incognito_enabled());
6033 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled()); 6036 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled());
6034 EXPECT_TRUE(data->version().Equals(*extension->version())); 6037 EXPECT_TRUE(data->version().Equals(*extension->version()));
6035 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), 6038 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension),
6036 data->update_url()); 6039 data->update_url());
6037 EXPECT_EQ(extension->name(), data->name()); 6040 EXPECT_EQ(extension->name(), data->name());
6038 } 6041 }
6039 6042
6040 TEST_F(ExtensionServiceTest, GetSyncDataFilter) { 6043 TEST_F(ExtensionServiceTest, GetSyncDataFilter) {
6041 InitializeEmptyExtensionService(); 6044 InitializeEmptyExtensionService();
6042 InitializeExtensionSyncService();
6043 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 6045 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
6044 const Extension* extension = service()->GetInstalledExtension(good_crx); 6046 const Extension* extension = service()->GetInstalledExtension(good_crx);
6045 ASSERT_TRUE(extension); 6047 ASSERT_TRUE(extension);
6046 6048
6047 syncer::FakeSyncChangeProcessor processor; 6049 syncer::FakeSyncChangeProcessor processor;
6048 extension_sync_service()->MergeDataAndStartSyncing( 6050 extension_sync_service()->MergeDataAndStartSyncing(
6049 syncer::APPS, 6051 syncer::APPS,
6050 syncer::SyncDataList(), 6052 syncer::SyncDataList(),
6051 scoped_ptr<syncer::SyncChangeProcessor>( 6053 scoped_ptr<syncer::SyncChangeProcessor>(
6052 new syncer::FakeSyncChangeProcessor), 6054 new syncer::FakeSyncChangeProcessor),
6053 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6055 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6054 6056
6055 syncer::SyncDataList list = 6057 syncer::SyncDataList list =
6056 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); 6058 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS);
6057 ASSERT_EQ(list.size(), 0U); 6059 ASSERT_EQ(list.size(), 0U);
6058 } 6060 }
6059 6061
6060 TEST_F(ExtensionServiceTest, GetSyncExtensionDataUserSettings) { 6062 TEST_F(ExtensionServiceTest, GetSyncExtensionDataUserSettings) {
6061 InitializeEmptyExtensionService(); 6063 InitializeEmptyExtensionService();
6062 InitializeExtensionSyncService();
6063 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 6064 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
6064 const Extension* extension = service()->GetInstalledExtension(good_crx); 6065 const Extension* extension = service()->GetInstalledExtension(good_crx);
6065 ASSERT_TRUE(extension); 6066 ASSERT_TRUE(extension);
6066 6067
6067 syncer::FakeSyncChangeProcessor processor; 6068 syncer::FakeSyncChangeProcessor processor;
6068 extension_sync_service()->MergeDataAndStartSyncing( 6069 extension_sync_service()->MergeDataAndStartSyncing(
6069 syncer::EXTENSIONS, 6070 syncer::EXTENSIONS,
6070 syncer::SyncDataList(), 6071 syncer::SyncDataList(),
6071 scoped_ptr<syncer::SyncChangeProcessor>( 6072 scoped_ptr<syncer::SyncChangeProcessor>(
6072 new syncer::FakeSyncChangeProcessor), 6073 new syncer::FakeSyncChangeProcessor),
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
6123 ExtensionSyncData::CreateFromSyncData(list[0]); 6124 ExtensionSyncData::CreateFromSyncData(list[0]);
6124 ASSERT_TRUE(data.get()); 6125 ASSERT_TRUE(data.get());
6125 EXPECT_TRUE(data->enabled()); 6126 EXPECT_TRUE(data->enabled());
6126 EXPECT_TRUE(data->incognito_enabled()); 6127 EXPECT_TRUE(data->incognito_enabled());
6127 EXPECT_EQ(ExtensionSyncData::BOOLEAN_TRUE, data->all_urls_enabled()); 6128 EXPECT_EQ(ExtensionSyncData::BOOLEAN_TRUE, data->all_urls_enabled());
6128 } 6129 }
6129 } 6130 }
6130 6131
6131 TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) { 6132 TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) {
6132 InitializeEmptyExtensionService(); 6133 InitializeEmptyExtensionService();
6133 InitializeExtensionSyncService();
6134 InstallCRXWithLocation( 6134 InstallCRXWithLocation(
6135 data_dir().AppendASCII("good.crx"), Manifest::EXTERNAL_PREF, INSTALL_NEW); 6135 data_dir().AppendASCII("good.crx"), Manifest::EXTERNAL_PREF, INSTALL_NEW);
6136 const Extension* extension = service()->GetInstalledExtension(good_crx); 6136 const Extension* extension = service()->GetInstalledExtension(good_crx);
6137 ASSERT_TRUE(extension); 6137 ASSERT_TRUE(extension);
6138 6138
6139 syncer::FakeSyncChangeProcessor processor; 6139 syncer::FakeSyncChangeProcessor processor;
6140 extension_sync_service()->MergeDataAndStartSyncing( 6140 extension_sync_service()->MergeDataAndStartSyncing(
6141 syncer::EXTENSIONS, 6141 syncer::EXTENSIONS,
6142 syncer::SyncDataList(), 6142 syncer::SyncDataList(),
6143 scoped_ptr<syncer::SyncChangeProcessor>( 6143 scoped_ptr<syncer::SyncChangeProcessor>(
(...skipping 20 matching lines...) Expand all
6164 syncer::SyncChangeList list(1); 6164 syncer::SyncChangeList list(1);
6165 list[0] = sync_change; 6165 list[0] = sync_change;
6166 6166
6167 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); 6167 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list);
6168 EXPECT_TRUE( 6168 EXPECT_TRUE(
6169 ExtensionPrefs::Get(profile())->IsExternalExtensionUninstalled(good_crx)); 6169 ExtensionPrefs::Get(profile())->IsExternalExtensionUninstalled(good_crx));
6170 } 6170 }
6171 6171
6172 TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettings) { 6172 TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettings) {
6173 InitializeEmptyExtensionService(); 6173 InitializeEmptyExtensionService();
6174 InitializeExtensionSyncService();
6175 const Extension* app = 6174 const Extension* app =
6176 PackAndInstallCRX(data_dir().AppendASCII("app"), INSTALL_NEW); 6175 PackAndInstallCRX(data_dir().AppendASCII("app"), INSTALL_NEW);
6177 ASSERT_TRUE(app); 6176 ASSERT_TRUE(app);
6178 ASSERT_TRUE(app->is_app()); 6177 ASSERT_TRUE(app->is_app());
6179 6178
6180 syncer::FakeSyncChangeProcessor processor; 6179 syncer::FakeSyncChangeProcessor processor;
6181 extension_sync_service()->MergeDataAndStartSyncing( 6180 extension_sync_service()->MergeDataAndStartSyncing(
6182 syncer::APPS, 6181 syncer::APPS,
6183 syncer::SyncDataList(), 6182 syncer::SyncDataList(),
6184 scoped_ptr<syncer::SyncChangeProcessor>( 6183 scoped_ptr<syncer::SyncChangeProcessor>(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
6225 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data->page_ordinal())); 6224 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data->page_ordinal()));
6226 } 6225 }
6227 } 6226 }
6228 6227
6229 // TODO (rdevlin.cronin): The OnExtensionMoved() method has been removed from 6228 // TODO (rdevlin.cronin): The OnExtensionMoved() method has been removed from
6230 // ExtensionService, so this test probably needs a new home. Unfortunately, it 6229 // ExtensionService, so this test probably needs a new home. Unfortunately, it
6231 // relies pretty heavily on things like InitializeExtension[Sync]Service() and 6230 // relies pretty heavily on things like InitializeExtension[Sync]Service() and
6232 // PackAndInstallCRX(). When we clean up a bit more, this should move out. 6231 // PackAndInstallCRX(). When we clean up a bit more, this should move out.
6233 TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettingsOnExtensionMoved) { 6232 TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettingsOnExtensionMoved) {
6234 InitializeEmptyExtensionService(); 6233 InitializeEmptyExtensionService();
6235 InitializeExtensionSyncService();
6236 const size_t kAppCount = 3; 6234 const size_t kAppCount = 3;
6237 const Extension* apps[kAppCount]; 6235 const Extension* apps[kAppCount];
6238 apps[0] = PackAndInstallCRX(data_dir().AppendASCII("app1"), INSTALL_NEW); 6236 apps[0] = PackAndInstallCRX(data_dir().AppendASCII("app1"), INSTALL_NEW);
6239 apps[1] = PackAndInstallCRX(data_dir().AppendASCII("app2"), INSTALL_NEW); 6237 apps[1] = PackAndInstallCRX(data_dir().AppendASCII("app2"), INSTALL_NEW);
6240 apps[2] = PackAndInstallCRX(data_dir().AppendASCII("app4"), INSTALL_NEW); 6238 apps[2] = PackAndInstallCRX(data_dir().AppendASCII("app4"), INSTALL_NEW);
6241 for (size_t i = 0; i < kAppCount; ++i) { 6239 for (size_t i = 0; i < kAppCount; ++i) {
6242 ASSERT_TRUE(apps[i]); 6240 ASSERT_TRUE(apps[i]);
6243 ASSERT_TRUE(apps[i]->is_app()); 6241 ASSERT_TRUE(apps[i]->is_app());
6244 } 6242 }
6245 6243
(...skipping 30 matching lines...) Expand all
6276 } 6274 }
6277 } 6275 }
6278 6276
6279 EXPECT_TRUE(app_launch_ordinals[1].LessThan(app_launch_ordinals[0])); 6277 EXPECT_TRUE(app_launch_ordinals[1].LessThan(app_launch_ordinals[0]));
6280 EXPECT_TRUE(app_launch_ordinals[0].LessThan(app_launch_ordinals[2])); 6278 EXPECT_TRUE(app_launch_ordinals[0].LessThan(app_launch_ordinals[2]));
6281 } 6279 }
6282 } 6280 }
6283 6281
6284 TEST_F(ExtensionServiceTest, GetSyncDataList) { 6282 TEST_F(ExtensionServiceTest, GetSyncDataList) {
6285 InitializeEmptyExtensionService(); 6283 InitializeEmptyExtensionService();
6286 InitializeExtensionSyncService();
6287 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 6284 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
6288 InstallCRX(data_dir().AppendASCII("page_action.crx"), INSTALL_NEW); 6285 InstallCRX(data_dir().AppendASCII("page_action.crx"), INSTALL_NEW);
6289 InstallCRX(data_dir().AppendASCII("theme.crx"), INSTALL_NEW); 6286 InstallCRX(data_dir().AppendASCII("theme.crx"), INSTALL_NEW);
6290 InstallCRX(data_dir().AppendASCII("theme2.crx"), INSTALL_NEW); 6287 InstallCRX(data_dir().AppendASCII("theme2.crx"), INSTALL_NEW);
6291 6288
6292 syncer::FakeSyncChangeProcessor processor; 6289 syncer::FakeSyncChangeProcessor processor;
6293 extension_sync_service()->MergeDataAndStartSyncing( 6290 extension_sync_service()->MergeDataAndStartSyncing(
6294 syncer::APPS, 6291 syncer::APPS,
6295 syncer::SyncDataList(), 6292 syncer::SyncDataList(),
6296 scoped_ptr<syncer::SyncChangeProcessor>( 6293 scoped_ptr<syncer::SyncChangeProcessor>(
6297 new syncer::FakeSyncChangeProcessor), 6294 new syncer::FakeSyncChangeProcessor),
6298 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6295 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6299 extension_sync_service()->MergeDataAndStartSyncing( 6296 extension_sync_service()->MergeDataAndStartSyncing(
6300 syncer::EXTENSIONS, 6297 syncer::EXTENSIONS,
6301 syncer::SyncDataList(), 6298 syncer::SyncDataList(),
6302 scoped_ptr<syncer::SyncChangeProcessor>( 6299 scoped_ptr<syncer::SyncChangeProcessor>(
6303 new syncer::FakeSyncChangeProcessor), 6300 new syncer::FakeSyncChangeProcessor),
6304 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6301 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6305 6302
6306 service()->DisableExtension(page_action, Extension::DISABLE_USER_ACTION); 6303 service()->DisableExtension(page_action, Extension::DISABLE_USER_ACTION);
6307 TerminateExtension(theme2_crx); 6304 TerminateExtension(theme2_crx);
6308 6305
6309 EXPECT_EQ(0u, extension_sync_service()->GetAllSyncData(syncer::APPS).size()); 6306 EXPECT_EQ(0u, extension_sync_service()->GetAllSyncData(syncer::APPS).size());
6310 EXPECT_EQ( 6307 EXPECT_EQ(
6311 2u, extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS).size()); 6308 2u, extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS).size());
6312 } 6309 }
6313 6310
6314 TEST_F(ExtensionServiceTest, ProcessSyncDataUninstall) { 6311 TEST_F(ExtensionServiceTest, ProcessSyncDataUninstall) {
6315 InitializeEmptyExtensionService(); 6312 InitializeEmptyExtensionService();
6316 InitializeExtensionSyncService();
6317 syncer::FakeSyncChangeProcessor processor; 6313 syncer::FakeSyncChangeProcessor processor;
6318 extension_sync_service()->MergeDataAndStartSyncing( 6314 extension_sync_service()->MergeDataAndStartSyncing(
6319 syncer::EXTENSIONS, 6315 syncer::EXTENSIONS,
6320 syncer::SyncDataList(), 6316 syncer::SyncDataList(),
6321 scoped_ptr<syncer::SyncChangeProcessor>( 6317 scoped_ptr<syncer::SyncChangeProcessor>(
6322 new syncer::FakeSyncChangeProcessor), 6318 new syncer::FakeSyncChangeProcessor),
6323 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6319 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6324 6320
6325 sync_pb::EntitySpecifics specifics; 6321 sync_pb::EntitySpecifics specifics;
6326 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); 6322 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension();
(...skipping 20 matching lines...) Expand all
6347 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); 6343 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list);
6348 EXPECT_FALSE(service()->GetExtensionById(good_crx, true)); 6344 EXPECT_FALSE(service()->GetExtensionById(good_crx, true));
6349 6345
6350 // Should again do nothing. 6346 // Should again do nothing.
6351 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); 6347 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list);
6352 EXPECT_FALSE(service()->GetExtensionById(good_crx, true)); 6348 EXPECT_FALSE(service()->GetExtensionById(good_crx, true));
6353 } 6349 }
6354 6350
6355 TEST_F(ExtensionServiceTest, ProcessSyncDataWrongType) { 6351 TEST_F(ExtensionServiceTest, ProcessSyncDataWrongType) {
6356 InitializeEmptyExtensionService(); 6352 InitializeEmptyExtensionService();
6357 InitializeExtensionSyncService();
6358 6353
6359 // Install the extension. 6354 // Install the extension.
6360 base::FilePath extension_path = data_dir().AppendASCII("good.crx"); 6355 base::FilePath extension_path = data_dir().AppendASCII("good.crx");
6361 InstallCRX(extension_path, INSTALL_NEW); 6356 InstallCRX(extension_path, INSTALL_NEW);
6362 EXPECT_TRUE(service()->GetExtensionById(good_crx, true)); 6357 EXPECT_TRUE(service()->GetExtensionById(good_crx, true));
6363 6358
6364 sync_pb::EntitySpecifics specifics; 6359 sync_pb::EntitySpecifics specifics;
6365 sync_pb::AppSpecifics* app_specifics = specifics.mutable_app(); 6360 sync_pb::AppSpecifics* app_specifics = specifics.mutable_app();
6366 sync_pb::ExtensionSpecifics* extension_specifics = 6361 sync_pb::ExtensionSpecifics* extension_specifics =
6367 app_specifics->mutable_extension(); 6362 app_specifics->mutable_extension();
(...skipping 27 matching lines...) Expand all
6395 list[0] = sync_change; 6390 list[0] = sync_change;
6396 6391
6397 // Should again do nothing. 6392 // Should again do nothing.
6398 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); 6393 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list);
6399 EXPECT_TRUE(service()->GetExtensionById(good_crx, false)); 6394 EXPECT_TRUE(service()->GetExtensionById(good_crx, false));
6400 } 6395 }
6401 } 6396 }
6402 6397
6403 TEST_F(ExtensionServiceTest, ProcessSyncDataSettings) { 6398 TEST_F(ExtensionServiceTest, ProcessSyncDataSettings) {
6404 InitializeEmptyExtensionService(); 6399 InitializeEmptyExtensionService();
6405 InitializeExtensionSyncService();
6406 syncer::FakeSyncChangeProcessor processor; 6400 syncer::FakeSyncChangeProcessor processor;
6407 extension_sync_service()->MergeDataAndStartSyncing( 6401 extension_sync_service()->MergeDataAndStartSyncing(
6408 syncer::EXTENSIONS, 6402 syncer::EXTENSIONS,
6409 syncer::SyncDataList(), 6403 syncer::SyncDataList(),
6410 scoped_ptr<syncer::SyncChangeProcessor>( 6404 scoped_ptr<syncer::SyncChangeProcessor>(
6411 new syncer::FakeSyncChangeProcessor), 6405 new syncer::FakeSyncChangeProcessor),
6412 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6406 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6413 6407
6414 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 6408 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
6415 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx)); 6409 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx));
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
6508 good_crx, profile())); 6502 good_crx, profile()));
6509 EXPECT_EQ(kDefaultAllowedScripting, 6503 EXPECT_EQ(kDefaultAllowedScripting,
6510 extensions::util::AllowedScriptingOnAllUrls(good_crx, profile())); 6504 extensions::util::AllowedScriptingOnAllUrls(good_crx, profile()));
6511 } 6505 }
6512 6506
6513 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); 6507 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx));
6514 } 6508 }
6515 6509
6516 TEST_F(ExtensionServiceTest, ProcessSyncDataNewExtension) { 6510 TEST_F(ExtensionServiceTest, ProcessSyncDataNewExtension) {
6517 InitializeEmptyExtensionService(); 6511 InitializeEmptyExtensionService();
6518 InitializeExtensionSyncService();
6519 syncer::FakeSyncChangeProcessor processor; 6512 syncer::FakeSyncChangeProcessor processor;
6520 extension_sync_service()->MergeDataAndStartSyncing( 6513 extension_sync_service()->MergeDataAndStartSyncing(
6521 syncer::EXTENSIONS, 6514 syncer::EXTENSIONS,
6522 syncer::SyncDataList(), 6515 syncer::SyncDataList(),
6523 scoped_ptr<syncer::SyncChangeProcessor>( 6516 scoped_ptr<syncer::SyncChangeProcessor>(
6524 new syncer::FakeSyncChangeProcessor), 6517 new syncer::FakeSyncChangeProcessor),
6525 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6518 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6526 6519
6527 const base::FilePath path = data_dir().AppendASCII("good.crx"); 6520 const base::FilePath path = data_dir().AppendASCII("good.crx");
6528 const ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); 6521 const ExtensionPrefs* prefs = ExtensionPrefs::Get(profile());
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
6589 6582
6590 // Remove the extension again, so we can install it again for the next case. 6583 // Remove the extension again, so we can install it again for the next case.
6591 UninstallExtension(good_crx, false, 6584 UninstallExtension(good_crx, false,
6592 test_case.sync_enabled ? Extension::ENABLED 6585 test_case.sync_enabled ? Extension::ENABLED
6593 : Extension::DISABLED); 6586 : Extension::DISABLED);
6594 } 6587 }
6595 } 6588 }
6596 6589
6597 TEST_F(ExtensionServiceTest, ProcessSyncDataTerminatedExtension) { 6590 TEST_F(ExtensionServiceTest, ProcessSyncDataTerminatedExtension) {
6598 InitializeExtensionServiceWithUpdater(); 6591 InitializeExtensionServiceWithUpdater();
6599 InitializeExtensionSyncService();
6600 syncer::FakeSyncChangeProcessor processor; 6592 syncer::FakeSyncChangeProcessor processor;
6601 extension_sync_service()->MergeDataAndStartSyncing( 6593 extension_sync_service()->MergeDataAndStartSyncing(
6602 syncer::EXTENSIONS, 6594 syncer::EXTENSIONS,
6603 syncer::SyncDataList(), 6595 syncer::SyncDataList(),
6604 scoped_ptr<syncer::SyncChangeProcessor>( 6596 scoped_ptr<syncer::SyncChangeProcessor>(
6605 new syncer::FakeSyncChangeProcessor), 6597 new syncer::FakeSyncChangeProcessor),
6606 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6598 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6607 6599
6608 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 6600 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
6609 TerminateExtension(good_crx); 6601 TerminateExtension(good_crx);
(...skipping 17 matching lines...) Expand all
6627 6619
6628 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); 6620 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list);
6629 EXPECT_FALSE(service()->IsExtensionEnabled(good_crx)); 6621 EXPECT_FALSE(service()->IsExtensionEnabled(good_crx));
6630 EXPECT_TRUE(extensions::util::IsIncognitoEnabled(good_crx, profile())); 6622 EXPECT_TRUE(extensions::util::IsIncognitoEnabled(good_crx, profile()));
6631 6623
6632 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); 6624 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx));
6633 } 6625 }
6634 6626
6635 TEST_F(ExtensionServiceTest, ProcessSyncDataVersionCheck) { 6627 TEST_F(ExtensionServiceTest, ProcessSyncDataVersionCheck) {
6636 InitializeExtensionServiceWithUpdater(); 6628 InitializeExtensionServiceWithUpdater();
6637 InitializeExtensionSyncService();
6638 syncer::FakeSyncChangeProcessor processor; 6629 syncer::FakeSyncChangeProcessor processor;
6639 extension_sync_service()->MergeDataAndStartSyncing( 6630 extension_sync_service()->MergeDataAndStartSyncing(
6640 syncer::EXTENSIONS, 6631 syncer::EXTENSIONS,
6641 syncer::SyncDataList(), 6632 syncer::SyncDataList(),
6642 scoped_ptr<syncer::SyncChangeProcessor>( 6633 scoped_ptr<syncer::SyncChangeProcessor>(
6643 new syncer::FakeSyncChangeProcessor), 6634 new syncer::FakeSyncChangeProcessor),
6644 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6635 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6645 6636
6646 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 6637 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
6647 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx)); 6638 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
6697 6688
6698 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); 6689 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list);
6699 EXPECT_TRUE(service()->updater()->WillCheckSoon()); 6690 EXPECT_TRUE(service()->updater()->WillCheckSoon());
6700 } 6691 }
6701 6692
6702 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); 6693 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx));
6703 } 6694 }
6704 6695
6705 TEST_F(ExtensionServiceTest, ProcessSyncDataNotInstalled) { 6696 TEST_F(ExtensionServiceTest, ProcessSyncDataNotInstalled) {
6706 InitializeExtensionServiceWithUpdater(); 6697 InitializeExtensionServiceWithUpdater();
6707 InitializeExtensionSyncService();
6708 syncer::FakeSyncChangeProcessor processor; 6698 syncer::FakeSyncChangeProcessor processor;
6709 extension_sync_service()->MergeDataAndStartSyncing( 6699 extension_sync_service()->MergeDataAndStartSyncing(
6710 syncer::EXTENSIONS, 6700 syncer::EXTENSIONS,
6711 syncer::SyncDataList(), 6701 syncer::SyncDataList(),
6712 scoped_ptr<syncer::SyncChangeProcessor>( 6702 scoped_ptr<syncer::SyncChangeProcessor>(
6713 new syncer::FakeSyncChangeProcessor), 6703 new syncer::FakeSyncChangeProcessor),
6714 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6704 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6715 6705
6716 sync_pb::EntitySpecifics specifics; 6706 sync_pb::EntitySpecifics specifics;
6717 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); 6707 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension();
(...skipping 21 matching lines...) Expand all
6739 EXPECT_TRUE( 6729 EXPECT_TRUE(
6740 (info = service()->pending_extension_manager()->GetById(good_crx))); 6730 (info = service()->pending_extension_manager()->GetById(good_crx)));
6741 EXPECT_EQ(ext_specifics->update_url(), info->update_url().spec()); 6731 EXPECT_EQ(ext_specifics->update_url(), info->update_url().spec());
6742 EXPECT_TRUE(info->is_from_sync()); 6732 EXPECT_TRUE(info->is_from_sync());
6743 EXPECT_EQ(Manifest::INTERNAL, info->install_source()); 6733 EXPECT_EQ(Manifest::INTERNAL, info->install_source());
6744 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|. 6734 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|.
6745 } 6735 }
6746 6736
6747 TEST_F(ExtensionServiceTest, ProcessSyncDataEnableDisable) { 6737 TEST_F(ExtensionServiceTest, ProcessSyncDataEnableDisable) {
6748 InitializeEmptyExtensionService(); 6738 InitializeEmptyExtensionService();
6749 InitializeExtensionSyncService();
6750 extension_sync_service()->MergeDataAndStartSyncing( 6739 extension_sync_service()->MergeDataAndStartSyncing(
6751 syncer::EXTENSIONS, 6740 syncer::EXTENSIONS,
6752 syncer::SyncDataList(), 6741 syncer::SyncDataList(),
6753 scoped_ptr<syncer::SyncChangeProcessor>( 6742 scoped_ptr<syncer::SyncChangeProcessor>(
6754 new syncer::FakeSyncChangeProcessor), 6743 new syncer::FakeSyncChangeProcessor),
6755 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6744 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6756 6745
6757 const ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); 6746 const ExtensionPrefs* prefs = ExtensionPrefs::Get(profile());
6758 6747
6759 struct TestCase { 6748 struct TestCase {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
6837 } 6826 }
6838 6827
6839 TEST_F(ExtensionServiceTest, ProcessSyncDataPermissionApproval) { 6828 TEST_F(ExtensionServiceTest, ProcessSyncDataPermissionApproval) {
6840 // This is the update URL specified in the test extension. Setting it here is 6829 // This is the update URL specified in the test extension. Setting it here is
6841 // necessary to make it considered syncable. 6830 // necessary to make it considered syncable.
6842 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 6831 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
6843 switches::kAppsGalleryUpdateURL, 6832 switches::kAppsGalleryUpdateURL,
6844 "http://localhost/autoupdate/updates.xml"); 6833 "http://localhost/autoupdate/updates.xml");
6845 6834
6846 InitializeEmptyExtensionService(); 6835 InitializeEmptyExtensionService();
6847 InitializeExtensionSyncService();
6848 extension_sync_service()->MergeDataAndStartSyncing( 6836 extension_sync_service()->MergeDataAndStartSyncing(
6849 syncer::EXTENSIONS, 6837 syncer::EXTENSIONS,
6850 syncer::SyncDataList(), 6838 syncer::SyncDataList(),
6851 scoped_ptr<syncer::SyncChangeProcessor>( 6839 scoped_ptr<syncer::SyncChangeProcessor>(
6852 new syncer::FakeSyncChangeProcessor), 6840 new syncer::FakeSyncChangeProcessor),
6853 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6841 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6854 6842
6855 const base::FilePath base_path = 6843 const base::FilePath base_path =
6856 data_dir().AppendASCII("permissions_increase"); 6844 data_dir().AppendASCII("permissions_increase");
6857 const base::FilePath pem_path = base_path.AppendASCII("permissions.pem"); 6845 const base::FilePath pem_path = base_path.AppendASCII("permissions.pem");
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
7125 EXPECT_FALSE(registry()->enabled_extensions().Contains(id)); 7113 EXPECT_FALSE(registry()->enabled_extensions().Contains(id));
7126 extension = registry()->disabled_extensions().GetByID(id); 7114 extension = registry()->disabled_extensions().GetByID(id);
7127 ASSERT_TRUE(extension); 7115 ASSERT_TRUE(extension);
7128 // The version should have changed. 7116 // The version should have changed.
7129 EXPECT_NE(extension->VersionString(), old_version); 7117 EXPECT_NE(extension->VersionString(), old_version);
7130 } 7118 }
7131 7119
7132 TEST_F(ExtensionServiceTest, 7120 TEST_F(ExtensionServiceTest,
7133 SupervisedUser_SyncUninstallByCustodianSkipsPolicy) { 7121 SupervisedUser_SyncUninstallByCustodianSkipsPolicy) {
7134 InitializeEmptyExtensionService(); 7122 InitializeEmptyExtensionService();
7135 InitializeExtensionSyncService();
7136 extension_sync_service()->MergeDataAndStartSyncing( 7123 extension_sync_service()->MergeDataAndStartSyncing(
7137 syncer::EXTENSIONS, 7124 syncer::EXTENSIONS,
7138 syncer::SyncDataList(), 7125 syncer::SyncDataList(),
7139 scoped_ptr<syncer::SyncChangeProcessor>( 7126 scoped_ptr<syncer::SyncChangeProcessor>(
7140 new syncer::FakeSyncChangeProcessor), 7127 new syncer::FakeSyncChangeProcessor),
7141 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 7128 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
7142 7129
7143 // Install two extensions. 7130 // Install two extensions.
7144 base::FilePath path1 = data_dir().AppendASCII("good.crx"); 7131 base::FilePath path1 = data_dir().AppendASCII("good.crx");
7145 base::FilePath path2 = data_dir().AppendASCII("good2048.crx"); 7132 base::FilePath path2 = data_dir().AppendASCII("good2048.crx");
(...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after
8102 8089
8103 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, 8090 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED,
8104 content::Source<Profile>(profile()), 8091 content::Source<Profile>(profile()),
8105 content::NotificationService::NoDetails()); 8092 content::NotificationService::NoDetails());
8106 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); 8093 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_);
8107 EXPECT_EQ(0u, registry()->enabled_extensions().size()); 8094 EXPECT_EQ(0u, registry()->enabled_extensions().size());
8108 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 8095 EXPECT_EQ(0u, registry()->disabled_extensions().size());
8109 EXPECT_EQ(0u, registry()->terminated_extensions().size()); 8096 EXPECT_EQ(0u, registry()->terminated_extensions().size());
8110 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); 8097 EXPECT_EQ(0u, registry()->blacklisted_extensions().size());
8111 } 8098 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698