| 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 "chrome/browser/chromeos/drive/change_list_loader.h" | 5 #include "chrome/browser/chromeos/drive/change_list_loader.h" | 
| 6 | 6 | 
| 7 #include "base/callback_helpers.h" | 7 #include "base/callback_helpers.h" | 
| 8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" | 
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" | 
| 10 #include "base/prefs/testing_pref_service.h" | 10 #include "base/prefs/testing_pref_service.h" | 
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 93     metadata_.reset(new ResourceMetadata( | 93     metadata_.reset(new ResourceMetadata( | 
| 94         metadata_storage_.get(), base::MessageLoopProxy::current().get())); | 94         metadata_storage_.get(), base::MessageLoopProxy::current().get())); | 
| 95     ASSERT_EQ(FILE_ERROR_OK, metadata_->Initialize()); | 95     ASSERT_EQ(FILE_ERROR_OK, metadata_->Initialize()); | 
| 96 | 96 | 
| 97     cache_.reset(new FileCache(metadata_storage_.get(), | 97     cache_.reset(new FileCache(metadata_storage_.get(), | 
| 98                                temp_dir_.path(), | 98                                temp_dir_.path(), | 
| 99                                base::MessageLoopProxy::current().get(), | 99                                base::MessageLoopProxy::current().get(), | 
| 100                                NULL /* free_disk_space_getter */)); | 100                                NULL /* free_disk_space_getter */)); | 
| 101     ASSERT_TRUE(cache_->Initialize()); | 101     ASSERT_TRUE(cache_->Initialize()); | 
| 102 | 102 | 
|  | 103     loader_controller_.reset(new LoaderController); | 
| 103     change_list_loader_.reset( | 104     change_list_loader_.reset( | 
| 104         new ChangeListLoader(base::MessageLoopProxy::current().get(), | 105         new ChangeListLoader(base::MessageLoopProxy::current().get(), | 
| 105                              metadata_.get(), | 106                              metadata_.get(), | 
| 106                              scheduler_.get(), | 107                              scheduler_.get(), | 
| 107                              drive_service_.get())); | 108                              drive_service_.get(), | 
|  | 109                              loader_controller_.get())); | 
| 108   } | 110   } | 
| 109 | 111 | 
| 110   // Adds a new file to the root directory of the service. | 112   // Adds a new file to the root directory of the service. | 
| 111   scoped_ptr<google_apis::ResourceEntry> AddNewFile(const std::string& title) { | 113   scoped_ptr<google_apis::ResourceEntry> AddNewFile(const std::string& title) { | 
| 112     google_apis::GDataErrorCode error = google_apis::GDATA_FILE_ERROR; | 114     google_apis::GDataErrorCode error = google_apis::GDATA_FILE_ERROR; | 
| 113     scoped_ptr<google_apis::ResourceEntry> entry; | 115     scoped_ptr<google_apis::ResourceEntry> entry; | 
| 114     drive_service_->AddNewFile( | 116     drive_service_->AddNewFile( | 
| 115         "text/plain", | 117         "text/plain", | 
| 116         "content text", | 118         "content text", | 
| 117         drive_service_->GetRootResourceId(), | 119         drive_service_->GetRootResourceId(), | 
| 118         title, | 120         title, | 
| 119         false,  // shared_with_me | 121         false,  // shared_with_me | 
| 120         google_apis::test_util::CreateCopyResultCallback(&error, &entry)); | 122         google_apis::test_util::CreateCopyResultCallback(&error, &entry)); | 
| 121     base::RunLoop().RunUntilIdle(); | 123     base::RunLoop().RunUntilIdle(); | 
| 122     EXPECT_EQ(google_apis::HTTP_CREATED, error); | 124     EXPECT_EQ(google_apis::HTTP_CREATED, error); | 
| 123     return entry.Pass(); | 125     return entry.Pass(); | 
| 124   } | 126   } | 
| 125 | 127 | 
| 126   content::TestBrowserThreadBundle thread_bundle_; | 128   content::TestBrowserThreadBundle thread_bundle_; | 
| 127   base::ScopedTempDir temp_dir_; | 129   base::ScopedTempDir temp_dir_; | 
| 128   scoped_ptr<TestingPrefServiceSimple> pref_service_; | 130   scoped_ptr<TestingPrefServiceSimple> pref_service_; | 
| 129   scoped_ptr<FakeDriveService> drive_service_; | 131   scoped_ptr<FakeDriveService> drive_service_; | 
| 130   scoped_ptr<JobScheduler> scheduler_; | 132   scoped_ptr<JobScheduler> scheduler_; | 
| 131   scoped_ptr<ResourceMetadataStorage, | 133   scoped_ptr<ResourceMetadataStorage, | 
| 132              test_util::DestroyHelperForTests> metadata_storage_; | 134              test_util::DestroyHelperForTests> metadata_storage_; | 
| 133   scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> metadata_; | 135   scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> metadata_; | 
| 134   scoped_ptr<FileCache, test_util::DestroyHelperForTests> cache_; | 136   scoped_ptr<FileCache, test_util::DestroyHelperForTests> cache_; | 
|  | 137   scoped_ptr<LoaderController> loader_controller_; | 
| 135   scoped_ptr<ChangeListLoader> change_list_loader_; | 138   scoped_ptr<ChangeListLoader> change_list_loader_; | 
| 136 }; | 139 }; | 
| 137 | 140 | 
| 138 TEST_F(ChangeListLoaderTest, Load) { | 141 TEST_F(ChangeListLoaderTest, Load) { | 
| 139   EXPECT_FALSE(change_list_loader_->IsRefreshing()); | 142   EXPECT_FALSE(change_list_loader_->IsRefreshing()); | 
| 140 | 143 | 
| 141   // Start initial load. | 144   // Start initial load. | 
| 142   TestChangeListLoaderObserver observer(change_list_loader_.get()); | 145   TestChangeListLoaderObserver observer(change_list_loader_.get()); | 
| 143 | 146 | 
| 144   EXPECT_EQ(0, drive_service_->about_resource_load_count()); | 147   EXPECT_EQ(0, drive_service_->about_resource_load_count()); | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 186   change_list_loader_->LoadForTesting( | 189   change_list_loader_->LoadForTesting( | 
| 187       google_apis::test_util::CreateCopyResultCallback(&error)); | 190       google_apis::test_util::CreateCopyResultCallback(&error)); | 
| 188   base::RunLoop().RunUntilIdle(); | 191   base::RunLoop().RunUntilIdle(); | 
| 189   EXPECT_EQ(FILE_ERROR_OK, error); | 192   EXPECT_EQ(FILE_ERROR_OK, error); | 
| 190 | 193 | 
| 191   // Reset loader. | 194   // Reset loader. | 
| 192   change_list_loader_.reset( | 195   change_list_loader_.reset( | 
| 193       new ChangeListLoader(base::MessageLoopProxy::current().get(), | 196       new ChangeListLoader(base::MessageLoopProxy::current().get(), | 
| 194                            metadata_.get(), | 197                            metadata_.get(), | 
| 195                            scheduler_.get(), | 198                            scheduler_.get(), | 
| 196                            drive_service_.get())); | 199                            drive_service_.get(), | 
|  | 200                            loader_controller_.get())); | 
| 197 | 201 | 
| 198   // Add a file to the service. | 202   // Add a file to the service. | 
| 199   scoped_ptr<google_apis::ResourceEntry> gdata_entry = AddNewFile("New File"); | 203   scoped_ptr<google_apis::ResourceEntry> gdata_entry = AddNewFile("New File"); | 
| 200   ASSERT_TRUE(gdata_entry); | 204   ASSERT_TRUE(gdata_entry); | 
| 201 | 205 | 
| 202   // Start loading. Because local metadata is available, the load results in | 206   // Start loading. Because local metadata is available, the load results in | 
| 203   // returning FILE_ERROR_OK without fetching full list of resources. | 207   // returning FILE_ERROR_OK without fetching full list of resources. | 
| 204   const int previous_resource_list_load_count = | 208   const int previous_resource_list_load_count = | 
| 205       drive_service_->resource_list_load_count(); | 209       drive_service_->resource_list_load_count(); | 
| 206   TestChangeListLoaderObserver observer(change_list_loader_.get()); | 210   TestChangeListLoaderObserver observer(change_list_loader_.get()); | 
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 433   change_list_loader_->LoadForTesting( | 437   change_list_loader_->LoadForTesting( | 
| 434       google_apis::test_util::CreateCopyResultCallback(&error)); | 438       google_apis::test_util::CreateCopyResultCallback(&error)); | 
| 435   base::RunLoop().RunUntilIdle(); | 439   base::RunLoop().RunUntilIdle(); | 
| 436   EXPECT_EQ(FILE_ERROR_OK, error); | 440   EXPECT_EQ(FILE_ERROR_OK, error); | 
| 437 | 441 | 
| 438   // Add a new file. | 442   // Add a new file. | 
| 439   scoped_ptr<google_apis::ResourceEntry> file = AddNewFile("New File"); | 443   scoped_ptr<google_apis::ResourceEntry> file = AddNewFile("New File"); | 
| 440   ASSERT_TRUE(file); | 444   ASSERT_TRUE(file); | 
| 441 | 445 | 
| 442   // Lock the loader. | 446   // Lock the loader. | 
| 443   scoped_ptr<base::ScopedClosureRunner> lock = change_list_loader_->GetLock(); | 447   scoped_ptr<base::ScopedClosureRunner> lock = loader_controller_->GetLock(); | 
| 444 | 448 | 
| 445   // Start update. | 449   // Start update. | 
| 446   TestChangeListLoaderObserver observer(change_list_loader_.get()); | 450   TestChangeListLoaderObserver observer(change_list_loader_.get()); | 
| 447   FileError check_for_updates_error = FILE_ERROR_FAILED; | 451   FileError check_for_updates_error = FILE_ERROR_FAILED; | 
| 448   change_list_loader_->CheckForUpdates( | 452   change_list_loader_->CheckForUpdates( | 
| 449       google_apis::test_util::CreateCopyResultCallback( | 453       google_apis::test_util::CreateCopyResultCallback( | 
| 450           &check_for_updates_error)); | 454           &check_for_updates_error)); | 
| 451   base::RunLoop().RunUntilIdle(); | 455   base::RunLoop().RunUntilIdle(); | 
| 452 | 456 | 
| 453   // Update is pending due to the lock. | 457   // Update is pending due to the lock. | 
| 454   EXPECT_TRUE(observer.changed_directories().empty()); | 458   EXPECT_TRUE(observer.changed_directories().empty()); | 
| 455 | 459 | 
| 456   // Unlock the loader, this should resume the pending udpate. | 460   // Unlock the loader, this should resume the pending udpate. | 
| 457   lock.reset(); | 461   lock.reset(); | 
| 458   base::RunLoop().RunUntilIdle(); | 462   base::RunLoop().RunUntilIdle(); | 
| 459   EXPECT_EQ(1U, observer.changed_directories().count( | 463   EXPECT_EQ(1U, observer.changed_directories().count( | 
| 460       util::GetDriveMyDriveRootPath())); | 464       util::GetDriveMyDriveRootPath())); | 
| 461 } | 465 } | 
| 462 | 466 | 
| 463 }  // namespace internal | 467 }  // namespace internal | 
| 464 }  // namespace drive | 468 }  // namespace drive | 
| OLD | NEW | 
|---|