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 <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 // Loads serialized proto file from GCache, and makes sure the root | 647 // Loads serialized proto file from GCache, and makes sure the root |
648 // filesystem has a root at 'drive' | 648 // filesystem has a root at 'drive' |
649 void TestLoadMetadataFromCache() { | 649 void TestLoadMetadataFromCache() { |
650 file_system_->LoadRootFeedFromCacheForTesting(); | 650 file_system_->LoadRootFeedFromCacheForTesting(); |
651 test_util::RunBlockingPoolTask(); | 651 test_util::RunBlockingPoolTask(); |
652 } | 652 } |
653 | 653 |
654 // Creates a proto file representing a filesystem with directories: | 654 // Creates a proto file representing a filesystem with directories: |
655 // drive, drive/Dir1, drive/Dir1/SubDir2 | 655 // drive, drive/Dir1, drive/Dir1/SubDir2 |
656 // and files | 656 // and files |
657 // drive/File1, drive/Dir1/File2, drive/Dir1/SubDir2/File3 | 657 // drive/File1, drive/Dir1/File2, drive/Dir1/SubDir2/File3. |
| 658 // Sets the changestamp to 654321, equal to that of "account_metadata.json" |
| 659 // test data, indicating the cache is holding the latest file system info. |
658 void SaveTestFileSystem() { | 660 void SaveTestFileSystem() { |
659 GDataRootDirectoryProto root; | 661 GDataRootDirectoryProto root; |
660 root.set_version(kProtoVersion); | 662 root.set_version(kProtoVersion); |
| 663 root.set_largest_changestamp(654321); |
661 GDataDirectoryProto* root_dir = root.mutable_gdata_directory(); | 664 GDataDirectoryProto* root_dir = root.mutable_gdata_directory(); |
662 GDataEntryProto* dir_base = root_dir->mutable_gdata_entry(); | 665 GDataEntryProto* dir_base = root_dir->mutable_gdata_entry(); |
663 PlatformFileInfoProto* platform_info = dir_base->mutable_file_info(); | 666 PlatformFileInfoProto* platform_info = dir_base->mutable_file_info(); |
664 dir_base->set_title("drive"); | 667 dir_base->set_title("drive"); |
665 dir_base->set_resource_id(kGDataRootDirectoryResourceId); | 668 dir_base->set_resource_id(kGDataRootDirectoryResourceId); |
666 dir_base->set_upload_url("http://resumable-create-media/1"); | 669 dir_base->set_upload_url("http://resumable-create-media/1"); |
667 platform_info->set_is_directory(true); | 670 platform_info->set_is_directory(true); |
668 | 671 |
669 // drive/File1 | 672 // drive/File1 |
670 GDataEntryProto* file = root_dir->add_child_files(); | 673 GDataEntryProto* file = root_dir->add_child_files(); |
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1205 TestLoadMetadataFromCache(); | 1208 TestLoadMetadataFromCache(); |
1206 | 1209 |
1207 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/File1")))); | 1210 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/File1")))); |
1208 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/Dir1")))); | 1211 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/Dir1")))); |
1209 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/Dir1/File2")))); | 1212 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/Dir1/File2")))); |
1210 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2")))); | 1213 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2")))); |
1211 EXPECT_TRUE(EntryExists( | 1214 EXPECT_TRUE(EntryExists( |
1212 FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2/File3")))); | 1215 FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2/File3")))); |
1213 } | 1216 } |
1214 | 1217 |
| 1218 TEST_F(GDataFileSystemTest, CachedFeadLoadingThenServerFeedLoading) { |
| 1219 SaveTestFileSystem(); |
| 1220 |
| 1221 // SaveTestFileSystem and "account_metadata.json" have the same changestamp, |
| 1222 // so no request for new feeds (i.e., call to GetDocuments) should happen. |
| 1223 mock_doc_service_->set_account_metadata( |
| 1224 LoadJSONFile("account_metadata.json")); |
| 1225 EXPECT_CALL(*mock_doc_service_, GetAccountMetadata(_)).Times(1); |
| 1226 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(NotNull())).Times(1); |
| 1227 EXPECT_CALL(*mock_doc_service_, GetDocuments(_, _, _, _, _)).Times(0); |
| 1228 |
| 1229 // Kicks loading of cached file system and query for server update. |
| 1230 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/File1")))); |
| 1231 |
| 1232 // Since the file system has verified that it holds the latest snapshot, |
| 1233 // it should change its state to FROM_SERVER, which admits periodic refresh. |
| 1234 // To test it, call CheckForUpdates and verify it does try to check updates. |
| 1235 mock_doc_service_->set_account_metadata( |
| 1236 LoadJSONFile("account_metadata.json")); |
| 1237 EXPECT_CALL(*mock_doc_service_, GetAccountMetadata(_)).Times(1); |
| 1238 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(NotNull())).Times(1); |
| 1239 |
| 1240 file_system_->CheckForUpdates(); |
| 1241 test_util::RunBlockingPoolTask(); |
| 1242 } |
| 1243 |
1215 TEST_F(GDataFileSystemTest, TransferFileFromLocalToRemote_RegularFile) { | 1244 TEST_F(GDataFileSystemTest, TransferFileFromLocalToRemote_RegularFile) { |
1216 LoadRootFeedDocument("root_feed.json"); | 1245 LoadRootFeedDocument("root_feed.json"); |
1217 | 1246 |
1218 // We'll add a file to the Drive root directory. | 1247 // We'll add a file to the Drive root directory. |
1219 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1248 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1220 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1249 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); |
1221 | 1250 |
1222 FileOperationCallback callback = | 1251 FileOperationCallback callback = |
1223 base::Bind(&CallbackHelper::FileOperationCallback, | 1252 base::Bind(&CallbackHelper::FileOperationCallback, |
1224 callback_helper_.get()); | 1253 callback_helper_.get()); |
(...skipping 1331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2556 | 2585 |
2557 // Try to close the same file twice. | 2586 // Try to close the same file twice. |
2558 file_system_->CloseFile(kFileInRoot, close_file_callback); | 2587 file_system_->CloseFile(kFileInRoot, close_file_callback); |
2559 message_loop_.Run(); | 2588 message_loop_.Run(); |
2560 | 2589 |
2561 // It must fail. | 2590 // It must fail. |
2562 EXPECT_EQ(GDATA_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); | 2591 EXPECT_EQ(GDATA_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); |
2563 } | 2592 } |
2564 | 2593 |
2565 } // namespace gdata | 2594 } // namespace gdata |
OLD | NEW |