Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(502)

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc

Issue 10581038: chromeos: Stop returning scoped_ptr from GDataCache::GetCacheEntry (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: _ Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <errno.h> 5 #include <errno.h>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 FilePath GetCacheFilePath(const std::string& resource_id, 415 FilePath GetCacheFilePath(const std::string& resource_id,
416 const std::string& md5, 416 const std::string& md5,
417 GDataCache::CacheSubDirectoryType sub_dir_type, 417 GDataCache::CacheSubDirectoryType sub_dir_type,
418 GDataCache::CachedFileOrigin file_origin) { 418 GDataCache::CachedFileOrigin file_origin) {
419 return cache_->GetCacheFilePath(resource_id, md5, sub_dir_type, 419 return cache_->GetCacheFilePath(resource_id, md5, sub_dir_type,
420 file_origin); 420 file_origin);
421 } 421 }
422 422
423 // Helper function to call GetCacheEntry from origin thread. 423 // Helper function to call GetCacheEntry from origin thread.
424 // Note: This method calls RunAllPendingForIO. 424 // Note: This method calls RunAllPendingForIO.
425 scoped_ptr<GDataCache::CacheEntry> GetCacheEntryFromOriginThread( 425 bool GetCacheEntryFromOriginThread(const std::string& resource_id,
426 const std::string& resource_id, 426 const std::string& md5,
427 const std::string& md5) { 427 GDataCache::CacheEntry* cache_entry) {
428 scoped_ptr<GDataCache::CacheEntry> cache_entry; 428 bool success = false;
429 content::BrowserThread::GetBlockingPool() 429 content::BrowserThread::GetBlockingPool()
430 ->GetSequencedTaskRunner(sequence_token_)->PostTask( 430 ->GetSequencedTaskRunner(sequence_token_)->PostTask(
431 FROM_HERE, 431 FROM_HERE,
432 base::Bind( 432 base::Bind(
433 &GDataFileSystemTest::GetCacheEntryFromOriginThreadInternal, 433 &GDataFileSystemTest::GetCacheEntryFromOriginThreadInternal,
434 base::Unretained(this), 434 base::Unretained(this),
435 resource_id, 435 resource_id,
436 md5, 436 md5,
437 &cache_entry)); 437 cache_entry,
438 &success));
438 RunAllPendingForIO(); 439 RunAllPendingForIO();
439 return cache_entry.Pass(); 440 return success;
440 } 441 }
441 442
442 // Used to implement GetCacheEntry. 443 // Used to implement GetCacheEntry.
443 void GetCacheEntryFromOriginThreadInternal( 444 void GetCacheEntryFromOriginThreadInternal(
444 const std::string& resource_id, 445 const std::string& resource_id,
445 const std::string& md5, 446 const std::string& md5,
446 scoped_ptr<GDataCache::CacheEntry>* cache_entry) { 447 GDataCache::CacheEntry* cache_entry,
447 cache_entry->reset(cache_->GetCacheEntry(resource_id, md5).release()); 448 bool* success) {
449 *success = cache_->GetCacheEntry(resource_id, md5, cache_entry);
448 } 450 }
449 451
450 // Returns true if the cache entry exists for the given resource ID and MD5. 452 // Returns true if the cache entry exists for the given resource ID and MD5.
451 bool CacheEntryExists(const std::string& resource_id, 453 bool CacheEntryExists(const std::string& resource_id,
452 const std::string& md5) { 454 const std::string& md5) {
453 return GetCacheEntryFromOriginThread(resource_id, md5).get(); 455 GDataCache::CacheEntry cache_entry;
456 return GetCacheEntryFromOriginThread(resource_id, md5, &cache_entry);
454 } 457 }
455 458
456 // Returns true if the cache file exists for the given resource ID and MD5. 459 // Returns true if the cache file exists for the given resource ID and MD5.
457 bool CacheFileExists(const std::string& resource_id, 460 bool CacheFileExists(const std::string& resource_id,
458 const std::string& md5) { 461 const std::string& md5) {
459 const FilePath file_path = cache_->GetCacheFilePath( 462 const FilePath file_path = cache_->GetCacheFilePath(
460 resource_id, 463 resource_id,
461 md5, 464 md5,
462 GDataCache::CACHE_TYPE_TMP, 465 GDataCache::CACHE_TYPE_TMP,
463 GDataCache::CACHED_FILE_FROM_SERVER); 466 GDataCache::CACHED_FILE_FROM_SERVER);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 } 562 }
560 563
561 void VerifyRemoveFromCache(base::PlatformFileError error, 564 void VerifyRemoveFromCache(base::PlatformFileError error,
562 const std::string& resource_id, 565 const std::string& resource_id,
563 const std::string& md5) { 566 const std::string& md5) {
564 ++num_callback_invocations_; 567 ++num_callback_invocations_;
565 568
566 EXPECT_EQ(expected_error_, error); 569 EXPECT_EQ(expected_error_, error);
567 570
568 // Verify cache map. 571 // Verify cache map.
569 scoped_ptr<GDataCache::CacheEntry> cache_entry = 572 GDataCache::CacheEntry cache_entry;
570 GetCacheEntryFromOriginThread(resource_id, md5); 573 const bool cache_entry_found =
571 if (cache_entry.get()) 574 GetCacheEntryFromOriginThread(resource_id, md5, &cache_entry);
572 EXPECT_TRUE(cache_entry->IsDirty()); 575 if (cache_entry_found)
576 EXPECT_TRUE(cache_entry.IsDirty());
573 577
574 // If entry doesn't exist, verify that: 578 // If entry doesn't exist, verify that:
575 // - no files with "<resource_id>.* exists in persistent and tmp dirs 579 // - no files with "<resource_id>.* exists in persistent and tmp dirs
576 // - no "<resource_id>" symlink exists in pinned and outgoing dirs. 580 // - no "<resource_id>" symlink exists in pinned and outgoing dirs.
577 std::vector<PathToVerify> paths_to_verify; 581 std::vector<PathToVerify> paths_to_verify;
578 paths_to_verify.push_back( // Index 0: CACHE_TYPE_TMP. 582 paths_to_verify.push_back( // Index 0: CACHE_TYPE_TMP.
579 PathToVerify(cache_->GetCacheFilePath(resource_id, "*", 583 PathToVerify(cache_->GetCacheFilePath(resource_id, "*",
580 GDataCache::CACHE_TYPE_TMP, 584 GDataCache::CACHE_TYPE_TMP,
581 GDataCache::CACHED_FILE_FROM_SERVER), FilePath())); 585 GDataCache::CACHED_FILE_FROM_SERVER), FilePath()));
582 paths_to_verify.push_back( // Index 1: CACHE_TYPE_PERSISTENT. 586 paths_to_verify.push_back( // Index 1: CACHE_TYPE_PERSISTENT.
583 PathToVerify(cache_->GetCacheFilePath(resource_id, "*", 587 PathToVerify(cache_->GetCacheFilePath(resource_id, "*",
584 GDataCache::CACHE_TYPE_PERSISTENT, 588 GDataCache::CACHE_TYPE_PERSISTENT,
585 GDataCache::CACHED_FILE_FROM_SERVER), FilePath())); 589 GDataCache::CACHED_FILE_FROM_SERVER), FilePath()));
586 paths_to_verify.push_back( // Index 2: CACHE_TYPE_PINNED. 590 paths_to_verify.push_back( // Index 2: CACHE_TYPE_PINNED.
587 PathToVerify(cache_->GetCacheFilePath(resource_id, "", 591 PathToVerify(cache_->GetCacheFilePath(resource_id, "",
588 GDataCache::CACHE_TYPE_PINNED, 592 GDataCache::CACHE_TYPE_PINNED,
589 GDataCache::CACHED_FILE_FROM_SERVER), FilePath())); 593 GDataCache::CACHED_FILE_FROM_SERVER), FilePath()));
590 paths_to_verify.push_back( // Index 3: CACHE_TYPE_OUTGOING. 594 paths_to_verify.push_back( // Index 3: CACHE_TYPE_OUTGOING.
591 PathToVerify(cache_->GetCacheFilePath(resource_id, "", 595 PathToVerify(cache_->GetCacheFilePath(resource_id, "",
592 GDataCache::CACHE_TYPE_OUTGOING, 596 GDataCache::CACHE_TYPE_OUTGOING,
593 GDataCache::CACHED_FILE_FROM_SERVER), FilePath())); 597 GDataCache::CACHED_FILE_FROM_SERVER), FilePath()));
594 if (!cache_entry.get()) { 598 if (!cache_entry_found) {
595 for (size_t i = 0; i < paths_to_verify.size(); ++i) { 599 for (size_t i = 0; i < paths_to_verify.size(); ++i) {
596 file_util::FileEnumerator enumerator( 600 file_util::FileEnumerator enumerator(
597 paths_to_verify[i].path_to_scan.DirName(), false /* not recursive*/, 601 paths_to_verify[i].path_to_scan.DirName(), false /* not recursive*/,
598 static_cast<file_util::FileEnumerator::FileType>( 602 static_cast<file_util::FileEnumerator::FileType>(
599 file_util::FileEnumerator::FILES | 603 file_util::FileEnumerator::FILES |
600 file_util::FileEnumerator::SHOW_SYM_LINKS), 604 file_util::FileEnumerator::SHOW_SYM_LINKS),
601 paths_to_verify[i].path_to_scan.BaseName().value()); 605 paths_to_verify[i].path_to_scan.BaseName().value());
602 EXPECT_TRUE(enumerator.Next().empty()); 606 EXPECT_TRUE(enumerator.Next().empty());
603 } 607 }
604 } else { 608 } else {
(...skipping 10 matching lines...) Expand all
615 GDataCache::CACHE_TYPE_PERSISTENT, 619 GDataCache::CACHE_TYPE_PERSISTENT,
616 GDataCache::CACHED_FILE_LOCALLY_MODIFIED); 620 GDataCache::CACHED_FILE_LOCALLY_MODIFIED);
617 621
618 // Change expected_existing_path of CACHE_TYPE_OUTGOING (index 3). 622 // Change expected_existing_path of CACHE_TYPE_OUTGOING (index 3).
619 paths_to_verify[3].expected_existing_path = 623 paths_to_verify[3].expected_existing_path =
620 GetCacheFilePath(resource_id, 624 GetCacheFilePath(resource_id,
621 std::string(), 625 std::string(),
622 GDataCache::CACHE_TYPE_OUTGOING, 626 GDataCache::CACHE_TYPE_OUTGOING,
623 GDataCache::CACHED_FILE_FROM_SERVER); 627 GDataCache::CACHED_FILE_FROM_SERVER);
624 628
625 if (cache_entry->IsPinned()) { 629 if (cache_entry.IsPinned()) {
626 // Change expected_existing_path of CACHE_TYPE_PINNED (index 2). 630 // Change expected_existing_path of CACHE_TYPE_PINNED (index 2).
627 paths_to_verify[2].expected_existing_path = 631 paths_to_verify[2].expected_existing_path =
628 GetCacheFilePath(resource_id, 632 GetCacheFilePath(resource_id,
629 std::string(), 633 std::string(),
630 GDataCache::CACHE_TYPE_PINNED, 634 GDataCache::CACHE_TYPE_PINNED,
631 GDataCache::CACHED_FILE_FROM_SERVER); 635 GDataCache::CACHED_FILE_FROM_SERVER);
632 } 636 }
633 637
634 for (size_t i = 0; i < paths_to_verify.size(); ++i) { 638 for (size_t i = 0; i < paths_to_verify.size(); ++i) {
635 const struct PathToVerify& verify = paths_to_verify[i]; 639 const struct PathToVerify& verify = paths_to_verify[i];
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 GDataCache::IsCachePresent(resource.cache_state) ? 939 GDataCache::IsCachePresent(resource.cache_state) ?
936 base::PLATFORM_FILE_OK : 940 base::PLATFORM_FILE_OK :
937 base::PLATFORM_FILE_ERROR_NOT_FOUND, 941 base::PLATFORM_FILE_ERROR_NOT_FOUND,
938 resource.expected_file_extension); 942 resource.expected_file_extension);
939 EXPECT_EQ(1, num_callback_invocations_); 943 EXPECT_EQ(1, num_callback_invocations_);
940 944
941 // Verify cache state. 945 // Verify cache state.
942 std::string md5; 946 std::string md5;
943 if (GDataCache::IsCachePresent(resource.cache_state)) 947 if (GDataCache::IsCachePresent(resource.cache_state))
944 md5 = resource.md5; 948 md5 = resource.md5;
945 scoped_ptr<GDataCache::CacheEntry> cache_entry = 949 GDataCache::CacheEntry cache_entry;
946 GetCacheEntryFromOriginThread(resource.resource_id, md5); 950 ASSERT_TRUE(GetCacheEntryFromOriginThread(
947 ASSERT_TRUE(cache_entry.get()); 951 resource.resource_id, md5, &cache_entry));
948 EXPECT_EQ(resource.cache_state, cache_entry->cache_state); 952 EXPECT_EQ(resource.cache_state, cache_entry.cache_state);
949 EXPECT_EQ(resource.expected_sub_dir_type, cache_entry->sub_dir_type); 953 EXPECT_EQ(resource.expected_sub_dir_type, cache_entry.sub_dir_type);
950 } 954 }
951 } 955 }
952 956
953 void VerifyCacheFileState(base::PlatformFileError error, 957 void VerifyCacheFileState(base::PlatformFileError error,
954 const std::string& resource_id, 958 const std::string& resource_id,
955 const std::string& md5) { 959 const std::string& md5) {
956 ++num_callback_invocations_; 960 ++num_callback_invocations_;
957 961
958 EXPECT_EQ(expected_error_, error); 962 EXPECT_EQ(expected_error_, error);
959 963
960 // Verify cache map. 964 // Verify cache map.
961 scoped_ptr<GDataCache::CacheEntry> cache_entry = 965 GDataCache::CacheEntry cache_entry;
962 GetCacheEntryFromOriginThread(resource_id, md5);
963 if (GDataCache::IsCachePresent(expected_cache_state_) || 966 if (GDataCache::IsCachePresent(expected_cache_state_) ||
964 GDataCache::IsCachePinned(expected_cache_state_)) { 967 GDataCache::IsCachePinned(expected_cache_state_)) {
965 ASSERT_TRUE(cache_entry.get()); 968 ASSERT_TRUE(GetCacheEntryFromOriginThread(
966 EXPECT_EQ(expected_cache_state_, cache_entry->cache_state); 969 resource_id, md5, &cache_entry));
967 EXPECT_EQ(expected_sub_dir_type_, cache_entry->sub_dir_type); 970 EXPECT_EQ(expected_cache_state_, cache_entry.cache_state);
971 EXPECT_EQ(expected_sub_dir_type_, cache_entry.sub_dir_type);
968 } else { 972 } else {
969 EXPECT_FALSE(cache_entry.get()); 973 EXPECT_FALSE(GetCacheEntryFromOriginThread(
974 resource_id, md5, &cache_entry));
970 } 975 }
971 976
972 // Verify actual cache file. 977 // Verify actual cache file.
973 FilePath dest_path = cache_->GetCacheFilePath( 978 FilePath dest_path = cache_->GetCacheFilePath(
974 resource_id, 979 resource_id,
975 md5, 980 md5,
976 GDataCache::IsCachePinned(expected_cache_state_) || 981 GDataCache::IsCachePinned(expected_cache_state_) ||
977 GDataCache::IsCacheDirty(expected_cache_state_) ? 982 GDataCache::IsCacheDirty(expected_cache_state_) ?
978 GDataCache::CACHE_TYPE_PERSISTENT : 983 GDataCache::CACHE_TYPE_PERSISTENT :
979 GDataCache::CACHE_TYPE_TMP, 984 GDataCache::CACHE_TYPE_TMP,
(...skipping 2511 matching lines...) Expand 10 before | Expand all | Expand 10 after
3491 3496
3492 // Try to close the same file twice. 3497 // Try to close the same file twice.
3493 file_system_->CloseFile(kFileInRoot, close_file_callback); 3498 file_system_->CloseFile(kFileInRoot, close_file_callback);
3494 message_loop_.Run(); 3499 message_loop_.Run();
3495 3500
3496 // It must fail. 3501 // It must fail.
3497 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); 3502 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
3498 } 3503 }
3499 3504
3500 } // namespace gdata 3505 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698