OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "ios/chrome/browser/browser_state/test_chrome_browser_state.h" | 5 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/base_paths.h" | 9 #include "base/base_paths.h" |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 return true; | 353 return true; |
354 } | 354 } |
355 | 355 |
356 void TestChromeBrowserState::DestroyHistoryService() { | 356 void TestChromeBrowserState::DestroyHistoryService() { |
357 history::HistoryService* history_service = | 357 history::HistoryService* history_service = |
358 ios::HistoryServiceFactory::GetInstance()->GetForBrowserStateIfExists( | 358 ios::HistoryServiceFactory::GetInstance()->GetForBrowserStateIfExists( |
359 this, ServiceAccessType::EXPLICIT_ACCESS); | 359 this, ServiceAccessType::EXPLICIT_ACCESS); |
360 if (!history_service) | 360 if (!history_service) |
361 return; | 361 return; |
362 | 362 |
| 363 base::RunLoop run_loop; |
| 364 |
363 history_service->ClearCachedDataForContextID(0); | 365 history_service->ClearCachedDataForContextID(0); |
364 history_service->SetOnBackendDestroyTask( | 366 history_service->SetOnBackendDestroyTask(run_loop.QuitWhenIdleClosure()); |
365 base::MessageLoop::QuitWhenIdleClosure()); | |
366 history_service->Shutdown(); | 367 history_service->Shutdown(); |
367 history_service = nullptr; | 368 history_service = nullptr; |
368 | 369 |
369 // Resetting the testing factory force the destruction of the current | 370 // Resetting the testing factory force the destruction of the current |
370 // HistoryService instance associated with the TestChromeBrowserState. | 371 // HistoryService instance associated with the TestChromeBrowserState. |
371 ios::HistoryServiceFactory::GetInstance()->SetTestingFactory(this, nullptr); | 372 ios::HistoryServiceFactory::GetInstance()->SetTestingFactory(this, nullptr); |
372 | 373 |
373 // Wait for the backend class to terminate before deleting the files and | 374 // Wait for the backend class to terminate before deleting the files and |
374 // moving to the next test. Note: if this never terminates, somebody is | 375 // moving to the next test. Note: if this never terminates, somebody is |
375 // probably leaking a reference to the history backend, so it never calls | 376 // probably leaking a reference to the history backend, so it never calls |
376 // our destroy task. | 377 // our destroy task. |
377 base::MessageLoop::current()->Run(); | 378 run_loop.Run(); |
378 | |
379 // Make sure we don't have any event pending that could disrupt the next | |
380 // test. | |
381 base::ThreadTaskRunnerHandle::Get()->PostTask( | |
382 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); | |
383 base::MessageLoop::current()->Run(); | |
384 } | 379 } |
385 | 380 |
386 syncable_prefs::TestingPrefServiceSyncable* | 381 syncable_prefs::TestingPrefServiceSyncable* |
387 TestChromeBrowserState::GetTestingPrefService() { | 382 TestChromeBrowserState::GetTestingPrefService() { |
388 DCHECK(prefs_); | 383 DCHECK(prefs_); |
389 DCHECK(testing_prefs_); | 384 DCHECK(testing_prefs_); |
390 return testing_prefs_; | 385 return testing_prefs_; |
391 } | 386 } |
392 | 387 |
393 TestChromeBrowserState::Builder::Builder() : build_called_(false) {} | 388 TestChromeBrowserState::Builder::Builder() : build_called_(false) {} |
(...skipping 25 matching lines...) Expand all Loading... |
419 pref_service_ = std::move(prefs); | 414 pref_service_ = std::move(prefs); |
420 } | 415 } |
421 | 416 |
422 std::unique_ptr<TestChromeBrowserState> | 417 std::unique_ptr<TestChromeBrowserState> |
423 TestChromeBrowserState::Builder::Build() { | 418 TestChromeBrowserState::Builder::Build() { |
424 DCHECK(!build_called_); | 419 DCHECK(!build_called_); |
425 return base::WrapUnique(new TestChromeBrowserState( | 420 return base::WrapUnique(new TestChromeBrowserState( |
426 state_path_, std::move(pref_service_), testing_factories_, | 421 state_path_, std::move(pref_service_), testing_factories_, |
427 refcounted_testing_factories_)); | 422 refcounted_testing_factories_)); |
428 } | 423 } |
OLD | NEW |