OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 class TopSitesImplTest : public HistoryUnitTestBase { | 142 class TopSitesImplTest : public HistoryUnitTestBase { |
143 public: | 143 public: |
144 TopSitesImplTest() | 144 TopSitesImplTest() |
145 : ui_thread_(BrowserThread::UI, &message_loop_), | 145 : ui_thread_(BrowserThread::UI, &message_loop_), |
146 db_thread_(BrowserThread::DB, &message_loop_) { | 146 db_thread_(BrowserThread::DB, &message_loop_) { |
147 } | 147 } |
148 | 148 |
149 virtual void SetUp() { | 149 virtual void SetUp() { |
150 profile_.reset(new TestingProfile); | 150 profile_.reset(new TestingProfile); |
151 if (CreateHistoryAndTopSites()) { | 151 if (CreateHistoryAndTopSites()) { |
152 ASSERT_TRUE(profile_->CreateHistoryService(false, false)); | 152 profile_->CreateHistoryService(false, false); |
153 profile_->CreateTopSites(); | 153 profile_->CreateTopSites(); |
154 profile_->BlockUntilTopSitesLoaded(); | 154 profile_->BlockUntilTopSitesLoaded(); |
155 } | 155 } |
156 } | 156 } |
157 | 157 |
158 virtual void TearDown() { | 158 virtual void TearDown() { |
159 profile_.reset(); | 159 profile_.reset(); |
160 } | 160 } |
161 | 161 |
162 // Returns true if history and top sites should be created in SetUp. | 162 // Returns true if history and top sites should be created in SetUp. |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 data_path = data_path.AppendASCII("top_sites"); | 353 data_path = data_path.AppendASCII("top_sites"); |
354 | 354 |
355 // Set up history and thumbnails as they would be before migration. | 355 // Set up history and thumbnails as they would be before migration. |
356 ASSERT_NO_FATAL_FAILURE(ExecuteSQLScript( | 356 ASSERT_NO_FATAL_FAILURE(ExecuteSQLScript( |
357 data_path.AppendASCII("history.19.sql"), | 357 data_path.AppendASCII("history.19.sql"), |
358 profile()->GetPath().Append(chrome::kHistoryFilename))); | 358 profile()->GetPath().Append(chrome::kHistoryFilename))); |
359 ASSERT_NO_FATAL_FAILURE(ExecuteSQLScript( | 359 ASSERT_NO_FATAL_FAILURE(ExecuteSQLScript( |
360 data_path.AppendASCII("thumbnails.3.sql"), | 360 data_path.AppendASCII("thumbnails.3.sql"), |
361 profile()->GetPath().Append(chrome::kThumbnailsFilename))); | 361 profile()->GetPath().Append(chrome::kThumbnailsFilename))); |
362 | 362 |
363 ASSERT_TRUE(profile()->CreateHistoryService(false, false)); | 363 profile()->CreateHistoryService(false, false); |
364 profile()->CreateTopSites(); | 364 profile()->CreateTopSites(); |
365 profile()->BlockUntilTopSitesLoaded(); | 365 profile()->BlockUntilTopSitesLoaded(); |
366 } | 366 } |
367 | 367 |
368 // Returns true if history and top sites should be created in SetUp. | 368 // Returns true if history and top sites should be created in SetUp. |
369 virtual bool CreateHistoryAndTopSites() OVERRIDE { | 369 virtual bool CreateHistoryAndTopSites() OVERRIDE { |
370 return false; | 370 return false; |
371 } | 371 } |
372 | 372 |
373 protected: | 373 protected: |
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
907 | 907 |
908 // We need to wait for top sites and history to finish processing requests. | 908 // We need to wait for top sites and history to finish processing requests. |
909 WaitForTopSites(); | 909 WaitForTopSites(); |
910 WaitForHistory(); | 910 WaitForHistory(); |
911 | 911 |
912 // Make sure there is no longer a Thumbnails file on disk. | 912 // Make sure there is no longer a Thumbnails file on disk. |
913 ASSERT_FALSE(base::PathExists( | 913 ASSERT_FALSE(base::PathExists( |
914 profile()->GetPath().Append(chrome::kThumbnailsFilename))); | 914 profile()->GetPath().Append(chrome::kThumbnailsFilename))); |
915 | 915 |
916 // Recreate top sites and make sure everything is still there. | 916 // Recreate top sites and make sure everything is still there. |
917 ASSERT_TRUE(profile()->CreateHistoryService(false, false)); | 917 profile()->CreateHistoryService(false, false); |
918 RecreateTopSitesAndBlock(); | 918 RecreateTopSitesAndBlock(); |
919 | 919 |
920 ASSERT_NO_FATAL_FAILURE(MigrationAssertions()); | 920 ASSERT_NO_FATAL_FAILURE(MigrationAssertions()); |
921 } | 921 } |
922 | 922 |
923 // Verifies that callbacks are notified correctly if requested before top sites | 923 // Verifies that callbacks are notified correctly if requested before top sites |
924 // has loaded. | 924 // has loaded. |
925 TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) { | 925 TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) { |
926 // Recreate top sites. It won't be loaded now. | 926 // Recreate top sites. It won't be loaded now. |
927 profile()->CreateTopSites(); | 927 profile()->CreateTopSites(); |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1200 // before TopSites is considered loaded. | 1200 // before TopSites is considered loaded. |
1201 sql::Connection::Delete( | 1201 sql::Connection::Delete( |
1202 profile()->GetPath().Append(chrome::kTopSitesFilename)); | 1202 profile()->GetPath().Append(chrome::kTopSitesFilename)); |
1203 | 1203 |
1204 // Create TopSites, but not History. | 1204 // Create TopSites, but not History. |
1205 profile()->CreateTopSites(); | 1205 profile()->CreateTopSites(); |
1206 WaitForTopSites(); | 1206 WaitForTopSites(); |
1207 EXPECT_FALSE(IsTopSitesLoaded()); | 1207 EXPECT_FALSE(IsTopSitesLoaded()); |
1208 | 1208 |
1209 // Load history, which should make TopSites finish loading too. | 1209 // Load history, which should make TopSites finish loading too. |
1210 ASSERT_TRUE(profile()->CreateHistoryService(false, false)); | 1210 profile()->CreateHistoryService(false, false); |
1211 profile()->BlockUntilTopSitesLoaded(); | 1211 profile()->BlockUntilTopSitesLoaded(); |
1212 EXPECT_TRUE(IsTopSitesLoaded()); | 1212 EXPECT_TRUE(IsTopSitesLoaded()); |
1213 } | 1213 } |
1214 | 1214 |
1215 class TopSitesUnloadTest : public TopSitesImplTest { | 1215 class TopSitesUnloadTest : public TopSitesImplTest { |
1216 public: | 1216 public: |
1217 TopSitesUnloadTest() {} | 1217 TopSitesUnloadTest() {} |
1218 | 1218 |
1219 virtual bool CreateHistoryAndTopSites() OVERRIDE { | 1219 virtual bool CreateHistoryAndTopSites() OVERRIDE { |
1220 return false; | 1220 return false; |
1221 } | 1221 } |
1222 | 1222 |
1223 private: | 1223 private: |
1224 DISALLOW_COPY_AND_ASSIGN(TopSitesUnloadTest); | 1224 DISALLOW_COPY_AND_ASSIGN(TopSitesUnloadTest); |
1225 }; | 1225 }; |
1226 | 1226 |
1227 // Makes sure if history is unloaded after topsites is loaded we don't hit any | 1227 // Makes sure if history is unloaded after topsites is loaded we don't hit any |
1228 // assertions. | 1228 // assertions. |
1229 TEST_F(TopSitesUnloadTest, UnloadHistoryTest) { | 1229 TEST_F(TopSitesUnloadTest, UnloadHistoryTest) { |
1230 ASSERT_TRUE(profile()->CreateHistoryService(false, false)); | 1230 profile()->CreateHistoryService(false, false); |
1231 profile()->CreateTopSites(); | 1231 profile()->CreateTopSites(); |
1232 profile()->BlockUntilTopSitesLoaded(); | 1232 profile()->BlockUntilTopSitesLoaded(); |
1233 HistoryServiceFactory::GetForProfile( | 1233 HistoryServiceFactory::GetForProfile( |
1234 profile(), Profile::EXPLICIT_ACCESS)->UnloadBackend(); | 1234 profile(), Profile::EXPLICIT_ACCESS)->UnloadBackend(); |
1235 profile()->BlockUntilHistoryProcessesPendingRequests(); | 1235 profile()->BlockUntilHistoryProcessesPendingRequests(); |
1236 } | 1236 } |
1237 | 1237 |
1238 // Makes sure if history (with migration code) is unloaded after topsites is | 1238 // Makes sure if history (with migration code) is unloaded after topsites is |
1239 // loaded we don't hit any assertions. | 1239 // loaded we don't hit any assertions. |
1240 TEST_F(TopSitesUnloadTest, UnloadWithMigration) { | 1240 TEST_F(TopSitesUnloadTest, UnloadWithMigration) { |
1241 // Set up history and thumbnails as they would be before migration. | 1241 // Set up history and thumbnails as they would be before migration. |
1242 base::FilePath data_path; | 1242 base::FilePath data_path; |
1243 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &data_path)); | 1243 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &data_path)); |
1244 data_path = data_path.AppendASCII("top_sites"); | 1244 data_path = data_path.AppendASCII("top_sites"); |
1245 ASSERT_NO_FATAL_FAILURE(ExecuteSQLScript( | 1245 ASSERT_NO_FATAL_FAILURE(ExecuteSQLScript( |
1246 data_path.AppendASCII("history.19.sql"), | 1246 data_path.AppendASCII("history.19.sql"), |
1247 profile()->GetPath().Append(chrome::kHistoryFilename))); | 1247 profile()->GetPath().Append(chrome::kHistoryFilename))); |
1248 ASSERT_NO_FATAL_FAILURE(ExecuteSQLScript( | 1248 ASSERT_NO_FATAL_FAILURE(ExecuteSQLScript( |
1249 data_path.AppendASCII("thumbnails.3.sql"), | 1249 data_path.AppendASCII("thumbnails.3.sql"), |
1250 profile()->GetPath().Append(chrome::kThumbnailsFilename))); | 1250 profile()->GetPath().Append(chrome::kThumbnailsFilename))); |
1251 | 1251 |
1252 // Create history and block until it's loaded. | 1252 // Create history and block until it's loaded. |
1253 ASSERT_TRUE(profile()->CreateHistoryService(false, false)); | 1253 profile()->CreateHistoryService(false, false); |
1254 profile()->BlockUntilHistoryProcessesPendingRequests(); | 1254 profile()->BlockUntilHistoryProcessesPendingRequests(); |
1255 | 1255 |
1256 // Create top sites and unload history. | 1256 // Create top sites and unload history. |
1257 content::WindowedNotificationObserver observer( | 1257 content::WindowedNotificationObserver observer( |
1258 chrome::NOTIFICATION_TOP_SITES_LOADED, | 1258 chrome::NOTIFICATION_TOP_SITES_LOADED, |
1259 content::Source<Profile>(profile())); | 1259 content::Source<Profile>(profile())); |
1260 profile()->CreateTopSites(); | 1260 profile()->CreateTopSites(); |
1261 HistoryServiceFactory::GetForProfile( | 1261 HistoryServiceFactory::GetForProfile( |
1262 profile(), Profile::EXPLICIT_ACCESS)->UnloadBackend(); | 1262 profile(), Profile::EXPLICIT_ACCESS)->UnloadBackend(); |
1263 profile()->BlockUntilHistoryProcessesPendingRequests(); | 1263 profile()->BlockUntilHistoryProcessesPendingRequests(); |
1264 observer.Wait(); | 1264 observer.Wait(); |
1265 } | 1265 } |
1266 | 1266 |
1267 } // namespace history | 1267 } // namespace history |
OLD | NEW |