| 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 "chrome/browser/chromeos/drive/drive_file_system.h" | 5 #include "chrome/browser/chromeos/drive/drive_file_system.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 fake_drive_service_->LoadAppListForDriveApi("chromeos/drive/applist.json"); | 209 fake_drive_service_->LoadAppListForDriveApi("chromeos/drive/applist.json"); |
| 210 | 210 |
| 211 fake_free_disk_space_getter_.reset(new FakeFreeDiskSpaceGetter); | 211 fake_free_disk_space_getter_.reset(new FakeFreeDiskSpaceGetter); |
| 212 | 212 |
| 213 scoped_refptr<base::SequencedWorkerPool> pool = | 213 scoped_refptr<base::SequencedWorkerPool> pool = |
| 214 content::BrowserThread::GetBlockingPool(); | 214 content::BrowserThread::GetBlockingPool(); |
| 215 blocking_task_runner_ = | 215 blocking_task_runner_ = |
| 216 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); | 216 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); |
| 217 | 217 |
| 218 // Likewise, this will be owned by DriveFileSystem. | 218 // Likewise, this will be owned by DriveFileSystem. |
| 219 cache_ = new DriveCache( | 219 cache_.reset(new DriveCache(DriveCache::GetCacheRootPath(profile_.get()), |
| 220 DriveCache::GetCacheRootPath(profile_.get()), | 220 blocking_task_runner_, |
| 221 blocking_task_runner_, | 221 fake_free_disk_space_getter_.get())); |
| 222 fake_free_disk_space_getter_.get()); | |
| 223 | 222 |
| 224 fake_uploader_.reset(new FakeDriveUploader); | 223 fake_uploader_.reset(new FakeDriveUploader); |
| 225 drive_webapps_registry_.reset(new DriveWebAppsRegistry); | 224 drive_webapps_registry_.reset(new DriveWebAppsRegistry); |
| 226 | 225 |
| 227 ASSERT_FALSE(file_system_); | 226 ASSERT_FALSE(file_system_); |
| 228 file_system_ = new DriveFileSystem(profile_.get(), | 227 file_system_ = new DriveFileSystem(profile_.get(), |
| 229 cache_, | 228 cache_.get(), |
| 230 fake_drive_service_, | 229 fake_drive_service_, |
| 231 fake_uploader_.get(), | 230 fake_uploader_.get(), |
| 232 drive_webapps_registry_.get(), | 231 drive_webapps_registry_.get(), |
| 233 blocking_task_runner_); | 232 blocking_task_runner_); |
| 234 | 233 |
| 235 mock_cache_observer_.reset(new StrictMock<MockDriveCacheObserver>); | 234 mock_cache_observer_.reset(new StrictMock<MockDriveCacheObserver>); |
| 236 cache_->AddObserver(mock_cache_observer_.get()); | 235 cache_->AddObserver(mock_cache_observer_.get()); |
| 237 | 236 |
| 238 mock_directory_observer_.reset(new StrictMock<MockDirectoryChangeObserver>); | 237 mock_directory_observer_.reset(new StrictMock<MockDirectoryChangeObserver>); |
| 239 file_system_->AddObserver(mock_directory_observer_.get()); | 238 file_system_->AddObserver(mock_directory_observer_.get()); |
| 240 | 239 |
| 241 file_system_->Initialize(); | 240 file_system_->Initialize(); |
| 242 cache_->RequestInitializeForTesting(); | 241 cache_->RequestInitializeForTesting(); |
| 243 google_apis::test_util::RunBlockingPoolTask(); | 242 google_apis::test_util::RunBlockingPoolTask(); |
| 244 } | 243 } |
| 245 | 244 |
| 246 virtual void TearDown() OVERRIDE { | 245 virtual void TearDown() OVERRIDE { |
| 247 ASSERT_TRUE(file_system_); | 246 ASSERT_TRUE(file_system_); |
| 248 delete file_system_; | 247 delete file_system_; |
| 249 file_system_ = NULL; | 248 file_system_ = NULL; |
| 250 delete fake_drive_service_; | 249 delete fake_drive_service_; |
| 251 fake_drive_service_ = NULL; | 250 fake_drive_service_ = NULL; |
| 252 test_util::DeleteDriveCache(cache_); | 251 cache_.reset(); |
| 253 profile_.reset(NULL); | 252 profile_.reset(NULL); |
| 254 } | 253 } |
| 255 | 254 |
| 256 // Loads test json file as root ("/drive") element. | 255 // Loads test json file as root ("/drive") element. |
| 257 bool LoadRootFeedDocument() { | 256 bool LoadRootFeedDocument() { |
| 258 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 257 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 259 file_system_->change_list_loader()->LoadFromServerIfNeeded( | 258 file_system_->change_list_loader()->LoadFromServerIfNeeded( |
| 260 DirectoryFetchInfo(), | 259 DirectoryFetchInfo(), |
| 261 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, | 260 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, |
| 262 &error)); | 261 &error)); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 // Saves a file representing a filesystem with directories: | 401 // Saves a file representing a filesystem with directories: |
| 403 // drive, drive/Dir1, drive/Dir1/SubDir2 | 402 // drive, drive/Dir1, drive/Dir1/SubDir2 |
| 404 // and files | 403 // and files |
| 405 // drive/File1, drive/Dir1/File2, drive/Dir1/SubDir2/File3. | 404 // drive/File1, drive/Dir1/File2, drive/Dir1/SubDir2/File3. |
| 406 // If |use_up_to_date_timestamp| is true, sets the changestamp to 654321, | 405 // If |use_up_to_date_timestamp| is true, sets the changestamp to 654321, |
| 407 // equal to that of "account_metadata.json" test data, indicating the cache is | 406 // equal to that of "account_metadata.json" test data, indicating the cache is |
| 408 // holding the latest file system info. | 407 // holding the latest file system info. |
| 409 bool SaveTestFileSystem(SaveTestFileSystemParam param) { | 408 bool SaveTestFileSystem(SaveTestFileSystemParam param) { |
| 410 const std::string root_resource_id = | 409 const std::string root_resource_id = |
| 411 fake_drive_service_->GetRootResourceId(); | 410 fake_drive_service_->GetRootResourceId(); |
| 412 DriveResourceMetadata resource_metadata(root_resource_id, | 411 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> |
| 413 blocking_task_runner_); | 412 resource_metadata(new DriveResourceMetadata(root_resource_id, |
| 413 blocking_task_runner_)); |
| 414 | 414 |
| 415 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 415 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 416 resource_metadata.SetLargestChangestamp( | 416 resource_metadata->SetLargestChangestamp( |
| 417 param == USE_SERVER_TIMESTAMP ? 654321 : 1, | 417 param == USE_SERVER_TIMESTAMP ? 654321 : 1, |
| 418 google_apis::test_util::CreateCopyResultCallback(&error)); | 418 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 419 google_apis::test_util::RunBlockingPoolTask(); | 419 google_apis::test_util::RunBlockingPoolTask(); |
| 420 if (error != DRIVE_FILE_OK) | 420 if (error != DRIVE_FILE_OK) |
| 421 return false; | 421 return false; |
| 422 | 422 |
| 423 // drive/File1 | 423 // drive/File1 |
| 424 DriveEntryProto file1; | 424 DriveEntryProto file1; |
| 425 file1.set_title("File1"); | 425 file1.set_title("File1"); |
| 426 file1.set_resource_id("resource_id:File1"); | 426 file1.set_resource_id("resource_id:File1"); |
| 427 file1.set_parent_resource_id(root_resource_id); | 427 file1.set_parent_resource_id(root_resource_id); |
| 428 file1.set_upload_url("http://resumable-edit-media/1"); | 428 file1.set_upload_url("http://resumable-edit-media/1"); |
| 429 file1.mutable_file_specific_info()->set_file_md5("md5"); | 429 file1.mutable_file_specific_info()->set_file_md5("md5"); |
| 430 file1.mutable_file_info()->set_is_directory(false); | 430 file1.mutable_file_info()->set_is_directory(false); |
| 431 file1.mutable_file_info()->set_size(1048576); | 431 file1.mutable_file_info()->set_size(1048576); |
| 432 base::FilePath file_path; | 432 base::FilePath file_path; |
| 433 resource_metadata.AddEntry( | 433 resource_metadata->AddEntry( |
| 434 file1, | 434 file1, |
| 435 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 435 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 436 google_apis::test_util::RunBlockingPoolTask(); | 436 google_apis::test_util::RunBlockingPoolTask(); |
| 437 if (error != DRIVE_FILE_OK) | 437 if (error != DRIVE_FILE_OK) |
| 438 return false; | 438 return false; |
| 439 | 439 |
| 440 // drive/Dir1 | 440 // drive/Dir1 |
| 441 DriveEntryProto dir1; | 441 DriveEntryProto dir1; |
| 442 dir1.set_title("Dir1"); | 442 dir1.set_title("Dir1"); |
| 443 dir1.set_resource_id("resource_id:Dir1"); | 443 dir1.set_resource_id("resource_id:Dir1"); |
| 444 dir1.set_parent_resource_id(root_resource_id); | 444 dir1.set_parent_resource_id(root_resource_id); |
| 445 dir1.set_upload_url("http://resumable-create-media/2"); | 445 dir1.set_upload_url("http://resumable-create-media/2"); |
| 446 dir1.mutable_file_info()->set_is_directory(true); | 446 dir1.mutable_file_info()->set_is_directory(true); |
| 447 resource_metadata.AddEntry( | 447 resource_metadata->AddEntry( |
| 448 dir1, | 448 dir1, |
| 449 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 449 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 450 google_apis::test_util::RunBlockingPoolTask(); | 450 google_apis::test_util::RunBlockingPoolTask(); |
| 451 if (error != DRIVE_FILE_OK) | 451 if (error != DRIVE_FILE_OK) |
| 452 return false; | 452 return false; |
| 453 | 453 |
| 454 // drive/Dir1/File2 | 454 // drive/Dir1/File2 |
| 455 DriveEntryProto file2; | 455 DriveEntryProto file2; |
| 456 file2.set_title("File2"); | 456 file2.set_title("File2"); |
| 457 file2.set_resource_id("resource_id:File2"); | 457 file2.set_resource_id("resource_id:File2"); |
| 458 file2.set_parent_resource_id(dir1.resource_id()); | 458 file2.set_parent_resource_id(dir1.resource_id()); |
| 459 file2.set_upload_url("http://resumable-edit-media/2"); | 459 file2.set_upload_url("http://resumable-edit-media/2"); |
| 460 file2.mutable_file_specific_info()->set_file_md5("md5"); | 460 file2.mutable_file_specific_info()->set_file_md5("md5"); |
| 461 file2.mutable_file_info()->set_is_directory(false); | 461 file2.mutable_file_info()->set_is_directory(false); |
| 462 file2.mutable_file_info()->set_size(555); | 462 file2.mutable_file_info()->set_size(555); |
| 463 resource_metadata.AddEntry( | 463 resource_metadata->AddEntry( |
| 464 file2, | 464 file2, |
| 465 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 465 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 466 google_apis::test_util::RunBlockingPoolTask(); | 466 google_apis::test_util::RunBlockingPoolTask(); |
| 467 if (error != DRIVE_FILE_OK) | 467 if (error != DRIVE_FILE_OK) |
| 468 return false; | 468 return false; |
| 469 | 469 |
| 470 // drive/Dir1/SubDir2 | 470 // drive/Dir1/SubDir2 |
| 471 DriveEntryProto dir2; | 471 DriveEntryProto dir2; |
| 472 dir2.set_title("SubDir2"); | 472 dir2.set_title("SubDir2"); |
| 473 dir2.set_resource_id("resource_id:SubDir2"); | 473 dir2.set_resource_id("resource_id:SubDir2"); |
| 474 dir2.set_parent_resource_id(dir1.resource_id()); | 474 dir2.set_parent_resource_id(dir1.resource_id()); |
| 475 dir2.set_upload_url("http://resumable-create-media/3"); | 475 dir2.set_upload_url("http://resumable-create-media/3"); |
| 476 dir2.mutable_file_info()->set_is_directory(true); | 476 dir2.mutable_file_info()->set_is_directory(true); |
| 477 resource_metadata.AddEntry( | 477 resource_metadata->AddEntry( |
| 478 dir2, | 478 dir2, |
| 479 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 479 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 480 google_apis::test_util::RunBlockingPoolTask(); | 480 google_apis::test_util::RunBlockingPoolTask(); |
| 481 if (error != DRIVE_FILE_OK) | 481 if (error != DRIVE_FILE_OK) |
| 482 return false; | 482 return false; |
| 483 | 483 |
| 484 // drive/Dir1/SubDir2/File3 | 484 // drive/Dir1/SubDir2/File3 |
| 485 DriveEntryProto file3; | 485 DriveEntryProto file3; |
| 486 file3.set_title("File3"); | 486 file3.set_title("File3"); |
| 487 file3.set_resource_id("resource_id:File3"); | 487 file3.set_resource_id("resource_id:File3"); |
| 488 file3.set_parent_resource_id(dir2.resource_id()); | 488 file3.set_parent_resource_id(dir2.resource_id()); |
| 489 file3.set_upload_url("http://resumable-edit-media/3"); | 489 file3.set_upload_url("http://resumable-edit-media/3"); |
| 490 file3.mutable_file_specific_info()->set_file_md5("md5"); | 490 file3.mutable_file_specific_info()->set_file_md5("md5"); |
| 491 file3.mutable_file_info()->set_is_directory(false); | 491 file3.mutable_file_info()->set_is_directory(false); |
| 492 file3.mutable_file_info()->set_size(12345); | 492 file3.mutable_file_info()->set_size(12345); |
| 493 resource_metadata.AddEntry( | 493 resource_metadata->AddEntry( |
| 494 file3, | 494 file3, |
| 495 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 495 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 496 google_apis::test_util::RunBlockingPoolTask(); | 496 google_apis::test_util::RunBlockingPoolTask(); |
| 497 if (error != DRIVE_FILE_OK) | 497 if (error != DRIVE_FILE_OK) |
| 498 return false; | 498 return false; |
| 499 | 499 |
| 500 // Write resource metadata. | 500 // Write resource metadata. |
| 501 base::FilePath cache_dir_path = | 501 base::FilePath cache_dir_path = |
| 502 cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_META); | 502 cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_META); |
| 503 if (!file_util::CreateDirectory(cache_dir_path)) | 503 if (!file_util::CreateDirectory(cache_dir_path)) |
| 504 return false; | 504 return false; |
| 505 resource_metadata.MaybeSave(cache_dir_path); | 505 resource_metadata->MaybeSave(cache_dir_path); |
| 506 google_apis::test_util::RunBlockingPoolTask(); | 506 google_apis::test_util::RunBlockingPoolTask(); |
| 507 | 507 |
| 508 return true; | 508 return true; |
| 509 } | 509 } |
| 510 | 510 |
| 511 // Verifies that |file_path| is a valid JSON file for the hosted document | 511 // Verifies that |file_path| is a valid JSON file for the hosted document |
| 512 // associated with |entry| (i.e. |url| and |resource_id| match). | 512 // associated with |entry| (i.e. |url| and |resource_id| match). |
| 513 void VerifyHostedDocumentJSONFile(const DriveEntryProto& entry_proto, | 513 void VerifyHostedDocumentJSONFile(const DriveEntryProto& entry_proto, |
| 514 const base::FilePath& file_path) { | 514 const base::FilePath& file_path) { |
| 515 std::string error; | 515 std::string error; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 528 edit_url); | 528 edit_url); |
| 529 EXPECT_EQ(entry_proto.resource_id(), resource_id); | 529 EXPECT_EQ(entry_proto.resource_id(), resource_id); |
| 530 } | 530 } |
| 531 | 531 |
| 532 MessageLoopForUI message_loop_; | 532 MessageLoopForUI message_loop_; |
| 533 // The order of the test threads is important, do not change the order. | 533 // The order of the test threads is important, do not change the order. |
| 534 // See also content/browser/browser_thread_impl.cc. | 534 // See also content/browser/browser_thread_impl.cc. |
| 535 content::TestBrowserThread ui_thread_; | 535 content::TestBrowserThread ui_thread_; |
| 536 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; | 536 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; |
| 537 scoped_ptr<TestingProfile> profile_; | 537 scoped_ptr<TestingProfile> profile_; |
| 538 DriveCache* cache_; | 538 scoped_ptr<DriveCache, test_util::DestroyHelperForTests> cache_; |
| 539 scoped_ptr<FakeDriveUploader> fake_uploader_; | 539 scoped_ptr<FakeDriveUploader> fake_uploader_; |
| 540 DriveFileSystem* file_system_; | 540 DriveFileSystem* file_system_; |
| 541 google_apis::FakeDriveService* fake_drive_service_; | 541 google_apis::FakeDriveService* fake_drive_service_; |
| 542 scoped_ptr<DriveWebAppsRegistry> drive_webapps_registry_; | 542 scoped_ptr<DriveWebAppsRegistry> drive_webapps_registry_; |
| 543 scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_; | 543 scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_; |
| 544 scoped_ptr<StrictMock<MockDriveCacheObserver> > mock_cache_observer_; | 544 scoped_ptr<StrictMock<MockDriveCacheObserver> > mock_cache_observer_; |
| 545 scoped_ptr<StrictMock<MockDirectoryChangeObserver> > mock_directory_observer_; | 545 scoped_ptr<StrictMock<MockDirectoryChangeObserver> > mock_directory_observer_; |
| 546 | 546 |
| 547 bool expected_success_; | 547 bool expected_success_; |
| 548 std::string expected_file_extension_; | 548 std::string expected_file_extension_; |
| (...skipping 1653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2202 | 2202 |
| 2203 // An app for foo.exe should now be found, as the registry was loaded. | 2203 // An app for foo.exe should now be found, as the registry was loaded. |
| 2204 drive_webapps_registry_->GetWebAppsForFile( | 2204 drive_webapps_registry_->GetWebAppsForFile( |
| 2205 base::FilePath(FILE_PATH_LITERAL("foo.exe")), | 2205 base::FilePath(FILE_PATH_LITERAL("foo.exe")), |
| 2206 "" /* mime_type */, | 2206 "" /* mime_type */, |
| 2207 &apps); | 2207 &apps); |
| 2208 EXPECT_EQ(1U, apps.size()); | 2208 EXPECT_EQ(1U, apps.size()); |
| 2209 } | 2209 } |
| 2210 | 2210 |
| 2211 } // namespace drive | 2211 } // namespace drive |
| OLD | NEW |