| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/file_system/copy_operation.h" | 5 #include "chrome/browser/chromeos/drive/file_system/copy_operation.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/task_runner_util.h" | 8 #include "base/task_runner_util.h" |
| 9 #include "chrome/browser/chromeos/drive/file_cache.h" | 9 #include "chrome/browser/chromeos/drive/file_cache.h" |
| 10 #include "chrome/browser/chromeos/drive/file_change.h" | 10 #include "chrome/browser/chromeos/drive/file_change.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 } | 34 } |
| 35 | 35 |
| 36 } // namespace | 36 } // namespace |
| 37 | 37 |
| 38 class CopyOperationTest : public OperationTestBase { | 38 class CopyOperationTest : public OperationTestBase { |
| 39 protected: | 39 protected: |
| 40 virtual void SetUp() OVERRIDE { | 40 virtual void SetUp() OVERRIDE { |
| 41 OperationTestBase::SetUp(); | 41 OperationTestBase::SetUp(); |
| 42 operation_.reset(new CopyOperation( | 42 operation_.reset(new CopyOperation( |
| 43 blocking_task_runner(), | 43 blocking_task_runner(), |
| 44 observer(), | 44 delegate(), |
| 45 scheduler(), | 45 scheduler(), |
| 46 metadata(), | 46 metadata(), |
| 47 cache(), | 47 cache(), |
| 48 util::GetIdentityResourceIdCanonicalizer())); | 48 util::GetIdentityResourceIdCanonicalizer())); |
| 49 } | 49 } |
| 50 | 50 |
| 51 scoped_ptr<CopyOperation> operation_; | 51 scoped_ptr<CopyOperation> operation_; |
| 52 }; | 52 }; |
| 53 | 53 |
| 54 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_RegularFile) { | 54 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_RegularFile) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 69 operation_->TransferFileFromLocalToRemote( | 69 operation_->TransferFileFromLocalToRemote( |
| 70 local_src_path, | 70 local_src_path, |
| 71 remote_dest_path, | 71 remote_dest_path, |
| 72 google_apis::test_util::CreateCopyResultCallback(&error)); | 72 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 73 content::RunAllBlockingPoolTasksUntilIdle(); | 73 content::RunAllBlockingPoolTasksUntilIdle(); |
| 74 EXPECT_EQ(FILE_ERROR_OK, error); | 74 EXPECT_EQ(FILE_ERROR_OK, error); |
| 75 | 75 |
| 76 // TransferFileFromLocalToRemote stores a copy of the local file in the cache, | 76 // TransferFileFromLocalToRemote stores a copy of the local file in the cache, |
| 77 // marks it dirty and requests the observer to upload the file. | 77 // marks it dirty and requests the observer to upload the file. |
| 78 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); | 78 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); |
| 79 EXPECT_EQ(1U, observer()->updated_local_ids().count(entry.local_id())); | 79 EXPECT_EQ(1U, delegate()->updated_local_ids().count(entry.local_id())); |
| 80 EXPECT_TRUE(entry.file_specific_info().cache_state().is_present()); | 80 EXPECT_TRUE(entry.file_specific_info().cache_state().is_present()); |
| 81 EXPECT_TRUE(entry.file_specific_info().cache_state().is_dirty()); | 81 EXPECT_TRUE(entry.file_specific_info().cache_state().is_dirty()); |
| 82 | 82 |
| 83 EXPECT_EQ(1U, observer()->get_changed_files().size()); | 83 EXPECT_EQ(1U, delegate()->get_changed_files().size()); |
| 84 EXPECT_TRUE(observer()->get_changed_files().count(remote_dest_path)); | 84 EXPECT_TRUE(delegate()->get_changed_files().count(remote_dest_path)); |
| 85 } | 85 } |
| 86 | 86 |
| 87 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_Overwrite) { | 87 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_Overwrite) { |
| 88 const base::FilePath local_src_path = temp_dir().AppendASCII("local.txt"); | 88 const base::FilePath local_src_path = temp_dir().AppendASCII("local.txt"); |
| 89 const base::FilePath remote_dest_path( | 89 const base::FilePath remote_dest_path( |
| 90 FILE_PATH_LITERAL("drive/root/File 1.txt")); | 90 FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 91 | 91 |
| 92 // Prepare a local file. | 92 // Prepare a local file. |
| 93 EXPECT_TRUE( | 93 EXPECT_TRUE( |
| 94 google_apis::test_util::WriteStringToFile(local_src_path, "hello")); | 94 google_apis::test_util::WriteStringToFile(local_src_path, "hello")); |
| 95 // Confirm that the remote file exists. | 95 // Confirm that the remote file exists. |
| 96 ResourceEntry entry; | 96 ResourceEntry entry; |
| 97 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); | 97 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); |
| 98 | 98 |
| 99 // Transfer the local file to Drive. | 99 // Transfer the local file to Drive. |
| 100 FileError error = FILE_ERROR_FAILED; | 100 FileError error = FILE_ERROR_FAILED; |
| 101 operation_->TransferFileFromLocalToRemote( | 101 operation_->TransferFileFromLocalToRemote( |
| 102 local_src_path, | 102 local_src_path, |
| 103 remote_dest_path, | 103 remote_dest_path, |
| 104 google_apis::test_util::CreateCopyResultCallback(&error)); | 104 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 105 content::RunAllBlockingPoolTasksUntilIdle(); | 105 content::RunAllBlockingPoolTasksUntilIdle(); |
| 106 EXPECT_EQ(FILE_ERROR_OK, error); | 106 EXPECT_EQ(FILE_ERROR_OK, error); |
| 107 | 107 |
| 108 // TransferFileFromLocalToRemote stores a copy of the local file in the cache, | 108 // TransferFileFromLocalToRemote stores a copy of the local file in the cache, |
| 109 // marks it dirty and requests the observer to upload the file. | 109 // marks it dirty and requests the observer to upload the file. |
| 110 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); | 110 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); |
| 111 EXPECT_EQ(1U, observer()->updated_local_ids().count(entry.local_id())); | 111 EXPECT_EQ(1U, delegate()->updated_local_ids().count(entry.local_id())); |
| 112 EXPECT_TRUE(entry.file_specific_info().cache_state().is_present()); | 112 EXPECT_TRUE(entry.file_specific_info().cache_state().is_present()); |
| 113 EXPECT_TRUE(entry.file_specific_info().cache_state().is_dirty()); | 113 EXPECT_TRUE(entry.file_specific_info().cache_state().is_dirty()); |
| 114 | 114 |
| 115 EXPECT_EQ(1U, observer()->get_changed_files().size()); | 115 EXPECT_EQ(1U, delegate()->get_changed_files().size()); |
| 116 EXPECT_TRUE(observer()->get_changed_files().count(remote_dest_path)); | 116 EXPECT_TRUE(delegate()->get_changed_files().count(remote_dest_path)); |
| 117 } | 117 } |
| 118 | 118 |
| 119 TEST_F(CopyOperationTest, | 119 TEST_F(CopyOperationTest, |
| 120 TransferFileFromLocalToRemote_ExistingHostedDocument) { | 120 TransferFileFromLocalToRemote_ExistingHostedDocument) { |
| 121 const base::FilePath local_src_path = temp_dir().AppendASCII("local.gdoc"); | 121 const base::FilePath local_src_path = temp_dir().AppendASCII("local.gdoc"); |
| 122 const base::FilePath remote_dest_path(FILE_PATH_LITERAL( | 122 const base::FilePath remote_dest_path(FILE_PATH_LITERAL( |
| 123 "drive/root/Directory 1/copied.gdoc")); | 123 "drive/root/Directory 1/copied.gdoc")); |
| 124 | 124 |
| 125 // Prepare a local file, which is a json file of a hosted document, which | 125 // Prepare a local file, which is a json file of a hosted document, which |
| 126 // matches "drive/root/Document 1 excludeDir-test". | 126 // matches "drive/root/Document 1 excludeDir-test". |
| (...skipping 10 matching lines...) Expand all Loading... |
| 137 FileError error = FILE_ERROR_FAILED; | 137 FileError error = FILE_ERROR_FAILED; |
| 138 operation_->TransferFileFromLocalToRemote( | 138 operation_->TransferFileFromLocalToRemote( |
| 139 local_src_path, | 139 local_src_path, |
| 140 remote_dest_path, | 140 remote_dest_path, |
| 141 google_apis::test_util::CreateCopyResultCallback(&error)); | 141 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 142 content::RunAllBlockingPoolTasksUntilIdle(); | 142 content::RunAllBlockingPoolTasksUntilIdle(); |
| 143 EXPECT_EQ(FILE_ERROR_OK, error); | 143 EXPECT_EQ(FILE_ERROR_OK, error); |
| 144 | 144 |
| 145 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); | 145 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); |
| 146 | 146 |
| 147 EXPECT_EQ(1U, observer()->get_changed_files().size()); | 147 EXPECT_EQ(1U, delegate()->get_changed_files().size()); |
| 148 EXPECT_TRUE(observer()->get_changed_files().count(remote_dest_path)); | 148 EXPECT_TRUE(delegate()->get_changed_files().count(remote_dest_path)); |
| 149 // New copy is created. | 149 // New copy is created. |
| 150 EXPECT_NE("document:5_document_resource_id", entry.resource_id()); | 150 EXPECT_NE("document:5_document_resource_id", entry.resource_id()); |
| 151 } | 151 } |
| 152 | 152 |
| 153 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_OrphanHostedDocument) { | 153 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_OrphanHostedDocument) { |
| 154 const base::FilePath local_src_path = temp_dir().AppendASCII("local.gdoc"); | 154 const base::FilePath local_src_path = temp_dir().AppendASCII("local.gdoc"); |
| 155 const base::FilePath remote_dest_path(FILE_PATH_LITERAL( | 155 const base::FilePath remote_dest_path(FILE_PATH_LITERAL( |
| 156 "drive/root/Directory 1/moved.gdoc")); | 156 "drive/root/Directory 1/moved.gdoc")); |
| 157 | 157 |
| 158 // Prepare a local file, which is a json file of a hosted document, which | 158 // Prepare a local file, which is a json file of a hosted document, which |
| (...skipping 11 matching lines...) Expand all Loading... |
| 170 FileError error = FILE_ERROR_FAILED; | 170 FileError error = FILE_ERROR_FAILED; |
| 171 operation_->TransferFileFromLocalToRemote( | 171 operation_->TransferFileFromLocalToRemote( |
| 172 local_src_path, | 172 local_src_path, |
| 173 remote_dest_path, | 173 remote_dest_path, |
| 174 google_apis::test_util::CreateCopyResultCallback(&error)); | 174 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 175 content::RunAllBlockingPoolTasksUntilIdle(); | 175 content::RunAllBlockingPoolTasksUntilIdle(); |
| 176 EXPECT_EQ(FILE_ERROR_OK, error); | 176 EXPECT_EQ(FILE_ERROR_OK, error); |
| 177 | 177 |
| 178 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); | 178 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); |
| 179 EXPECT_EQ(ResourceEntry::DIRTY, entry.metadata_edit_state()); | 179 EXPECT_EQ(ResourceEntry::DIRTY, entry.metadata_edit_state()); |
| 180 EXPECT_TRUE(observer()->updated_local_ids().count(entry.local_id())); | 180 EXPECT_TRUE(delegate()->updated_local_ids().count(entry.local_id())); |
| 181 | 181 |
| 182 EXPECT_EQ(1U, observer()->get_changed_files().size()); | 182 EXPECT_EQ(1U, delegate()->get_changed_files().size()); |
| 183 EXPECT_TRUE(observer()->get_changed_files().count(remote_dest_path)); | 183 EXPECT_TRUE(delegate()->get_changed_files().count(remote_dest_path)); |
| 184 // The original document got new parent. | 184 // The original document got new parent. |
| 185 EXPECT_EQ("document:orphan_doc_1", entry.resource_id()); | 185 EXPECT_EQ("document:orphan_doc_1", entry.resource_id()); |
| 186 } | 186 } |
| 187 | 187 |
| 188 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_NewHostedDocument) { | 188 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_NewHostedDocument) { |
| 189 const base::FilePath local_src_path = temp_dir().AppendASCII("local.gdoc"); | 189 const base::FilePath local_src_path = temp_dir().AppendASCII("local.gdoc"); |
| 190 const base::FilePath remote_dest_path(FILE_PATH_LITERAL( | 190 const base::FilePath remote_dest_path(FILE_PATH_LITERAL( |
| 191 "drive/root/Directory 1/moved.gdoc")); | 191 "drive/root/Directory 1/moved.gdoc")); |
| 192 | 192 |
| 193 // Create a hosted document on the server that is not synced to local yet. | 193 // Create a hosted document on the server that is not synced to local yet. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 214 FileError error = FILE_ERROR_FAILED; | 214 FileError error = FILE_ERROR_FAILED; |
| 215 operation_->TransferFileFromLocalToRemote( | 215 operation_->TransferFileFromLocalToRemote( |
| 216 local_src_path, | 216 local_src_path, |
| 217 remote_dest_path, | 217 remote_dest_path, |
| 218 google_apis::test_util::CreateCopyResultCallback(&error)); | 218 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 219 content::RunAllBlockingPoolTasksUntilIdle(); | 219 content::RunAllBlockingPoolTasksUntilIdle(); |
| 220 EXPECT_EQ(FILE_ERROR_OK, error); | 220 EXPECT_EQ(FILE_ERROR_OK, error); |
| 221 | 221 |
| 222 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); | 222 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); |
| 223 | 223 |
| 224 EXPECT_EQ(1U, observer()->get_changed_files().size()); | 224 EXPECT_EQ(1U, delegate()->get_changed_files().size()); |
| 225 EXPECT_TRUE(observer()->get_changed_files().count(remote_dest_path)); | 225 EXPECT_TRUE(delegate()->get_changed_files().count(remote_dest_path)); |
| 226 // The original document got new parent. | 226 // The original document got new parent. |
| 227 EXPECT_EQ(new_gdoc_entry->file_id(), entry.resource_id()); | 227 EXPECT_EQ(new_gdoc_entry->file_id(), entry.resource_id()); |
| 228 } | 228 } |
| 229 | 229 |
| 230 TEST_F(CopyOperationTest, CopyNotExistingFile) { | 230 TEST_F(CopyOperationTest, CopyNotExistingFile) { |
| 231 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/Dummy file.txt")); | 231 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/Dummy file.txt")); |
| 232 base::FilePath dest_path(FILE_PATH_LITERAL("drive/root/Test.log")); | 232 base::FilePath dest_path(FILE_PATH_LITERAL("drive/root/Test.log")); |
| 233 | 233 |
| 234 ResourceEntry entry; | 234 ResourceEntry entry; |
| 235 ASSERT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(src_path, &entry)); | 235 ASSERT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(src_path, &entry)); |
| 236 | 236 |
| 237 FileError error = FILE_ERROR_OK; | 237 FileError error = FILE_ERROR_OK; |
| 238 operation_->Copy(src_path, | 238 operation_->Copy(src_path, |
| 239 dest_path, | 239 dest_path, |
| 240 false, | 240 false, |
| 241 google_apis::test_util::CreateCopyResultCallback(&error)); | 241 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 242 content::RunAllBlockingPoolTasksUntilIdle(); | 242 content::RunAllBlockingPoolTasksUntilIdle(); |
| 243 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); | 243 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); |
| 244 | 244 |
| 245 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(src_path, &entry)); | 245 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(src_path, &entry)); |
| 246 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry)); | 246 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry)); |
| 247 EXPECT_TRUE(observer()->get_changed_files().empty()); | 247 EXPECT_TRUE(delegate()->get_changed_files().empty()); |
| 248 } | 248 } |
| 249 | 249 |
| 250 TEST_F(CopyOperationTest, CopyFileToNonExistingDirectory) { | 250 TEST_F(CopyOperationTest, CopyFileToNonExistingDirectory) { |
| 251 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 251 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 252 base::FilePath dest_path(FILE_PATH_LITERAL("drive/root/Dummy/Test.log")); | 252 base::FilePath dest_path(FILE_PATH_LITERAL("drive/root/Dummy/Test.log")); |
| 253 | 253 |
| 254 ResourceEntry entry; | 254 ResourceEntry entry; |
| 255 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); | 255 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); |
| 256 ASSERT_EQ(FILE_ERROR_NOT_FOUND, | 256 ASSERT_EQ(FILE_ERROR_NOT_FOUND, |
| 257 GetLocalResourceEntry(dest_path.DirName(), &entry)); | 257 GetLocalResourceEntry(dest_path.DirName(), &entry)); |
| 258 | 258 |
| 259 FileError error = FILE_ERROR_OK; | 259 FileError error = FILE_ERROR_OK; |
| 260 operation_->Copy(src_path, | 260 operation_->Copy(src_path, |
| 261 dest_path, | 261 dest_path, |
| 262 false, | 262 false, |
| 263 google_apis::test_util::CreateCopyResultCallback(&error)); | 263 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 264 content::RunAllBlockingPoolTasksUntilIdle(); | 264 content::RunAllBlockingPoolTasksUntilIdle(); |
| 265 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); | 265 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); |
| 266 | 266 |
| 267 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); | 267 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); |
| 268 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry)); | 268 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry)); |
| 269 EXPECT_TRUE(observer()->get_changed_files().empty()); | 269 EXPECT_TRUE(delegate()->get_changed_files().empty()); |
| 270 } | 270 } |
| 271 | 271 |
| 272 // Test the case where the parent of the destination path is an existing file, | 272 // Test the case where the parent of the destination path is an existing file, |
| 273 // not a directory. | 273 // not a directory. |
| 274 TEST_F(CopyOperationTest, CopyFileToInvalidPath) { | 274 TEST_F(CopyOperationTest, CopyFileToInvalidPath) { |
| 275 base::FilePath src_path(FILE_PATH_LITERAL( | 275 base::FilePath src_path(FILE_PATH_LITERAL( |
| 276 "drive/root/Document 1 excludeDir-test.gdoc")); | 276 "drive/root/Document 1 excludeDir-test.gdoc")); |
| 277 base::FilePath dest_path(FILE_PATH_LITERAL( | 277 base::FilePath dest_path(FILE_PATH_LITERAL( |
| 278 "drive/root/Duplicate Name.txt/Document 1 excludeDir-test.gdoc")); | 278 "drive/root/Duplicate Name.txt/Document 1 excludeDir-test.gdoc")); |
| 279 | 279 |
| 280 ResourceEntry entry; | 280 ResourceEntry entry; |
| 281 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); | 281 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); |
| 282 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path.DirName(), &entry)); | 282 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path.DirName(), &entry)); |
| 283 ASSERT_FALSE(entry.file_info().is_directory()); | 283 ASSERT_FALSE(entry.file_info().is_directory()); |
| 284 | 284 |
| 285 FileError error = FILE_ERROR_OK; | 285 FileError error = FILE_ERROR_OK; |
| 286 operation_->Copy(src_path, | 286 operation_->Copy(src_path, |
| 287 dest_path, | 287 dest_path, |
| 288 false, | 288 false, |
| 289 google_apis::test_util::CreateCopyResultCallback(&error)); | 289 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 290 content::RunAllBlockingPoolTasksUntilIdle(); | 290 content::RunAllBlockingPoolTasksUntilIdle(); |
| 291 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error); | 291 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error); |
| 292 | 292 |
| 293 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); | 293 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); |
| 294 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry)); | 294 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry)); |
| 295 EXPECT_TRUE(observer()->get_changed_files().empty()); | 295 EXPECT_TRUE(delegate()->get_changed_files().empty()); |
| 296 } | 296 } |
| 297 | 297 |
| 298 TEST_F(CopyOperationTest, CopyDirtyFile) { | 298 TEST_F(CopyOperationTest, CopyDirtyFile) { |
| 299 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 299 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 300 base::FilePath dest_path(FILE_PATH_LITERAL( | 300 base::FilePath dest_path(FILE_PATH_LITERAL( |
| 301 "drive/root/Directory 1/New File.txt")); | 301 "drive/root/Directory 1/New File.txt")); |
| 302 | 302 |
| 303 ResourceEntry src_entry; | 303 ResourceEntry src_entry; |
| 304 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &src_entry)); | 304 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &src_entry)); |
| 305 | 305 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 327 dest_path, | 327 dest_path, |
| 328 false, | 328 false, |
| 329 google_apis::test_util::CreateCopyResultCallback(&error)); | 329 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 330 content::RunAllBlockingPoolTasksUntilIdle(); | 330 content::RunAllBlockingPoolTasksUntilIdle(); |
| 331 EXPECT_EQ(FILE_ERROR_OK, error); | 331 EXPECT_EQ(FILE_ERROR_OK, error); |
| 332 | 332 |
| 333 ResourceEntry dest_entry; | 333 ResourceEntry dest_entry; |
| 334 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path, &dest_entry)); | 334 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path, &dest_entry)); |
| 335 EXPECT_EQ(ResourceEntry::DIRTY, dest_entry.metadata_edit_state()); | 335 EXPECT_EQ(ResourceEntry::DIRTY, dest_entry.metadata_edit_state()); |
| 336 | 336 |
| 337 EXPECT_EQ(1u, observer()->updated_local_ids().size()); | 337 EXPECT_EQ(1u, delegate()->updated_local_ids().size()); |
| 338 EXPECT_TRUE(observer()->updated_local_ids().count(dest_entry.local_id())); | 338 EXPECT_TRUE(delegate()->updated_local_ids().count(dest_entry.local_id())); |
| 339 EXPECT_EQ(1u, observer()->get_changed_files().size()); | 339 EXPECT_EQ(1u, delegate()->get_changed_files().size()); |
| 340 EXPECT_TRUE(observer()->get_changed_files().count(dest_path)); | 340 EXPECT_TRUE(delegate()->get_changed_files().count(dest_path)); |
| 341 | 341 |
| 342 // Copied cache file should be dirty. | 342 // Copied cache file should be dirty. |
| 343 EXPECT_TRUE(dest_entry.file_specific_info().cache_state().is_dirty()); | 343 EXPECT_TRUE(dest_entry.file_specific_info().cache_state().is_dirty()); |
| 344 | 344 |
| 345 // File contents should match. | 345 // File contents should match. |
| 346 base::FilePath cache_file_path; | 346 base::FilePath cache_file_path; |
| 347 base::PostTaskAndReplyWithResult( | 347 base::PostTaskAndReplyWithResult( |
| 348 blocking_task_runner(), | 348 blocking_task_runner(), |
| 349 FROM_HERE, | 349 FROM_HERE, |
| 350 base::Bind(&internal::FileCache::GetFile, | 350 base::Bind(&internal::FileCache::GetFile, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 372 operation_->Copy(src_path, | 372 operation_->Copy(src_path, |
| 373 dest_path, | 373 dest_path, |
| 374 false, | 374 false, |
| 375 google_apis::test_util::CreateCopyResultCallback(&error)); | 375 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 376 content::RunAllBlockingPoolTasksUntilIdle(); | 376 content::RunAllBlockingPoolTasksUntilIdle(); |
| 377 EXPECT_EQ(FILE_ERROR_OK, error); | 377 EXPECT_EQ(FILE_ERROR_OK, error); |
| 378 | 378 |
| 379 ResourceEntry new_dest_entry; | 379 ResourceEntry new_dest_entry; |
| 380 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path, &new_dest_entry)); | 380 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path, &new_dest_entry)); |
| 381 | 381 |
| 382 EXPECT_EQ(1u, observer()->updated_local_ids().size()); | 382 EXPECT_EQ(1u, delegate()->updated_local_ids().size()); |
| 383 EXPECT_TRUE(observer()->updated_local_ids().count(old_dest_entry.local_id())); | 383 EXPECT_TRUE(delegate()->updated_local_ids().count(old_dest_entry.local_id())); |
| 384 EXPECT_EQ(1u, observer()->get_changed_files().size()); | 384 EXPECT_EQ(1u, delegate()->get_changed_files().size()); |
| 385 EXPECT_TRUE(observer()->get_changed_files().count(dest_path)); | 385 EXPECT_TRUE(delegate()->get_changed_files().count(dest_path)); |
| 386 } | 386 } |
| 387 | 387 |
| 388 TEST_F(CopyOperationTest, CopyFileOverwriteDirectory) { | 388 TEST_F(CopyOperationTest, CopyFileOverwriteDirectory) { |
| 389 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 389 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 390 base::FilePath dest_path(FILE_PATH_LITERAL("drive/root/Directory 1")); | 390 base::FilePath dest_path(FILE_PATH_LITERAL("drive/root/Directory 1")); |
| 391 | 391 |
| 392 FileError error = FILE_ERROR_OK; | 392 FileError error = FILE_ERROR_OK; |
| 393 operation_->Copy(src_path, | 393 operation_->Copy(src_path, |
| 394 dest_path, | 394 dest_path, |
| 395 false, | 395 false, |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 base::Bind(&internal::ResourceMetadata::AddEntry, | 465 base::Bind(&internal::ResourceMetadata::AddEntry, |
| 466 base::Unretained(metadata()), directory, &directory_local_id), | 466 base::Unretained(metadata()), directory, &directory_local_id), |
| 467 google_apis::test_util::CreateCopyResultCallback(&error)); | 467 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 468 content::RunAllBlockingPoolTasksUntilIdle(); | 468 content::RunAllBlockingPoolTasksUntilIdle(); |
| 469 EXPECT_EQ(FILE_ERROR_OK, error); | 469 EXPECT_EQ(FILE_ERROR_OK, error); |
| 470 | 470 |
| 471 // Try to copy a file to the new directory which lacks resource ID. | 471 // Try to copy a file to the new directory which lacks resource ID. |
| 472 // This should result in waiting for the directory to sync. | 472 // This should result in waiting for the directory to sync. |
| 473 std::string waited_local_id; | 473 std::string waited_local_id; |
| 474 FileOperationCallback pending_callback; | 474 FileOperationCallback pending_callback; |
| 475 observer()->set_wait_for_sync_complete_handler( | 475 delegate()->set_wait_for_sync_complete_handler( |
| 476 base::Bind(&CopyWaitForSyncCompleteArguments, | 476 base::Bind(&CopyWaitForSyncCompleteArguments, |
| 477 &waited_local_id, &pending_callback)); | 477 &waited_local_id, &pending_callback)); |
| 478 | 478 |
| 479 FileError copy_error = FILE_ERROR_FAILED; | 479 FileError copy_error = FILE_ERROR_FAILED; |
| 480 operation_->Copy(src_path, | 480 operation_->Copy(src_path, |
| 481 dest_path, | 481 dest_path, |
| 482 true, // Preserve last modified. | 482 true, // Preserve last modified. |
| 483 google_apis::test_util::CreateCopyResultCallback( | 483 google_apis::test_util::CreateCopyResultCallback( |
| 484 ©_error)); | 484 ©_error)); |
| 485 content::RunAllBlockingPoolTasksUntilIdle(); | 485 content::RunAllBlockingPoolTasksUntilIdle(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 514 pending_callback.Run(FILE_ERROR_OK); | 514 pending_callback.Run(FILE_ERROR_OK); |
| 515 content::RunAllBlockingPoolTasksUntilIdle(); | 515 content::RunAllBlockingPoolTasksUntilIdle(); |
| 516 | 516 |
| 517 EXPECT_EQ(FILE_ERROR_OK, copy_error); | 517 EXPECT_EQ(FILE_ERROR_OK, copy_error); |
| 518 ResourceEntry entry; | 518 ResourceEntry entry; |
| 519 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path, &entry)); | 519 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path, &entry)); |
| 520 } | 520 } |
| 521 | 521 |
| 522 } // namespace file_system | 522 } // namespace file_system |
| 523 } // namespace drive | 523 } // namespace drive |
| OLD | NEW |