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

Side by Side Diff: chrome/browser/sync_file_system/local_file_sync_service_unittest.cc

Issue 12315004: Migrated sync_file_type and file_change from namespace fileapi to sync_file_system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/message_loop_proxy.h" 9 #include "base/message_loop_proxy.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
11 #include "base/stl_util.h" 11 #include "base/stl_util.h"
12 #include "base/threading/thread.h" 12 #include "base/threading/thread.h"
13 #include "chrome/browser/sync_file_system/local_file_sync_service.h" 13 #include "chrome/browser/sync_file_system/local_file_sync_service.h"
14 #include "chrome/browser/sync_file_system/mock_local_change_processor.h" 14 #include "chrome/browser/sync_file_system/mock_local_change_processor.h"
15 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h" 15 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h"
16 #include "chrome/test/base/testing_profile.h" 16 #include "chrome/test/base/testing_profile.h"
17 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 #include "webkit/fileapi/file_system_context.h" 19 #include "webkit/fileapi/file_system_context.h"
20 #include "webkit/fileapi/syncable/canned_syncable_file_system.h" 20 #include "webkit/fileapi/syncable/canned_syncable_file_system.h"
21 #include "webkit/fileapi/syncable/file_change.h" 21 #include "webkit/fileapi/syncable/file_change.h"
22 #include "webkit/fileapi/syncable/local_file_change_tracker.h" 22 #include "webkit/fileapi/syncable/local_file_change_tracker.h"
23 #include "webkit/fileapi/syncable/local_file_sync_context.h" 23 #include "webkit/fileapi/syncable/local_file_sync_context.h"
24 #include "webkit/fileapi/syncable/local_file_sync_status.h" 24 #include "webkit/fileapi/syncable/local_file_sync_status.h"
25 #include "webkit/fileapi/syncable/mock_sync_status_observer.h" 25 #include "webkit/fileapi/syncable/mock_sync_status_observer.h"
26 #include "webkit/fileapi/syncable/sync_file_metadata.h" 26 #include "webkit/fileapi/syncable/sync_file_metadata.h"
27 #include "webkit/fileapi/syncable/sync_status_code.h" 27 #include "webkit/fileapi/syncable/sync_status_code.h"
28 #include "webkit/fileapi/syncable/syncable_file_system_util.h" 28 #include "webkit/fileapi/syncable/syncable_file_system_util.h"
29 29
30 using fileapi::FileChange;
31 using fileapi::FileChangeList;
32 using fileapi::FileSystemURL; 30 using fileapi::FileSystemURL;
33 using fileapi::LocalFileSyncStatus; 31 using fileapi::LocalFileSyncStatus;
34 using fileapi::MockSyncStatusObserver; 32 using fileapi::MockSyncStatusObserver;
35 using fileapi::SyncFileMetadata; 33 using fileapi::SyncFileMetadata;
36 using fileapi::SyncFileType;
37 using fileapi::SyncStatusCallback; 34 using fileapi::SyncStatusCallback;
38 using fileapi::SyncStatusCode; 35 using fileapi::SyncStatusCode;
39 36
37 using sync_file_system::FileChange;
38 using sync_file_system::FileChangeList;
39 using sync_file_system::SyncFileType;
40
40 using ::testing::_; 41 using ::testing::_;
41 using ::testing::AtLeast; 42 using ::testing::AtLeast;
42 using ::testing::InvokeWithoutArgs; 43 using ::testing::InvokeWithoutArgs;
43 using ::testing::StrictMock; 44 using ::testing::StrictMock;
44 45
45 namespace sync_file_system { 46 namespace sync_file_system {
46 47
47 namespace { 48 namespace {
48 49
49 const char kOrigin[] = "http://example.com"; 50 const char kOrigin[] = "http://example.com";
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 const int kTestFileDataSize = static_cast<int>(arraysize(kTestFileData) - 1); 206 const int kTestFileDataSize = static_cast<int>(arraysize(kTestFileData) - 1);
206 207
207 base::FilePath local_path; 208 base::FilePath local_path;
208 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), 209 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(),
209 &local_path)); 210 &local_path));
210 ASSERT_EQ(kTestFileDataSize, 211 ASSERT_EQ(kTestFileDataSize,
211 file_util::WriteFile(local_path, kTestFileData, kTestFileDataSize)); 212 file_util::WriteFile(local_path, kTestFileData, kTestFileDataSize));
212 213
213 // Run PrepareForProcessRemoteChange for kFile. 214 // Run PrepareForProcessRemoteChange for kFile.
214 SyncFileMetadata expected_metadata; 215 SyncFileMetadata expected_metadata;
215 expected_metadata.file_type = fileapi::SYNC_FILE_TYPE_UNKNOWN; 216 expected_metadata.file_type = SYNC_FILE_TYPE_UNKNOWN;
216 expected_metadata.size = 0; 217 expected_metadata.size = 0;
217 PrepareForProcessRemoteChange(kFile, FROM_HERE, 218 PrepareForProcessRemoteChange(kFile, FROM_HERE,
218 fileapi::SYNC_STATUS_OK, 219 fileapi::SYNC_STATUS_OK,
219 expected_metadata); 220 expected_metadata);
220 221
221 // Run ApplyRemoteChange for kFile. 222 // Run ApplyRemoteChange for kFile.
222 FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 223 FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
223 fileapi::SYNC_FILE_TYPE_FILE); 224 SYNC_FILE_TYPE_FILE);
224 EXPECT_EQ(fileapi::SYNC_STATUS_OK, 225 EXPECT_EQ(fileapi::SYNC_STATUS_OK,
225 ApplyRemoteChange(change, local_path, kFile)); 226 ApplyRemoteChange(change, local_path, kFile));
226 227
227 // Verify the file is synced. 228 // Verify the file is synced.
228 EXPECT_EQ(base::PLATFORM_FILE_OK, 229 EXPECT_EQ(base::PLATFORM_FILE_OK,
229 file_system_->VerifyFile(kFile, kTestFileData)); 230 file_system_->VerifyFile(kFile, kTestFileData));
230 231
231 // Run PrepareForProcessRemoteChange for kDir. 232 // Run PrepareForProcessRemoteChange for kDir.
232 PrepareForProcessRemoteChange(kDir, FROM_HERE, 233 PrepareForProcessRemoteChange(kDir, FROM_HERE,
233 fileapi::SYNC_STATUS_OK, 234 fileapi::SYNC_STATUS_OK,
234 expected_metadata); 235 expected_metadata);
235 236
236 // Run ApplyRemoteChange for kDir. 237 // Run ApplyRemoteChange for kDir.
237 change = FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 238 change = FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
238 fileapi::SYNC_FILE_TYPE_DIRECTORY); 239 SYNC_FILE_TYPE_DIRECTORY);
239 EXPECT_EQ(fileapi::SYNC_STATUS_OK, 240 EXPECT_EQ(fileapi::SYNC_STATUS_OK,
240 ApplyRemoteChange(change, base::FilePath(), kDir)); 241 ApplyRemoteChange(change, base::FilePath(), kDir));
241 242
242 // Verify the directory. 243 // Verify the directory.
243 EXPECT_EQ(base::PLATFORM_FILE_OK, 244 EXPECT_EQ(base::PLATFORM_FILE_OK,
244 file_system_->DirectoryExists(kDir)); 245 file_system_->DirectoryExists(kDir));
245 246
246 // Run PrepareForProcessRemoteChange and ApplyRemoteChange for 247 // Run PrepareForProcessRemoteChange and ApplyRemoteChange for
247 // kDir once again for deletion. 248 // kDir once again for deletion.
248 expected_metadata.file_type = fileapi::SYNC_FILE_TYPE_DIRECTORY; 249 expected_metadata.file_type = SYNC_FILE_TYPE_DIRECTORY;
249 expected_metadata.size = 0; 250 expected_metadata.size = 0;
250 PrepareForProcessRemoteChange(kDir, FROM_HERE, 251 PrepareForProcessRemoteChange(kDir, FROM_HERE,
251 fileapi::SYNC_STATUS_OK, 252 fileapi::SYNC_STATUS_OK,
252 expected_metadata); 253 expected_metadata);
253 254
254 change = FileChange(FileChange::FILE_CHANGE_DELETE, 255 change = FileChange(FileChange::FILE_CHANGE_DELETE, SYNC_FILE_TYPE_UNKNOWN);
255 fileapi::SYNC_FILE_TYPE_UNKNOWN);
256 EXPECT_EQ(fileapi::SYNC_STATUS_OK, 256 EXPECT_EQ(fileapi::SYNC_STATUS_OK,
257 ApplyRemoteChange(change, base::FilePath(), kDir)); 257 ApplyRemoteChange(change, base::FilePath(), kDir));
258 258
259 // Now the directory must have deleted. 259 // Now the directory must have deleted.
260 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, 260 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND,
261 file_system_->DirectoryExists(kDir)); 261 file_system_->DirectoryExists(kDir));
262 } 262 }
263 263
264 TEST_F(LocalFileSyncServiceTest, LocalChangeObserver) { 264 TEST_F(LocalFileSyncServiceTest, LocalChangeObserver) {
265 const FileSystemURL kFile(file_system_->URL("file")); 265 const FileSystemURL kFile(file_system_->URL("file"));
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 // Retrieve the expected platform_path. 342 // Retrieve the expected platform_path.
343 base::PlatformFileInfo info; 343 base::PlatformFileInfo info;
344 base::FilePath platform_path; 344 base::FilePath platform_path;
345 EXPECT_EQ(base::PLATFORM_FILE_OK, 345 EXPECT_EQ(base::PLATFORM_FILE_OK,
346 file_system_->GetMetadata(kFile, &info, &platform_path)); 346 file_system_->GetMetadata(kFile, &info, &platform_path));
347 347
348 // The local_change_processor's ApplyLocalChange should be called once 348 // The local_change_processor's ApplyLocalChange should be called once
349 // with ADD_OR_UPDATE change for TYPE_FILE. 349 // with ADD_OR_UPDATE change for TYPE_FILE.
350 StrictMock<MockLocalChangeProcessor> local_change_processor; 350 StrictMock<MockLocalChangeProcessor> local_change_processor;
351 const FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 351 const FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
352 fileapi::SYNC_FILE_TYPE_FILE); 352 SYNC_FILE_TYPE_FILE);
353 EXPECT_CALL(local_change_processor, 353 EXPECT_CALL(local_change_processor,
354 ApplyLocalChange(change, platform_path, kFile, _)) 354 ApplyLocalChange(change, platform_path, kFile, _))
355 .WillOnce(MockStatusCallback(fileapi::SYNC_STATUS_OK)); 355 .WillOnce(MockStatusCallback(fileapi::SYNC_STATUS_OK));
356 356
357 local_service_->ProcessLocalChange( 357 local_service_->ProcessLocalChange(
358 &local_change_processor, 358 &local_change_processor,
359 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(), 359 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(),
360 fileapi::SYNC_STATUS_OK, kFile)); 360 fileapi::SYNC_STATUS_OK, kFile));
361 361
362 run_loop.Run(); 362 run_loop.Run();
(...skipping 16 matching lines...) Expand all
379 379
380 // Creates and then deletes a file. 380 // Creates and then deletes a file.
381 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kFile)); 381 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kFile));
382 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->Remove(kFile, false)); 382 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->Remove(kFile, false));
383 383
384 // The local_change_processor's ApplyLocalChange should be called once 384 // The local_change_processor's ApplyLocalChange should be called once
385 // with DELETE change for TYPE_FILE. 385 // with DELETE change for TYPE_FILE.
386 // The file will NOT exist in the remote side and the processor might 386 // The file will NOT exist in the remote side and the processor might
387 // return SYNC_FILE_ERROR_NOT_FOUND (as mocked). 387 // return SYNC_FILE_ERROR_NOT_FOUND (as mocked).
388 StrictMock<MockLocalChangeProcessor> local_change_processor; 388 StrictMock<MockLocalChangeProcessor> local_change_processor;
389 const FileChange change(FileChange::FILE_CHANGE_DELETE, 389 const FileChange change(FileChange::FILE_CHANGE_DELETE, SYNC_FILE_TYPE_FILE);
390 fileapi::SYNC_FILE_TYPE_FILE);
391 EXPECT_CALL(local_change_processor, ApplyLocalChange(change, _, kFile, _)) 390 EXPECT_CALL(local_change_processor, ApplyLocalChange(change, _, kFile, _))
392 .WillOnce(MockStatusCallback(fileapi::SYNC_FILE_ERROR_NOT_FOUND)); 391 .WillOnce(MockStatusCallback(fileapi::SYNC_FILE_ERROR_NOT_FOUND));
393 392
394 // The sync should succeed anyway. 393 // The sync should succeed anyway.
395 local_service_->ProcessLocalChange( 394 local_service_->ProcessLocalChange(
396 &local_change_processor, 395 &local_change_processor,
397 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(), 396 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(),
398 fileapi::SYNC_STATUS_OK, kFile)); 397 fileapi::SYNC_STATUS_OK, kFile));
399 398
400 run_loop.Run(); 399 run_loop.Run();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 &changes)); 466 &changes));
468 467
469 local_service_->ProcessLocalChange( 468 local_service_->ProcessLocalChange(
470 &local_change_processor, 469 &local_change_processor,
471 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(), 470 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(),
472 fileapi::SYNC_STATUS_OK, kPath)); 471 fileapi::SYNC_STATUS_OK, kPath));
473 472
474 run_loop.Run(); 473 run_loop.Run();
475 474
476 EXPECT_EQ(2U, changes.size()); 475 EXPECT_EQ(2U, changes.size());
477 EXPECT_EQ(FileChange(FileChange::FILE_CHANGE_DELETE, 476 EXPECT_EQ(FileChange(FileChange::FILE_CHANGE_DELETE, SYNC_FILE_TYPE_FILE),
478 fileapi::SYNC_FILE_TYPE_FILE),
479 changes[0]); 477 changes[0]);
480 EXPECT_EQ(FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 478 EXPECT_EQ(FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
481 fileapi::SYNC_FILE_TYPE_DIRECTORY), 479 SYNC_FILE_TYPE_DIRECTORY),
482 changes[1]); 480 changes[1]);
483 481
484 file_system_->RemoveSyncStatusObserver(&status_observer); 482 file_system_->RemoveSyncStatusObserver(&status_observer);
485 483
486 // We have one more change for kOther. 484 // We have one more change for kOther.
487 EXPECT_EQ(1, GetNumChangesInTracker()); 485 EXPECT_EQ(1, GetNumChangesInTracker());
488 } 486 }
489 487
490 TEST_F(LocalFileSyncServiceTest, ProcessLocalChange_GetLocalMetadata) { 488 TEST_F(LocalFileSyncServiceTest, ProcessLocalChange_GetLocalMetadata) {
491 const FileSystemURL kURL(file_system_->URL("foo")); 489 const FileSystemURL kURL(file_system_->URL("foo"));
(...skipping 29 matching lines...) Expand all
521 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kURL)); 519 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kURL));
522 file_system_->ClearChangeForURLInTracker(kURL); 520 file_system_->ClearChangeForURLInTracker(kURL);
523 521
524 EXPECT_EQ(0, GetNumChangesInTracker()); 522 EXPECT_EQ(0, GetNumChangesInTracker());
525 523
526 fileapi::FileSystemURLSet urlset; 524 fileapi::FileSystemURLSet urlset;
527 file_system_->GetChangedURLsInTracker(&urlset); 525 file_system_->GetChangedURLsInTracker(&urlset);
528 EXPECT_TRUE(urlset.empty()); 526 EXPECT_TRUE(urlset.empty());
529 527
530 const FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 528 const FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
531 fileapi::SYNC_FILE_TYPE_FILE); 529 SYNC_FILE_TYPE_FILE);
532 530
533 // Call RecordFakeLocalChange to add an ADD_OR_UPDATE change. 531 // Call RecordFakeLocalChange to add an ADD_OR_UPDATE change.
534 { 532 {
535 base::RunLoop run_loop; 533 base::RunLoop run_loop;
536 SyncStatusCode status = fileapi::SYNC_STATUS_UNKNOWN; 534 SyncStatusCode status = fileapi::SYNC_STATUS_UNKNOWN;
537 local_service_->RecordFakeLocalChange( 535 local_service_->RecordFakeLocalChange(
538 kURL, change, AssignAndQuitCallback(&run_loop, &status)); 536 kURL, change, AssignAndQuitCallback(&run_loop, &status));
539 run_loop.Run(); 537 run_loop.Run();
540 EXPECT_EQ(fileapi::SYNC_STATUS_OK, status); 538 EXPECT_EQ(fileapi::SYNC_STATUS_OK, status);
541 } 539 }
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 all_origins.insert(kOrigin2); 705 all_origins.insert(kOrigin2);
708 all_origins.insert(kOrigin3); 706 all_origins.insert(kOrigin3);
709 while (!all_origins.empty()) { 707 while (!all_origins.empty()) {
710 ASSERT_TRUE(NextOriginToProcess(&origin)); 708 ASSERT_TRUE(NextOriginToProcess(&origin));
711 ASSERT_TRUE(ContainsKey(all_origins, origin)); 709 ASSERT_TRUE(ContainsKey(all_origins, origin));
712 all_origins.erase(origin); 710 all_origins.erase(origin);
713 } 711 }
714 } 712 }
715 713
716 } // namespace sync_file_system 714 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698