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" |
11 #include "base/file_path.h" | 11 #include "base/file_path.h" |
12 #include "base/file_util.h" | 12 #include "base/file_util.h" |
| 13 #include "base/files/scoped_temp_dir.h" |
13 #include "base/json/json_file_value_serializer.h" | 14 #include "base/json/json_file_value_serializer.h" |
14 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
15 #include "base/message_loop.h" | 16 #include "base/message_loop.h" |
16 #include "base/path_service.h" | 17 #include "base/path_service.h" |
17 #include "base/scoped_temp_dir.h" | |
18 #include "base/stringprintf.h" | 18 #include "base/stringprintf.h" |
19 #include "base/threading/sequenced_worker_pool.h" | 19 #include "base/threading/sequenced_worker_pool.h" |
20 #include "base/values.h" | 20 #include "base/values.h" |
21 #include "chrome/browser/chromeos/drive/drive.pb.h" | 21 #include "chrome/browser/chromeos/drive/drive.pb.h" |
22 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" | 22 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" |
23 #include "chrome/browser/chromeos/drive/drive_test_util.h" | 23 #include "chrome/browser/chromeos/drive/drive_test_util.h" |
24 #include "chrome/browser/chromeos/drive/drive_webapps_registry.h" | 24 #include "chrome/browser/chromeos/drive/drive_webapps_registry.h" |
25 #include "chrome/browser/chromeos/drive/file_system/remove_operation.h" | 25 #include "chrome/browser/chromeos/drive/file_system/remove_operation.h" |
26 #include "chrome/browser/chromeos/drive/mock_directory_change_observer.h" | 26 #include "chrome/browser/chromeos/drive/mock_directory_change_observer.h" |
27 #include "chrome/browser/chromeos/drive/mock_drive_cache_observer.h" | 27 #include "chrome/browser/chromeos/drive/mock_drive_cache_observer.h" |
(...skipping 1241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1269 | 1269 |
1270 // We'll add a file to the Drive root directory. | 1270 // We'll add a file to the Drive root directory. |
1271 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1271 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1272 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1272 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); |
1273 | 1273 |
1274 FileOperationCallback callback = | 1274 FileOperationCallback callback = |
1275 base::Bind(&CallbackHelper::FileOperationCallback, | 1275 base::Bind(&CallbackHelper::FileOperationCallback, |
1276 callback_helper_.get()); | 1276 callback_helper_.get()); |
1277 | 1277 |
1278 // Prepare a local file. | 1278 // Prepare a local file. |
1279 ScopedTempDir temp_dir; | 1279 base::ScopedTempDir temp_dir; |
1280 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1280 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
1281 const FilePath local_src_file_path = temp_dir.path().Append("local.txt"); | 1281 const FilePath local_src_file_path = temp_dir.path().Append("local.txt"); |
1282 const std::string kContent = "hello"; | 1282 const std::string kContent = "hello"; |
1283 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); | 1283 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); |
1284 | 1284 |
1285 // Confirm that the remote file does not exist. | 1285 // Confirm that the remote file does not exist. |
1286 const FilePath remote_dest_file_path(FILE_PATH_LITERAL("drive/remote.txt")); | 1286 const FilePath remote_dest_file_path(FILE_PATH_LITERAL("drive/remote.txt")); |
1287 EXPECT_FALSE(EntryExists(remote_dest_file_path)); | 1287 EXPECT_FALSE(EntryExists(remote_dest_file_path)); |
1288 | 1288 |
1289 scoped_ptr<base::Value> value = | 1289 scoped_ptr<base::Value> value = |
(...skipping 13 matching lines...) Expand all Loading... |
1303 | 1303 |
1304 // Now the remote file should exist. | 1304 // Now the remote file should exist. |
1305 EXPECT_TRUE(EntryExists(remote_dest_file_path)); | 1305 EXPECT_TRUE(EntryExists(remote_dest_file_path)); |
1306 } | 1306 } |
1307 | 1307 |
1308 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_HostedDocument) { | 1308 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_HostedDocument) { |
1309 ASSERT_TRUE(LoadRootFeedDocument("gdata/root_feed.json")); | 1309 ASSERT_TRUE(LoadRootFeedDocument("gdata/root_feed.json")); |
1310 | 1310 |
1311 // Prepare a local file, which is a json file of a hosted document, which | 1311 // Prepare a local file, which is a json file of a hosted document, which |
1312 // matches "Document 1" in root_feed.json. | 1312 // matches "Document 1" in root_feed.json. |
1313 ScopedTempDir temp_dir; | 1313 base::ScopedTempDir temp_dir; |
1314 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1314 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
1315 const FilePath local_src_file_path = temp_dir.path().Append("local.gdoc"); | 1315 const FilePath local_src_file_path = temp_dir.path().Append("local.gdoc"); |
1316 const std::string kEditUrl = | 1316 const std::string kEditUrl = |
1317 "https://3_document_self_link/document:5_document_resource_id"; | 1317 "https://3_document_self_link/document:5_document_resource_id"; |
1318 const std::string kResourceId = "document:5_document_resource_id"; | 1318 const std::string kResourceId = "document:5_document_resource_id"; |
1319 const std::string kContent = | 1319 const std::string kContent = |
1320 base::StringPrintf("{\"url\": \"%s\", \"resource_id\": \"%s\"}", | 1320 base::StringPrintf("{\"url\": \"%s\", \"resource_id\": \"%s\"}", |
1321 kEditUrl.c_str(), kResourceId.c_str()); | 1321 kEditUrl.c_str(), kResourceId.c_str()); |
1322 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); | 1322 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); |
1323 | 1323 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1358 EXPECT_TRUE(EntryExists(remote_dest_file_path)); | 1358 EXPECT_TRUE(EntryExists(remote_dest_file_path)); |
1359 } | 1359 } |
1360 | 1360 |
1361 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_RegularFile) { | 1361 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_RegularFile) { |
1362 ASSERT_TRUE(LoadRootFeedDocument("gdata/root_feed.json")); | 1362 ASSERT_TRUE(LoadRootFeedDocument("gdata/root_feed.json")); |
1363 | 1363 |
1364 FileOperationCallback callback = | 1364 FileOperationCallback callback = |
1365 base::Bind(&CallbackHelper::FileOperationCallback, | 1365 base::Bind(&CallbackHelper::FileOperationCallback, |
1366 callback_helper_.get()); | 1366 callback_helper_.get()); |
1367 | 1367 |
1368 ScopedTempDir temp_dir; | 1368 base::ScopedTempDir temp_dir; |
1369 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1369 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
1370 FilePath local_dest_file_path = temp_dir.path().Append("local_copy.txt"); | 1370 FilePath local_dest_file_path = temp_dir.path().Append("local_copy.txt"); |
1371 | 1371 |
1372 FilePath remote_src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); | 1372 FilePath remote_src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); |
1373 scoped_ptr<DriveEntryProto> file = GetEntryInfoByPathSync( | 1373 scoped_ptr<DriveEntryProto> file = GetEntryInfoByPathSync( |
1374 remote_src_file_path); | 1374 remote_src_file_path); |
1375 FilePath cache_file = GetCachePathForFile( | 1375 FilePath cache_file = GetCachePathForFile( |
1376 file->resource_id(), | 1376 file->resource_id(), |
1377 file->file_specific_info().file_md5()); | 1377 file->file_specific_info().file_md5()); |
1378 const int64 file_size = file->file_info().size(); | 1378 const int64 file_size = file->file_info().size(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1414 EXPECT_EQ(remote_src_file_data, local_dest_file_data); | 1414 EXPECT_EQ(remote_src_file_data, local_dest_file_data); |
1415 } | 1415 } |
1416 | 1416 |
1417 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_HostedDocument) { | 1417 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_HostedDocument) { |
1418 ASSERT_TRUE(LoadRootFeedDocument("gdata/root_feed.json")); | 1418 ASSERT_TRUE(LoadRootFeedDocument("gdata/root_feed.json")); |
1419 | 1419 |
1420 FileOperationCallback callback = | 1420 FileOperationCallback callback = |
1421 base::Bind(&CallbackHelper::FileOperationCallback, | 1421 base::Bind(&CallbackHelper::FileOperationCallback, |
1422 callback_helper_.get()); | 1422 callback_helper_.get()); |
1423 | 1423 |
1424 ScopedTempDir temp_dir; | 1424 base::ScopedTempDir temp_dir; |
1425 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1425 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
1426 FilePath local_dest_file_path = temp_dir.path().Append("local_copy.txt"); | 1426 FilePath local_dest_file_path = temp_dir.path().Append("local_copy.txt"); |
1427 FilePath remote_src_file_path(FILE_PATH_LITERAL("drive/Document 1.gdoc")); | 1427 FilePath remote_src_file_path(FILE_PATH_LITERAL("drive/Document 1.gdoc")); |
1428 file_system_->TransferFileFromRemoteToLocal( | 1428 file_system_->TransferFileFromRemoteToLocal( |
1429 remote_src_file_path, local_dest_file_path, callback); | 1429 remote_src_file_path, local_dest_file_path, callback); |
1430 google_apis::test_util::RunBlockingPoolTask(); | 1430 google_apis::test_util::RunBlockingPoolTask(); |
1431 | 1431 |
1432 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); | 1432 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); |
1433 | 1433 |
1434 scoped_ptr<DriveEntryProto> entry_proto = GetEntryInfoByPathSync( | 1434 scoped_ptr<DriveEntryProto> entry_proto = GetEntryInfoByPathSync( |
(...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2698 | 2698 |
2699 // Try to close the same file twice. | 2699 // Try to close the same file twice. |
2700 file_system_->CloseFile(kFileInRoot, close_file_callback); | 2700 file_system_->CloseFile(kFileInRoot, close_file_callback); |
2701 message_loop_.Run(); | 2701 message_loop_.Run(); |
2702 | 2702 |
2703 // It must fail. | 2703 // It must fail. |
2704 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); | 2704 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); |
2705 } | 2705 } |
2706 | 2706 |
2707 } // namespace drive | 2707 } // namespace drive |
OLD | NEW |