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

Side by Side Diff: chrome/browser/extensions/extension_service_unittest.cc

Issue 996213005: Don't crash when trying to create an ExtensionSyncData from invalid SyncData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 5 years, 9 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 using base::ListValue; 154 using base::ListValue;
155 using base::Value; 155 using base::Value;
156 using content::BrowserContext; 156 using content::BrowserContext;
157 using content::BrowserThread; 157 using content::BrowserThread;
158 using content::DOMStorageContext; 158 using content::DOMStorageContext;
159 using content::IndexedDBContext; 159 using content::IndexedDBContext;
160 using content::PluginService; 160 using content::PluginService;
161 using extensions::APIPermission; 161 using extensions::APIPermission;
162 using extensions::APIPermissionSet; 162 using extensions::APIPermissionSet;
163 using extensions::AppSorting; 163 using extensions::AppSorting;
164 using extensions::AppSyncData;
164 using extensions::Blacklist; 165 using extensions::Blacklist;
165 using extensions::CrxInstaller; 166 using extensions::CrxInstaller;
166 using extensions::Extension; 167 using extensions::Extension;
167 using extensions::ExtensionCreator; 168 using extensions::ExtensionCreator;
168 using extensions::ExtensionPrefs; 169 using extensions::ExtensionPrefs;
169 using extensions::ExtensionRegistry; 170 using extensions::ExtensionRegistry;
170 using extensions::ExtensionResource; 171 using extensions::ExtensionResource;
171 using extensions::ExtensionSyncData; 172 using extensions::ExtensionSyncData;
172 using extensions::ExtensionSystem; 173 using extensions::ExtensionSystem;
173 using extensions::FakeSafeBrowsingDatabaseManager; 174 using extensions::FakeSafeBrowsingDatabaseManager;
(...skipping 5691 matching lines...) Expand 10 before | Expand all | Expand 10 after
5865 5866
5866 service()->Init(); 5867 service()->Init();
5867 ASSERT_TRUE(service()->is_ready()); 5868 ASSERT_TRUE(service()->is_ready());
5868 5869
5869 ASSERT_EQ(3u, loaded_.size()); 5870 ASSERT_EQ(3u, loaded_.size());
5870 5871
5871 // We start enabled. 5872 // We start enabled.
5872 const Extension* extension = service()->GetExtensionById(good0, true); 5873 const Extension* extension = service()->GetExtensionById(good0, true);
5873 ASSERT_TRUE(extension); 5874 ASSERT_TRUE(extension);
5874 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); 5875 ASSERT_TRUE(service()->IsExtensionEnabled(good0));
5875 extensions::ExtensionSyncData disable_good_crx( 5876 ExtensionSyncData disable_good_crx(*extension, false, false, false,
5876 *extension, false, false, false, ExtensionSyncData::BOOLEAN_UNSET); 5877 ExtensionSyncData::BOOLEAN_UNSET);
5877 5878
5878 // Then sync data arrives telling us to disable |good0|. 5879 // Then sync data arrives telling us to disable |good0|.
5879 syncer::SyncDataList sync_data; 5880 syncer::SyncDataList sync_data;
5880 sync_data.push_back(disable_good_crx.GetSyncData()); 5881 sync_data.push_back(disable_good_crx.GetSyncData());
5881 extension_sync_service()->MergeDataAndStartSyncing( 5882 extension_sync_service()->MergeDataAndStartSyncing(
5882 syncer::EXTENSIONS, 5883 syncer::EXTENSIONS,
5883 sync_data, 5884 sync_data,
5884 scoped_ptr<syncer::SyncChangeProcessor>( 5885 scoped_ptr<syncer::SyncChangeProcessor>(
5885 new syncer::FakeSyncChangeProcessor), 5886 new syncer::FakeSyncChangeProcessor),
5886 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 5887 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
(...skipping 25 matching lines...) Expand all
5912 // Disable extension before first sync data arrives. 5913 // Disable extension before first sync data arrives.
5913 service()->DisableExtension(good0, Extension::DISABLE_USER_ACTION); 5914 service()->DisableExtension(good0, Extension::DISABLE_USER_ACTION);
5914 ASSERT_FALSE(service()->IsExtensionEnabled(good0)); 5915 ASSERT_FALSE(service()->IsExtensionEnabled(good0));
5915 5916
5916 // Enable extension - this is now the most recent state. 5917 // Enable extension - this is now the most recent state.
5917 service()->EnableExtension(good0); 5918 service()->EnableExtension(good0);
5918 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); 5919 ASSERT_TRUE(service()->IsExtensionEnabled(good0));
5919 5920
5920 // Now sync data comes in that says to disable good0. This should be 5921 // Now sync data comes in that says to disable good0. This should be
5921 // ignored. 5922 // ignored.
5922 extensions::ExtensionSyncData disable_good_crx( 5923 ExtensionSyncData disable_good_crx(*extension, false, false, false,
5923 *extension, false, false, false, ExtensionSyncData::BOOLEAN_FALSE); 5924 ExtensionSyncData::BOOLEAN_FALSE);
5924 syncer::SyncDataList sync_data; 5925 syncer::SyncDataList sync_data;
5925 sync_data.push_back(disable_good_crx.GetSyncData()); 5926 sync_data.push_back(disable_good_crx.GetSyncData());
5926 extension_sync_service()->MergeDataAndStartSyncing( 5927 extension_sync_service()->MergeDataAndStartSyncing(
5927 syncer::EXTENSIONS, 5928 syncer::EXTENSIONS,
5928 sync_data, 5929 sync_data,
5929 scoped_ptr<syncer::SyncChangeProcessor>( 5930 scoped_ptr<syncer::SyncChangeProcessor>(
5930 new syncer::FakeSyncChangeProcessor), 5931 new syncer::FakeSyncChangeProcessor),
5931 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 5932 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
5932 5933
5933 // The extension was enabled locally before the sync data arrived, so it 5934 // The extension was enabled locally before the sync data arrived, so it
(...skipping 11 matching lines...) Expand all
5945 extension_sync_service()->MergeDataAndStartSyncing( 5946 extension_sync_service()->MergeDataAndStartSyncing(
5946 syncer::EXTENSIONS, 5947 syncer::EXTENSIONS,
5947 syncer::SyncDataList(), 5948 syncer::SyncDataList(),
5948 scoped_ptr<syncer::SyncChangeProcessor>( 5949 scoped_ptr<syncer::SyncChangeProcessor>(
5949 new syncer::FakeSyncChangeProcessor), 5950 new syncer::FakeSyncChangeProcessor),
5950 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 5951 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
5951 5952
5952 syncer::SyncDataList list = 5953 syncer::SyncDataList list =
5953 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); 5954 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS);
5954 ASSERT_EQ(list.size(), 1U); 5955 ASSERT_EQ(list.size(), 1U);
5955 extensions::ExtensionSyncData data(list[0]); 5956 scoped_ptr<ExtensionSyncData> data =
5956 EXPECT_EQ(extension->id(), data.id()); 5957 ExtensionSyncData::CreateFromSyncData(list[0]);
5957 EXPECT_FALSE(data.uninstalled()); 5958 ASSERT_TRUE(data.get());
5958 EXPECT_EQ(service()->IsExtensionEnabled(good_crx), data.enabled()); 5959 EXPECT_EQ(extension->id(), data->id());
5960 EXPECT_FALSE(data->uninstalled());
5961 EXPECT_EQ(service()->IsExtensionEnabled(good_crx), data->enabled());
5959 EXPECT_EQ(extensions::util::IsIncognitoEnabled(good_crx, profile()), 5962 EXPECT_EQ(extensions::util::IsIncognitoEnabled(good_crx, profile()),
5960 data.incognito_enabled()); 5963 data->incognito_enabled());
5961 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data.all_urls_enabled()); 5964 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled());
5962 EXPECT_TRUE(data.version().Equals(*extension->version())); 5965 EXPECT_TRUE(data->version().Equals(*extension->version()));
5963 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), 5966 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension),
5964 data.update_url()); 5967 data->update_url());
5965 EXPECT_EQ(extension->name(), data.name()); 5968 EXPECT_EQ(extension->name(), data->name());
5966 } 5969 }
5967 5970
5968 TEST_F(ExtensionServiceTest, GetSyncDataTerminated) { 5971 TEST_F(ExtensionServiceTest, GetSyncDataTerminated) {
5969 InitializeEmptyExtensionService(); 5972 InitializeEmptyExtensionService();
5970 InitializeExtensionSyncService(); 5973 InitializeExtensionSyncService();
5971 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 5974 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
5972 TerminateExtension(good_crx); 5975 TerminateExtension(good_crx);
5973 const Extension* extension = service()->GetInstalledExtension(good_crx); 5976 const Extension* extension = service()->GetInstalledExtension(good_crx);
5974 ASSERT_TRUE(extension); 5977 ASSERT_TRUE(extension);
5975 5978
5976 syncer::FakeSyncChangeProcessor processor; 5979 syncer::FakeSyncChangeProcessor processor;
5977 extension_sync_service()->MergeDataAndStartSyncing( 5980 extension_sync_service()->MergeDataAndStartSyncing(
5978 syncer::EXTENSIONS, 5981 syncer::EXTENSIONS,
5979 syncer::SyncDataList(), 5982 syncer::SyncDataList(),
5980 scoped_ptr<syncer::SyncChangeProcessor>( 5983 scoped_ptr<syncer::SyncChangeProcessor>(
5981 new syncer::FakeSyncChangeProcessor), 5984 new syncer::FakeSyncChangeProcessor),
5982 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 5985 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
5983 5986
5984 syncer::SyncDataList list = 5987 syncer::SyncDataList list =
5985 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); 5988 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS);
5986 ASSERT_EQ(list.size(), 1U); 5989 ASSERT_EQ(list.size(), 1U);
5987 extensions::ExtensionSyncData data(list[0]); 5990 scoped_ptr<ExtensionSyncData> data =
5988 EXPECT_EQ(extension->id(), data.id()); 5991 ExtensionSyncData::CreateFromSyncData(list[0]);
5989 EXPECT_FALSE(data.uninstalled()); 5992 ASSERT_TRUE(data.get());
5990 EXPECT_EQ(service()->IsExtensionEnabled(good_crx), data.enabled()); 5993 EXPECT_EQ(extension->id(), data->id());
5994 EXPECT_FALSE(data->uninstalled());
5995 EXPECT_EQ(service()->IsExtensionEnabled(good_crx), data->enabled());
5991 EXPECT_EQ(extensions::util::IsIncognitoEnabled(good_crx, profile()), 5996 EXPECT_EQ(extensions::util::IsIncognitoEnabled(good_crx, profile()),
5992 data.incognito_enabled()); 5997 data->incognito_enabled());
5993 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data.all_urls_enabled()); 5998 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled());
5994 EXPECT_TRUE(data.version().Equals(*extension->version())); 5999 EXPECT_TRUE(data->version().Equals(*extension->version()));
5995 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), 6000 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension),
5996 data.update_url()); 6001 data->update_url());
5997 EXPECT_EQ(extension->name(), data.name()); 6002 EXPECT_EQ(extension->name(), data->name());
5998 } 6003 }
5999 6004
6000 TEST_F(ExtensionServiceTest, GetSyncDataFilter) { 6005 TEST_F(ExtensionServiceTest, GetSyncDataFilter) {
6001 InitializeEmptyExtensionService(); 6006 InitializeEmptyExtensionService();
6002 InitializeExtensionSyncService(); 6007 InitializeExtensionSyncService();
6003 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); 6008 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW);
6004 const Extension* extension = service()->GetInstalledExtension(good_crx); 6009 const Extension* extension = service()->GetInstalledExtension(good_crx);
6005 ASSERT_TRUE(extension); 6010 ASSERT_TRUE(extension);
6006 6011
6007 syncer::FakeSyncChangeProcessor processor; 6012 syncer::FakeSyncChangeProcessor processor;
(...skipping 21 matching lines...) Expand all
6029 syncer::EXTENSIONS, 6034 syncer::EXTENSIONS,
6030 syncer::SyncDataList(), 6035 syncer::SyncDataList(),
6031 scoped_ptr<syncer::SyncChangeProcessor>( 6036 scoped_ptr<syncer::SyncChangeProcessor>(
6032 new syncer::FakeSyncChangeProcessor), 6037 new syncer::FakeSyncChangeProcessor),
6033 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6038 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6034 6039
6035 { 6040 {
6036 syncer::SyncDataList list = 6041 syncer::SyncDataList list =
6037 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); 6042 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS);
6038 ASSERT_EQ(list.size(), 1U); 6043 ASSERT_EQ(list.size(), 1U);
6039 extensions::ExtensionSyncData data(list[0]); 6044 scoped_ptr<ExtensionSyncData> data =
6040 EXPECT_TRUE(data.enabled()); 6045 ExtensionSyncData::CreateFromSyncData(list[0]);
6041 EXPECT_FALSE(data.incognito_enabled()); 6046 ASSERT_TRUE(data.get());
6042 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data.all_urls_enabled()); 6047 EXPECT_TRUE(data->enabled());
6048 EXPECT_FALSE(data->incognito_enabled());
6049 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled());
6043 } 6050 }
6044 6051
6045 service()->DisableExtension(good_crx, Extension::DISABLE_USER_ACTION); 6052 service()->DisableExtension(good_crx, Extension::DISABLE_USER_ACTION);
6046 { 6053 {
6047 syncer::SyncDataList list = 6054 syncer::SyncDataList list =
6048 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); 6055 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS);
6049 ASSERT_EQ(list.size(), 1U); 6056 ASSERT_EQ(list.size(), 1U);
6050 extensions::ExtensionSyncData data(list[0]); 6057 scoped_ptr<ExtensionSyncData> data =
6051 EXPECT_FALSE(data.enabled()); 6058 ExtensionSyncData::CreateFromSyncData(list[0]);
6052 EXPECT_FALSE(data.incognito_enabled()); 6059 ASSERT_TRUE(data.get());
6053 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data.all_urls_enabled()); 6060 EXPECT_FALSE(data->enabled());
6061 EXPECT_FALSE(data->incognito_enabled());
6062 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled());
6054 } 6063 }
6055 6064
6056 extensions::util::SetIsIncognitoEnabled(good_crx, profile(), true); 6065 extensions::util::SetIsIncognitoEnabled(good_crx, profile(), true);
6057 extensions::util::SetAllowedScriptingOnAllUrls( 6066 extensions::util::SetAllowedScriptingOnAllUrls(
6058 good_crx, profile(), false); 6067 good_crx, profile(), false);
6059 { 6068 {
6060 syncer::SyncDataList list = 6069 syncer::SyncDataList list =
6061 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); 6070 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS);
6062 ASSERT_EQ(list.size(), 1U); 6071 ASSERT_EQ(list.size(), 1U);
6063 extensions::ExtensionSyncData data(list[0]); 6072 scoped_ptr<ExtensionSyncData> data =
6064 EXPECT_FALSE(data.enabled()); 6073 ExtensionSyncData::CreateFromSyncData(list[0]);
6065 EXPECT_TRUE(data.incognito_enabled()); 6074 ASSERT_TRUE(data.get());
6066 EXPECT_EQ(ExtensionSyncData::BOOLEAN_FALSE, data.all_urls_enabled()); 6075 EXPECT_FALSE(data->enabled());
6076 EXPECT_TRUE(data->incognito_enabled());
6077 EXPECT_EQ(ExtensionSyncData::BOOLEAN_FALSE, data->all_urls_enabled());
6067 } 6078 }
6068 6079
6069 service()->EnableExtension(good_crx); 6080 service()->EnableExtension(good_crx);
6070 extensions::util::SetAllowedScriptingOnAllUrls( 6081 extensions::util::SetAllowedScriptingOnAllUrls(
6071 good_crx, profile(), true); 6082 good_crx, profile(), true);
6072 { 6083 {
6073 syncer::SyncDataList list = 6084 syncer::SyncDataList list =
6074 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); 6085 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS);
6075 ASSERT_EQ(list.size(), 1U); 6086 ASSERT_EQ(list.size(), 1U);
6076 extensions::ExtensionSyncData data(list[0]); 6087 scoped_ptr<ExtensionSyncData> data =
6077 EXPECT_TRUE(data.enabled()); 6088 ExtensionSyncData::CreateFromSyncData(list[0]);
6078 EXPECT_TRUE(data.incognito_enabled()); 6089 ASSERT_TRUE(data.get());
6079 EXPECT_EQ(ExtensionSyncData::BOOLEAN_TRUE, data.all_urls_enabled()); 6090 EXPECT_TRUE(data->enabled());
6091 EXPECT_TRUE(data->incognito_enabled());
6092 EXPECT_EQ(ExtensionSyncData::BOOLEAN_TRUE, data->all_urls_enabled());
6080 } 6093 }
6081 } 6094 }
6082 6095
6083 TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) { 6096 TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) {
6084 InitializeEmptyExtensionService(); 6097 InitializeEmptyExtensionService();
6085 InitializeExtensionSyncService(); 6098 InitializeExtensionSyncService();
6086 InstallCRXWithLocation( 6099 InstallCRXWithLocation(
6087 data_dir().AppendASCII("good.crx"), Manifest::EXTERNAL_PREF, INSTALL_NEW); 6100 data_dir().AppendASCII("good.crx"), Manifest::EXTERNAL_PREF, INSTALL_NEW);
6088 const Extension* extension = service()->GetInstalledExtension(good_crx); 6101 const Extension* extension = service()->GetInstalledExtension(good_crx);
6089 ASSERT_TRUE(extension); 6102 ASSERT_TRUE(extension);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
6137 new syncer::FakeSyncChangeProcessor), 6150 new syncer::FakeSyncChangeProcessor),
6138 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6151 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6139 6152
6140 syncer::StringOrdinal initial_ordinal = 6153 syncer::StringOrdinal initial_ordinal =
6141 syncer::StringOrdinal::CreateInitialOrdinal(); 6154 syncer::StringOrdinal::CreateInitialOrdinal();
6142 { 6155 {
6143 syncer::SyncDataList list = 6156 syncer::SyncDataList list =
6144 extension_sync_service()->GetAllSyncData(syncer::APPS); 6157 extension_sync_service()->GetAllSyncData(syncer::APPS);
6145 ASSERT_EQ(list.size(), 1U); 6158 ASSERT_EQ(list.size(), 1U);
6146 6159
6147 extensions::AppSyncData app_sync_data(list[0]); 6160 scoped_ptr<AppSyncData> app_sync_data =
6148 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data.app_launch_ordinal())); 6161 AppSyncData::CreateFromSyncData(list[0]);
6149 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data.page_ordinal())); 6162 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data->app_launch_ordinal()));
6163 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data->page_ordinal()));
6150 } 6164 }
6151 6165
6152 AppSorting* sorting = ExtensionPrefs::Get(profile())->app_sorting(); 6166 AppSorting* sorting = ExtensionPrefs::Get(profile())->app_sorting();
6153 sorting->SetAppLaunchOrdinal(app->id(), initial_ordinal.CreateAfter()); 6167 sorting->SetAppLaunchOrdinal(app->id(), initial_ordinal.CreateAfter());
6154 { 6168 {
6155 syncer::SyncDataList list = 6169 syncer::SyncDataList list =
6156 extension_sync_service()->GetAllSyncData(syncer::APPS); 6170 extension_sync_service()->GetAllSyncData(syncer::APPS);
6157 ASSERT_EQ(list.size(), 1U); 6171 ASSERT_EQ(list.size(), 1U);
6158 6172
6159 extensions::AppSyncData app_sync_data(list[0]); 6173 scoped_ptr<AppSyncData> app_sync_data =
6160 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.app_launch_ordinal())); 6174 AppSyncData::CreateFromSyncData(list[0]);
6161 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data.page_ordinal())); 6175 ASSERT_TRUE(app_sync_data.get());
6176 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data->app_launch_ordinal()));
6177 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data->page_ordinal()));
6162 } 6178 }
6163 6179
6164 sorting->SetPageOrdinal(app->id(), initial_ordinal.CreateAfter()); 6180 sorting->SetPageOrdinal(app->id(), initial_ordinal.CreateAfter());
6165 { 6181 {
6166 syncer::SyncDataList list = 6182 syncer::SyncDataList list =
6167 extension_sync_service()->GetAllSyncData(syncer::APPS); 6183 extension_sync_service()->GetAllSyncData(syncer::APPS);
6168 ASSERT_EQ(list.size(), 1U); 6184 ASSERT_EQ(list.size(), 1U);
6169 6185
6170 extensions::AppSyncData app_sync_data(list[0]); 6186 scoped_ptr<AppSyncData> app_sync_data =
6171 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.app_launch_ordinal())); 6187 AppSyncData::CreateFromSyncData(list[0]);
6172 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.page_ordinal())); 6188 ASSERT_TRUE(app_sync_data.get());
6189 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data->app_launch_ordinal()));
6190 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data->page_ordinal()));
6173 } 6191 }
6174 } 6192 }
6175 6193
6176 // TODO (rdevlin.cronin): The OnExtensionMoved() method has been removed from 6194 // TODO (rdevlin.cronin): The OnExtensionMoved() method has been removed from
6177 // ExtensionService, so this test probably needs a new home. Unfortunately, it 6195 // ExtensionService, so this test probably needs a new home. Unfortunately, it
6178 // relies pretty heavily on things like InitializeExtension[Sync]Service() and 6196 // relies pretty heavily on things like InitializeExtension[Sync]Service() and
6179 // PackAndInstallCRX(). When we clean up a bit more, this should move out. 6197 // PackAndInstallCRX(). When we clean up a bit more, this should move out.
6180 TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettingsOnExtensionMoved) { 6198 TEST_F(ExtensionServiceTest, GetSyncAppDataUserSettingsOnExtensionMoved) {
6181 InitializeEmptyExtensionService(); 6199 InitializeEmptyExtensionService();
6182 InitializeExtensionSyncService(); 6200 InitializeExtensionSyncService();
(...skipping 16 matching lines...) Expand all
6199 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); 6217 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
6200 6218
6201 ExtensionPrefs::Get(service()->GetBrowserContext()) 6219 ExtensionPrefs::Get(service()->GetBrowserContext())
6202 ->app_sorting() 6220 ->app_sorting()
6203 ->OnExtensionMoved(apps[0]->id(), apps[1]->id(), apps[2]->id()); 6221 ->OnExtensionMoved(apps[0]->id(), apps[1]->id(), apps[2]->id());
6204 { 6222 {
6205 syncer::SyncDataList list = 6223 syncer::SyncDataList list =
6206 extension_sync_service()->GetAllSyncData(syncer::APPS); 6224 extension_sync_service()->GetAllSyncData(syncer::APPS);
6207 ASSERT_EQ(list.size(), 3U); 6225 ASSERT_EQ(list.size(), 3U);
6208 6226
6209 extensions::AppSyncData data[kAppCount]; 6227 scoped_ptr<AppSyncData> data[kAppCount];
6210 for (size_t i = 0; i < kAppCount; ++i) { 6228 for (size_t i = 0; i < kAppCount; ++i) {
6211 data[i] = extensions::AppSyncData(list[i]); 6229 data[i] = AppSyncData::CreateFromSyncData(list[i]);
6230 ASSERT_TRUE(data[i].get());
6212 } 6231 }
6213 6232
6214 // The sync data is not always in the same order our apps were installed in, 6233 // The sync data is not always in the same order our apps were installed in,
6215 // so we do that sorting here so we can make sure the values are changed as 6234 // so we do that sorting here so we can make sure the values are changed as
6216 // expected. 6235 // expected.
6217 syncer::StringOrdinal app_launch_ordinals[kAppCount]; 6236 syncer::StringOrdinal app_launch_ordinals[kAppCount];
6218 for (size_t i = 0; i < kAppCount; ++i) { 6237 for (size_t i = 0; i < kAppCount; ++i) {
6219 for (size_t j = 0; j < kAppCount; ++j) { 6238 for (size_t j = 0; j < kAppCount; ++j) {
6220 if (apps[i]->id() == data[j].id()) 6239 if (apps[i]->id() == data[j]->id())
6221 app_launch_ordinals[i] = data[j].app_launch_ordinal(); 6240 app_launch_ordinals[i] = data[j]->app_launch_ordinal();
6222 } 6241 }
6223 } 6242 }
6224 6243
6225 EXPECT_TRUE(app_launch_ordinals[1].LessThan(app_launch_ordinals[0])); 6244 EXPECT_TRUE(app_launch_ordinals[1].LessThan(app_launch_ordinals[0]));
6226 EXPECT_TRUE(app_launch_ordinals[0].LessThan(app_launch_ordinals[2])); 6245 EXPECT_TRUE(app_launch_ordinals[0].LessThan(app_launch_ordinals[2]));
6227 } 6246 }
6228 } 6247 }
6229 6248
6230 TEST_F(ExtensionServiceTest, GetSyncDataList) { 6249 TEST_F(ExtensionServiceTest, GetSyncDataList) {
6231 InitializeEmptyExtensionService(); 6250 InitializeEmptyExtensionService();
(...skipping 1471 matching lines...) Expand 10 before | Expand all | Expand 10 after
7703 7722
7704 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, 7723 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED,
7705 content::Source<Profile>(profile()), 7724 content::Source<Profile>(profile()),
7706 content::NotificationService::NoDetails()); 7725 content::NotificationService::NoDetails());
7707 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); 7726 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_);
7708 EXPECT_EQ(0u, registry()->enabled_extensions().size()); 7727 EXPECT_EQ(0u, registry()->enabled_extensions().size());
7709 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 7728 EXPECT_EQ(0u, registry()->disabled_extensions().size());
7710 EXPECT_EQ(0u, registry()->terminated_extensions().size()); 7729 EXPECT_EQ(0u, registry()->terminated_extensions().size());
7711 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); 7730 EXPECT_EQ(0u, registry()->blacklisted_extensions().size());
7712 } 7731 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698