Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |