| Index: components/offline_pages/offline_page_model_unittest.cc | 
| diff --git a/components/offline_pages/offline_page_model_unittest.cc b/components/offline_pages/offline_page_model_unittest.cc | 
| index e0d824e136157748546269287cc9584d66d43984..f1f817b007730fc3179b4736caa0b94f60f1828c 100644 | 
| --- a/components/offline_pages/offline_page_model_unittest.cc | 
| +++ b/components/offline_pages/offline_page_model_unittest.cc | 
| @@ -9,9 +9,10 @@ | 
| #include "base/bind.h" | 
| #include "base/files/file_util.h" | 
| #include "base/files/scoped_temp_dir.h" | 
| -#include "base/message_loop/message_loop.h" | 
| #include "base/run_loop.h" | 
| #include "base/single_thread_task_runner.h" | 
| +#include "base/test/test_mock_time_task_runner.h" | 
| +#include "base/thread_task_runner_handle.h" | 
| #include "base/time/time.h" | 
| #include "components/bookmarks/browser/bookmark_node.h" | 
| #include "components/offline_pages/offline_page_item.h" | 
| @@ -74,13 +75,11 @@ class OfflinePageModelTest | 
| void ResetModel(); | 
|  | 
| // Utility methods. | 
| +  // Runs until all of the tasks that are not delayed are gone from the task | 
| +  // queue. | 
| void PumpLoop(); | 
| void ResetResults(); | 
|  | 
| -  scoped_refptr<base::SingleThreadTaskRunner> task_runner() { | 
| -    return message_loop_.task_runner(); | 
| -  } | 
| - | 
| OfflinePageModel* model() { return model_.get(); } | 
|  | 
| OfflinePageTestStore* GetStore(); | 
| @@ -100,7 +99,8 @@ class OfflinePageModelTest | 
| const base::FilePath& last_archiver_path() { return last_archiver_path_; } | 
|  | 
| private: | 
| -  base::MessageLoop message_loop_; | 
| +  scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; | 
| +  base::ThreadTaskRunnerHandle task_runner_handle_; | 
| base::ScopedTempDir temp_dir_; | 
|  | 
| scoped_ptr<OfflinePageModel> model_; | 
| @@ -111,7 +111,9 @@ class OfflinePageModelTest | 
| }; | 
|  | 
| OfflinePageModelTest::OfflinePageModelTest() | 
| -    : last_save_result_(SavePageResult::CANCELLED), | 
| +    : task_runner_(new base::TestMockTimeTaskRunner), | 
| +      task_runner_handle_(task_runner_), | 
| +      last_save_result_(SavePageResult::CANCELLED), | 
| last_delete_result_(DeletePageResult::CANCELLED), | 
| last_deleted_bookmark_id_(-1) { | 
| } | 
| @@ -123,12 +125,12 @@ void OfflinePageModelTest::SetUp() { | 
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 
| model_ = BuildModel(BuildStore().Pass()).Pass(); | 
| model_->AddObserver(this); | 
| -  base::RunLoop().RunUntilIdle(); | 
| +  PumpLoop(); | 
| } | 
|  | 
| void OfflinePageModelTest::TearDown() { | 
| model_->RemoveObserver(this); | 
| -  base::RunLoop().RunUntilIdle(); | 
| +  PumpLoop(); | 
| } | 
|  | 
| void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) { | 
| @@ -158,7 +160,7 @@ void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) { | 
| } | 
|  | 
| void OfflinePageModelTest::OnClearAllDone() { | 
| -  base::RunLoop().RunUntilIdle(); | 
| +  PumpLoop(); | 
| } | 
|  | 
| void OfflinePageModelTest::OnStoreUpdateDone(bool /* success - ignored */) { | 
| @@ -168,18 +170,18 @@ scoped_ptr<OfflinePageTestArchiver> OfflinePageModelTest::BuildArchiver( | 
| const GURL& url, | 
| OfflinePageArchiver::ArchiverResult result) { | 
| return scoped_ptr<OfflinePageTestArchiver>(new OfflinePageTestArchiver( | 
| -      this, url, result, kTestFileSize, task_runner())); | 
| +      this, url, result, kTestFileSize, base::ThreadTaskRunnerHandle::Get())); | 
| } | 
|  | 
| scoped_ptr<OfflinePageMetadataStore> OfflinePageModelTest::BuildStore() { | 
| return scoped_ptr<OfflinePageMetadataStore>( | 
| -      new OfflinePageTestStore(task_runner())); | 
| +      new OfflinePageTestStore(base::ThreadTaskRunnerHandle::Get())); | 
| } | 
|  | 
| scoped_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel( | 
| scoped_ptr<OfflinePageMetadataStore> store) { | 
| -  return scoped_ptr<OfflinePageModel>( | 
| -      new OfflinePageModel(store.Pass(), temp_dir_.path(), task_runner())); | 
| +  return scoped_ptr<OfflinePageModel>(new OfflinePageModel( | 
| +      store.Pass(), temp_dir_.path(), base::ThreadTaskRunnerHandle::Get())); | 
| } | 
|  | 
| void OfflinePageModelTest::ResetModel() { | 
| @@ -193,7 +195,7 @@ void OfflinePageModelTest::ResetModel() { | 
| } | 
|  | 
| void OfflinePageModelTest::PumpLoop() { | 
| -  base::RunLoop().RunUntilIdle(); | 
| +  task_runner_->RunUntilIdle(); | 
| } | 
|  | 
| void OfflinePageModelTest::ResetResults() { | 
| @@ -226,7 +228,6 @@ TEST_F(OfflinePageModelTest, SavePageSuccessful) { | 
| EXPECT_EQ(archiver_path, store->last_saved_page().file_path); | 
| EXPECT_EQ(kTestFileSize, store->last_saved_page().file_size); | 
| EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); | 
| - | 
| ResetResults(); | 
|  | 
| const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 
| @@ -401,7 +402,7 @@ TEST_F(OfflinePageModelTest, MarkPageAccessed) { | 
|  | 
| // This will increase access_count by one. | 
| model()->MarkPageAccessed(kTestPageBookmarkId1); | 
| -  base::RunLoop().RunUntilIdle(); | 
| +  PumpLoop(); | 
|  | 
| const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 
|  | 
| @@ -441,7 +442,7 @@ TEST_F(OfflinePageModelTest, MarkPageForDeletion) { | 
|  | 
| // Undo the deletion. | 
| model()->UndoPageDeletion(kTestPageBookmarkId1); | 
| -  base::RunLoop().RunUntilIdle(); | 
| +  PumpLoop(); | 
|  | 
| // GetAllPages will now return the restored page. | 
| const std::vector<OfflinePageItem>& offline_pages_after_undo = | 
|  |