| 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 <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 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 io_thread_(content::BrowserThread::IO), | 204 io_thread_(content::BrowserThread::IO), |
| 205 sequence_token_( | 205 sequence_token_( |
| 206 content::BrowserThread::GetBlockingPool()->GetSequenceToken()), | 206 content::BrowserThread::GetBlockingPool()->GetSequenceToken()), |
| 207 cache_(NULL), | 207 cache_(NULL), |
| 208 file_system_(NULL), | 208 file_system_(NULL), |
| 209 mock_doc_service_(NULL), | 209 mock_doc_service_(NULL), |
| 210 num_callback_invocations_(0), | 210 num_callback_invocations_(0), |
| 211 expected_error_(base::PLATFORM_FILE_OK), | 211 expected_error_(base::PLATFORM_FILE_OK), |
| 212 expected_cache_state_(0), | 212 expected_cache_state_(0), |
| 213 expected_sub_dir_type_(GDataCache::CACHE_TYPE_META), | 213 expected_sub_dir_type_(GDataCache::CACHE_TYPE_META), |
| 214 expected_success_(true), |
| 214 expect_outgoing_symlink_(false), | 215 expect_outgoing_symlink_(false), |
| 215 root_feed_changestamp_(0) { | 216 root_feed_changestamp_(0) { |
| 216 } | 217 } |
| 217 | 218 |
| 218 virtual void SetUp() OVERRIDE { | 219 virtual void SetUp() OVERRIDE { |
| 219 chromeos::CrosLibrary::Initialize(true /* use_stub */); | 220 chromeos::CrosLibrary::Initialize(true /* use_stub */); |
| 220 io_thread_.StartIOThread(); | 221 io_thread_.StartIOThread(); |
| 221 | 222 |
| 222 profile_.reset(new TestingProfile); | 223 profile_.reset(new TestingProfile); |
| 223 | 224 |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 724 | 725 |
| 725 cache_->UnpinOnUIThread( | 726 cache_->UnpinOnUIThread( |
| 726 resource_id, md5, | 727 resource_id, md5, |
| 727 base::Bind(&GDataFileSystemTest::VerifyCacheFileState, | 728 base::Bind(&GDataFileSystemTest::VerifyCacheFileState, |
| 728 base::Unretained(this))); | 729 base::Unretained(this))); |
| 729 | 730 |
| 730 RunAllPendingForIO(); // Post Unpin() to blocking pool. | 731 RunAllPendingForIO(); // Post Unpin() to blocking pool. |
| 731 RunAllPendingForIO(); // Post FreeDiskSpaceIfNeededFor to blocking pool. | 732 RunAllPendingForIO(); // Post FreeDiskSpaceIfNeededFor to blocking pool. |
| 732 } | 733 } |
| 733 | 734 |
| 734 void TestGetCacheState(const std::string& resource_id, const std::string& md5, | 735 void TestGetCacheState(const std::string& resource_id, |
| 735 base::PlatformFileError expected_error, | 736 const std::string& md5, |
| 736 int expected_cache_state, GDataFile* expected_file) { | 737 bool expected_success, |
| 737 expected_error_ = expected_error; | 738 int expected_cache_state, |
| 739 GDataFile* expected_file) { |
| 740 expected_success_ = expected_success; |
| 738 expected_cache_state_ = expected_cache_state; | 741 expected_cache_state_ = expected_cache_state; |
| 739 | 742 |
| 740 file_system_->GetCacheState(resource_id, md5, | 743 cache_->GetCacheEntryOnUIThread(resource_id, md5, |
| 741 base::Bind(&GDataFileSystemTest::VerifyGetCacheState, | 744 base::Bind(&GDataFileSystemTest::VerifyGetCacheState, |
| 742 base::Unretained(this))); | 745 base::Unretained(this))); |
| 743 | 746 |
| 744 RunAllPendingForIO(); | 747 RunAllPendingForIO(); |
| 745 } | 748 } |
| 746 | 749 |
| 747 void VerifyGetCacheState(base::PlatformFileError error, int cache_state) { | 750 void VerifyGetCacheState(bool success, |
| 751 const GDataCache::CacheEntry& cache_entry) { |
| 748 ++num_callback_invocations_; | 752 ++num_callback_invocations_; |
| 749 | 753 |
| 750 EXPECT_EQ(expected_error_, error); | 754 EXPECT_EQ(expected_success_, success); |
| 751 | 755 |
| 752 if (error == base::PLATFORM_FILE_OK) { | 756 if (success) { |
| 753 EXPECT_EQ(expected_cache_state_, cache_state); | 757 EXPECT_EQ(expected_cache_state_, cache_entry.cache_state); |
| 754 } | 758 } |
| 755 } | 759 } |
| 756 | 760 |
| 757 void TestMarkDirty( | 761 void TestMarkDirty( |
| 758 const std::string& resource_id, | 762 const std::string& resource_id, |
| 759 const std::string& md5, | 763 const std::string& md5, |
| 760 base::PlatformFileError expected_error, | 764 base::PlatformFileError expected_error, |
| 761 int expected_cache_state, | 765 int expected_cache_state, |
| 762 GDataCache::CacheSubDirectoryType expected_sub_dir_type) { | 766 GDataCache::CacheSubDirectoryType expected_sub_dir_type) { |
| 763 expected_error_ = expected_error; | 767 expected_error_ = expected_error; |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1320 GDataFileSystem* file_system_; | 1324 GDataFileSystem* file_system_; |
| 1321 MockDocumentsService* mock_doc_service_; | 1325 MockDocumentsService* mock_doc_service_; |
| 1322 MockFreeDiskSpaceGetter* mock_free_disk_space_checker_; | 1326 MockFreeDiskSpaceGetter* mock_free_disk_space_checker_; |
| 1323 scoped_ptr<StrictMock<MockGDataSyncClient> > mock_sync_client_; | 1327 scoped_ptr<StrictMock<MockGDataSyncClient> > mock_sync_client_; |
| 1324 scoped_ptr<StrictMock<MockDirectoryChangeObserver> > mock_directory_observer_; | 1328 scoped_ptr<StrictMock<MockDirectoryChangeObserver> > mock_directory_observer_; |
| 1325 | 1329 |
| 1326 int num_callback_invocations_; | 1330 int num_callback_invocations_; |
| 1327 base::PlatformFileError expected_error_; | 1331 base::PlatformFileError expected_error_; |
| 1328 int expected_cache_state_; | 1332 int expected_cache_state_; |
| 1329 GDataCache::CacheSubDirectoryType expected_sub_dir_type_; | 1333 GDataCache::CacheSubDirectoryType expected_sub_dir_type_; |
| 1334 bool expected_success_; |
| 1330 bool expect_outgoing_symlink_; | 1335 bool expect_outgoing_symlink_; |
| 1331 std::string expected_file_extension_; | 1336 std::string expected_file_extension_; |
| 1332 int root_feed_changestamp_; | 1337 int root_feed_changestamp_; |
| 1333 static bool cros_initialized_; | 1338 static bool cros_initialized_; |
| 1334 }; | 1339 }; |
| 1335 | 1340 |
| 1336 bool GDataFileSystemTest::cros_initialized_ = false; | 1341 bool GDataFileSystemTest::cros_initialized_ = false; |
| 1337 | 1342 |
| 1338 void AsyncInitializationCallback( | 1343 void AsyncInitializationCallback( |
| 1339 int* counter, | 1344 int* counter, |
| (...skipping 1623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2963 std::string resource_id = file->resource_id(); | 2968 std::string resource_id = file->resource_id(); |
| 2964 std::string md5 = file->file_md5(); | 2969 std::string md5 = file->file_md5(); |
| 2965 | 2970 |
| 2966 // Store a file corresponding to |resource_id| and |md5| to cache. | 2971 // Store a file corresponding to |resource_id| and |md5| to cache. |
| 2967 TestStoreToCache(resource_id, md5, GetTestFilePath("root_feed.json"), | 2972 TestStoreToCache(resource_id, md5, GetTestFilePath("root_feed.json"), |
| 2968 base::PLATFORM_FILE_OK, GDataCache::CACHE_STATE_PRESENT, | 2973 base::PLATFORM_FILE_OK, GDataCache::CACHE_STATE_PRESENT, |
| 2969 GDataCache::CACHE_TYPE_TMP); | 2974 GDataCache::CACHE_TYPE_TMP); |
| 2970 | 2975 |
| 2971 // Get its cache state. | 2976 // Get its cache state. |
| 2972 num_callback_invocations_ = 0; | 2977 num_callback_invocations_ = 0; |
| 2973 TestGetCacheState(resource_id, md5, base::PLATFORM_FILE_OK, | 2978 TestGetCacheState(resource_id, md5, true, |
| 2974 GDataCache::CACHE_STATE_PRESENT, file); | 2979 GDataCache::CACHE_STATE_PRESENT, file); |
| 2975 EXPECT_EQ(1, num_callback_invocations_); | 2980 EXPECT_EQ(1, num_callback_invocations_); |
| 2976 } | 2981 } |
| 2977 | 2982 |
| 2978 { // Test cache state of an existing pinned file. | 2983 { // Test cache state of an existing pinned file. |
| 2979 // Retrieve resource id and md5 of a file from file system. | 2984 // Retrieve resource id and md5 of a file from file system. |
| 2980 FilePath file_path( | 2985 FilePath file_path( |
| 2981 FILE_PATH_LITERAL("drive/Directory 1/SubDirectory File 1.txt")); | 2986 FILE_PATH_LITERAL("drive/Directory 1/SubDirectory File 1.txt")); |
| 2982 GDataEntry* entry = FindEntry(file_path); | 2987 GDataEntry* entry = FindEntry(file_path); |
| 2983 ASSERT_TRUE(entry != NULL); | 2988 ASSERT_TRUE(entry != NULL); |
| 2984 GDataFile* file = entry->AsGDataFile(); | 2989 GDataFile* file = entry->AsGDataFile(); |
| 2985 ASSERT_TRUE(file != NULL); | 2990 ASSERT_TRUE(file != NULL); |
| 2986 std::string resource_id = file->resource_id(); | 2991 std::string resource_id = file->resource_id(); |
| 2987 std::string md5 = file->file_md5(); | 2992 std::string md5 = file->file_md5(); |
| 2988 | 2993 |
| 2989 EXPECT_CALL(*mock_sync_client_, OnCachePinned(resource_id, md5)).Times(1); | 2994 EXPECT_CALL(*mock_sync_client_, OnCachePinned(resource_id, md5)).Times(1); |
| 2990 | 2995 |
| 2991 // Store a file corresponding to |resource_id| and |md5| to cache, and pin | 2996 // Store a file corresponding to |resource_id| and |md5| to cache, and pin |
| 2992 // it. | 2997 // it. |
| 2993 int expected_cache_state = GDataCache::CACHE_STATE_PRESENT | | 2998 int expected_cache_state = GDataCache::CACHE_STATE_PRESENT | |
| 2994 GDataCache::CACHE_STATE_PINNED; | 2999 GDataCache::CACHE_STATE_PINNED; |
| 2995 TestStoreToCache(resource_id, md5, GetTestFilePath("root_feed.json"), | 3000 TestStoreToCache(resource_id, md5, GetTestFilePath("root_feed.json"), |
| 2996 base::PLATFORM_FILE_OK, GDataCache::CACHE_STATE_PRESENT, | 3001 base::PLATFORM_FILE_OK, GDataCache::CACHE_STATE_PRESENT, |
| 2997 GDataCache::CACHE_TYPE_TMP); | 3002 GDataCache::CACHE_TYPE_TMP); |
| 2998 TestPin(resource_id, md5, base::PLATFORM_FILE_OK, expected_cache_state, | 3003 TestPin(resource_id, md5, base::PLATFORM_FILE_OK, expected_cache_state, |
| 2999 GDataCache::CACHE_TYPE_PERSISTENT); | 3004 GDataCache::CACHE_TYPE_PERSISTENT); |
| 3000 | 3005 |
| 3001 // Get its cache state. | 3006 // Get its cache state. |
| 3002 num_callback_invocations_ = 0; | 3007 num_callback_invocations_ = 0; |
| 3003 TestGetCacheState(resource_id, md5, base::PLATFORM_FILE_OK, | 3008 TestGetCacheState(resource_id, md5, true, |
| 3004 expected_cache_state, file); | 3009 expected_cache_state, file); |
| 3005 EXPECT_EQ(1, num_callback_invocations_); | 3010 EXPECT_EQ(1, num_callback_invocations_); |
| 3006 } | 3011 } |
| 3007 | 3012 |
| 3008 { // Test cache state of a non-existent file. | 3013 { // Test cache state of a non-existent file. |
| 3009 num_callback_invocations_ = 0; | 3014 num_callback_invocations_ = 0; |
| 3010 TestGetCacheState("pdf:12345", "abcd", base::PLATFORM_FILE_ERROR_NOT_FOUND, | 3015 TestGetCacheState("pdf:12345", "abcd", false, |
| 3011 0, NULL); | 3016 0, NULL); |
| 3012 EXPECT_EQ(1, num_callback_invocations_); | 3017 EXPECT_EQ(1, num_callback_invocations_); |
| 3013 } | 3018 } |
| 3014 } | 3019 } |
| 3015 | 3020 |
| 3016 TEST_F(GDataFileSystemTest, InitializeCache) { | 3021 TEST_F(GDataFileSystemTest, InitializeCache) { |
| 3017 PrepareForInitCacheTest(); | 3022 PrepareForInitCacheTest(); |
| 3018 TestInitializeCache(); | 3023 TestInitializeCache(); |
| 3019 } | 3024 } |
| 3020 | 3025 |
| (...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3693 | 3698 |
| 3694 // Try to close the same file twice. | 3699 // Try to close the same file twice. |
| 3695 file_system_->CloseFile(kFileInRoot, close_file_callback); | 3700 file_system_->CloseFile(kFileInRoot, close_file_callback); |
| 3696 message_loop_.Run(); | 3701 message_loop_.Run(); |
| 3697 | 3702 |
| 3698 // It must fail. | 3703 // It must fail. |
| 3699 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); | 3704 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); |
| 3700 } | 3705 } |
| 3701 | 3706 |
| 3702 } // namespace gdata | 3707 } // namespace gdata |
| OLD | NEW |