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

Side by Side Diff: base/files/file_path_watcher_browsertest.cc

Issue 16950028: Move file_util::Delete to the base namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 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
« no previous file with comments | « base/file_util_win.cc ('k') | base/files/file_util_proxy.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/files/file_path_watcher.h" 5 #include "base/files/file_path_watcher.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <aclapi.h> 9 #include <aclapi.h>
10 #elif defined(OS_POSIX) 10 #elif defined(OS_POSIX)
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 } 267 }
268 268
269 TEST_F(FilePathWatcherTest, DeletedFile) { 269 TEST_F(FilePathWatcherTest, DeletedFile) {
270 ASSERT_TRUE(WriteFile(test_file(), "content")); 270 ASSERT_TRUE(WriteFile(test_file(), "content"));
271 271
272 FilePathWatcher watcher; 272 FilePathWatcher watcher;
273 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 273 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
274 ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false)); 274 ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false));
275 275
276 // Now make sure we get notified if the file is deleted. 276 // Now make sure we get notified if the file is deleted.
277 file_util::Delete(test_file(), false); 277 base::Delete(test_file(), false);
278 ASSERT_TRUE(WaitForEvents()); 278 ASSERT_TRUE(WaitForEvents());
279 DeleteDelegateOnFileThread(delegate.release()); 279 DeleteDelegateOnFileThread(delegate.release());
280 } 280 }
281 281
282 // Used by the DeleteDuringNotify test below. 282 // Used by the DeleteDuringNotify test below.
283 // Deletes the FilePathWatcher when it's notified. 283 // Deletes the FilePathWatcher when it's notified.
284 class Deleter : public TestDelegateBase { 284 class Deleter : public TestDelegateBase {
285 public: 285 public:
286 Deleter(FilePathWatcher* watcher, MessageLoop* loop) 286 Deleter(FilePathWatcher* watcher, MessageLoop* loop)
287 : watcher_(watcher), 287 : watcher_(watcher),
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 362
363 ASSERT_TRUE(WriteFile(file, "content")); 363 ASSERT_TRUE(WriteFile(file, "content"));
364 364
365 VLOG(1) << "Waiting for file creation"; 365 VLOG(1) << "Waiting for file creation";
366 ASSERT_TRUE(WaitForEvents()); 366 ASSERT_TRUE(WaitForEvents());
367 367
368 ASSERT_TRUE(WriteFile(file, "content v2")); 368 ASSERT_TRUE(WriteFile(file, "content v2"));
369 VLOG(1) << "Waiting for file change"; 369 VLOG(1) << "Waiting for file change";
370 ASSERT_TRUE(WaitForEvents()); 370 ASSERT_TRUE(WaitForEvents());
371 371
372 ASSERT_TRUE(file_util::Delete(file, false)); 372 ASSERT_TRUE(base::Delete(file, false));
373 VLOG(1) << "Waiting for file deletion"; 373 VLOG(1) << "Waiting for file deletion";
374 ASSERT_TRUE(WaitForEvents()); 374 ASSERT_TRUE(WaitForEvents());
375 DeleteDelegateOnFileThread(delegate.release()); 375 DeleteDelegateOnFileThread(delegate.release());
376 } 376 }
377 377
378 // Exercises watch reconfiguration for the case that directories on the path 378 // Exercises watch reconfiguration for the case that directories on the path
379 // are rapidly created. 379 // are rapidly created.
380 TEST_F(FilePathWatcherTest, DirectoryChain) { 380 TEST_F(FilePathWatcherTest, DirectoryChain) {
381 FilePath path(temp_dir_.path()); 381 FilePath path(temp_dir_.path());
382 std::vector<std::string> dir_names; 382 std::vector<std::string> dir_names;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 #endif 414 #endif
415 TEST_F(FilePathWatcherTest, DisappearingDirectory) { 415 TEST_F(FilePathWatcherTest, DisappearingDirectory) {
416 FilePathWatcher watcher; 416 FilePathWatcher watcher;
417 FilePath dir(temp_dir_.path().AppendASCII("dir")); 417 FilePath dir(temp_dir_.path().AppendASCII("dir"));
418 FilePath file(dir.AppendASCII("file")); 418 FilePath file(dir.AppendASCII("file"));
419 ASSERT_TRUE(file_util::CreateDirectory(dir)); 419 ASSERT_TRUE(file_util::CreateDirectory(dir));
420 ASSERT_TRUE(WriteFile(file, "content")); 420 ASSERT_TRUE(WriteFile(file, "content"));
421 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 421 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
422 ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false)); 422 ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false));
423 423
424 ASSERT_TRUE(file_util::Delete(dir, true)); 424 ASSERT_TRUE(base::Delete(dir, true));
425 ASSERT_TRUE(WaitForEvents()); 425 ASSERT_TRUE(WaitForEvents());
426 DeleteDelegateOnFileThread(delegate.release()); 426 DeleteDelegateOnFileThread(delegate.release());
427 } 427 }
428 428
429 // Tests that a file that is deleted and reappears is tracked correctly. 429 // Tests that a file that is deleted and reappears is tracked correctly.
430 TEST_F(FilePathWatcherTest, DeleteAndRecreate) { 430 TEST_F(FilePathWatcherTest, DeleteAndRecreate) {
431 ASSERT_TRUE(WriteFile(test_file(), "content")); 431 ASSERT_TRUE(WriteFile(test_file(), "content"));
432 FilePathWatcher watcher; 432 FilePathWatcher watcher;
433 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 433 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
434 ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false)); 434 ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false));
435 435
436 ASSERT_TRUE(file_util::Delete(test_file(), false)); 436 ASSERT_TRUE(base::Delete(test_file(), false));
437 VLOG(1) << "Waiting for file deletion"; 437 VLOG(1) << "Waiting for file deletion";
438 ASSERT_TRUE(WaitForEvents()); 438 ASSERT_TRUE(WaitForEvents());
439 439
440 ASSERT_TRUE(WriteFile(test_file(), "content")); 440 ASSERT_TRUE(WriteFile(test_file(), "content"));
441 VLOG(1) << "Waiting for file creation"; 441 VLOG(1) << "Waiting for file creation";
442 ASSERT_TRUE(WaitForEvents()); 442 ASSERT_TRUE(WaitForEvents());
443 DeleteDelegateOnFileThread(delegate.release()); 443 DeleteDelegateOnFileThread(delegate.release());
444 } 444 }
445 445
446 TEST_F(FilePathWatcherTest, WatchDirectory) { 446 TEST_F(FilePathWatcherTest, WatchDirectory) {
(...skipping 12 matching lines...) Expand all
459 VLOG(1) << "Waiting for file1 creation"; 459 VLOG(1) << "Waiting for file1 creation";
460 ASSERT_TRUE(WaitForEvents()); 460 ASSERT_TRUE(WaitForEvents());
461 461
462 #if !defined(OS_MACOSX) 462 #if !defined(OS_MACOSX)
463 // Mac implementation does not detect files modified in a directory. 463 // Mac implementation does not detect files modified in a directory.
464 ASSERT_TRUE(WriteFile(file1, "content v2")); 464 ASSERT_TRUE(WriteFile(file1, "content v2"));
465 VLOG(1) << "Waiting for file1 modification"; 465 VLOG(1) << "Waiting for file1 modification";
466 ASSERT_TRUE(WaitForEvents()); 466 ASSERT_TRUE(WaitForEvents());
467 #endif // !OS_MACOSX 467 #endif // !OS_MACOSX
468 468
469 ASSERT_TRUE(file_util::Delete(file1, false)); 469 ASSERT_TRUE(base::Delete(file1, false));
470 VLOG(1) << "Waiting for file1 deletion"; 470 VLOG(1) << "Waiting for file1 deletion";
471 ASSERT_TRUE(WaitForEvents()); 471 ASSERT_TRUE(WaitForEvents());
472 472
473 ASSERT_TRUE(WriteFile(file2, "content")); 473 ASSERT_TRUE(WriteFile(file2, "content"));
474 VLOG(1) << "Waiting for file2 creation"; 474 VLOG(1) << "Waiting for file2 creation";
475 ASSERT_TRUE(WaitForEvents()); 475 ASSERT_TRUE(WaitForEvents());
476 DeleteDelegateOnFileThread(delegate.release()); 476 DeleteDelegateOnFileThread(delegate.release());
477 } 477 }
478 478
479 TEST_F(FilePathWatcherTest, MoveParent) { 479 TEST_F(FilePathWatcherTest, MoveParent) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 541
542 // Write into "$dir/subdir/subdir_child_dir/child_dir_file1". 542 // Write into "$dir/subdir/subdir_child_dir/child_dir_file1".
543 ASSERT_TRUE(WriteFile(child_dir_file1, "content")); 543 ASSERT_TRUE(WriteFile(child_dir_file1, "content"));
544 ASSERT_TRUE(WaitForEvents()); 544 ASSERT_TRUE(WaitForEvents());
545 545
546 // Modify "$dir/subdir/subdir_child_dir/child_dir_file1" attributes. 546 // Modify "$dir/subdir/subdir_child_dir/child_dir_file1" attributes.
547 ASSERT_TRUE(file_util::MakeFileUnreadable(child_dir_file1)); 547 ASSERT_TRUE(file_util::MakeFileUnreadable(child_dir_file1));
548 ASSERT_TRUE(WaitForEvents()); 548 ASSERT_TRUE(WaitForEvents());
549 549
550 // Delete "$dir/subdir/subdir_file1". 550 // Delete "$dir/subdir/subdir_file1".
551 ASSERT_TRUE(file_util::Delete(subdir_file1, false)); 551 ASSERT_TRUE(base::Delete(subdir_file1, false));
552 ASSERT_TRUE(WaitForEvents()); 552 ASSERT_TRUE(WaitForEvents());
553 553
554 // Delete "$dir/subdir/subdir_child_dir/child_dir_file1". 554 // Delete "$dir/subdir/subdir_child_dir/child_dir_file1".
555 ASSERT_TRUE(file_util::Delete(child_dir_file1, false)); 555 ASSERT_TRUE(base::Delete(child_dir_file1, false));
556 ASSERT_TRUE(WaitForEvents()); 556 ASSERT_TRUE(WaitForEvents());
557 DeleteDelegateOnFileThread(delegate.release()); 557 DeleteDelegateOnFileThread(delegate.release());
558 } 558 }
559 #else 559 #else
560 TEST_F(FilePathWatcherTest, RecursiveWatch) { 560 TEST_F(FilePathWatcherTest, RecursiveWatch) {
561 FilePathWatcher watcher; 561 FilePathWatcher watcher;
562 FilePath dir(temp_dir_.path().AppendASCII("dir")); 562 FilePath dir(temp_dir_.path().AppendASCII("dir"));
563 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 563 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
564 // Non-Windows implementaion does not support recursive watching. 564 // Non-Windows implementaion does not support recursive watching.
565 ASSERT_FALSE(SetupWatch(dir, &watcher, delegate.get(), true)); 565 ASSERT_FALSE(SetupWatch(dir, &watcher, delegate.get(), true));
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 TEST_F(FilePathWatcherTest, DeleteLink) { 633 TEST_F(FilePathWatcherTest, DeleteLink) {
634 // Unfortunately this test case only works if the link target exists. 634 // Unfortunately this test case only works if the link target exists.
635 // TODO(craig) fix this as part of crbug.com/91561. 635 // TODO(craig) fix this as part of crbug.com/91561.
636 ASSERT_TRUE(WriteFile(test_file(), "content")); 636 ASSERT_TRUE(WriteFile(test_file(), "content"));
637 ASSERT_TRUE(file_util::CreateSymbolicLink(test_file(), test_link())); 637 ASSERT_TRUE(file_util::CreateSymbolicLink(test_file(), test_link()));
638 FilePathWatcher watcher; 638 FilePathWatcher watcher;
639 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 639 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
640 ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false)); 640 ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false));
641 641
642 // Now make sure we get notified if the link is deleted. 642 // Now make sure we get notified if the link is deleted.
643 ASSERT_TRUE(file_util::Delete(test_link(), false)); 643 ASSERT_TRUE(base::Delete(test_link(), false));
644 ASSERT_TRUE(WaitForEvents()); 644 ASSERT_TRUE(WaitForEvents());
645 DeleteDelegateOnFileThread(delegate.release()); 645 DeleteDelegateOnFileThread(delegate.release());
646 } 646 }
647 647
648 // Verify that modifying a target file that a link is pointing to 648 // Verify that modifying a target file that a link is pointing to
649 // when we are watching the link is caught. 649 // when we are watching the link is caught.
650 TEST_F(FilePathWatcherTest, ModifiedLinkedFile) { 650 TEST_F(FilePathWatcherTest, ModifiedLinkedFile) {
651 ASSERT_TRUE(WriteFile(test_file(), "content")); 651 ASSERT_TRUE(WriteFile(test_file(), "content"));
652 ASSERT_TRUE(file_util::CreateSymbolicLink(test_file(), test_link())); 652 ASSERT_TRUE(file_util::CreateSymbolicLink(test_file(), test_link()));
653 FilePathWatcher watcher; 653 FilePathWatcher watcher;
(...skipping 26 matching lines...) Expand all
680 // when we are watching the link is caught. 680 // when we are watching the link is caught.
681 TEST_F(FilePathWatcherTest, DeleteTargetLinkedFile) { 681 TEST_F(FilePathWatcherTest, DeleteTargetLinkedFile) {
682 ASSERT_TRUE(WriteFile(test_file(), "content")); 682 ASSERT_TRUE(WriteFile(test_file(), "content"));
683 ASSERT_TRUE(file_util::CreateSymbolicLink(test_file(), test_link())); 683 ASSERT_TRUE(file_util::CreateSymbolicLink(test_file(), test_link()));
684 FilePathWatcher watcher; 684 FilePathWatcher watcher;
685 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 685 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
686 // Note that we are watching the symlink. 686 // Note that we are watching the symlink.
687 ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false)); 687 ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false));
688 688
689 // Now make sure we get notified if the target file is deleted. 689 // Now make sure we get notified if the target file is deleted.
690 ASSERT_TRUE(file_util::Delete(test_file(), false)); 690 ASSERT_TRUE(base::Delete(test_file(), false));
691 ASSERT_TRUE(WaitForEvents()); 691 ASSERT_TRUE(WaitForEvents());
692 DeleteDelegateOnFileThread(delegate.release()); 692 DeleteDelegateOnFileThread(delegate.release());
693 } 693 }
694 694
695 // Verify that watching a file whose parent directory is a link that 695 // Verify that watching a file whose parent directory is a link that
696 // doesn't exist yet works if the symlink is created eventually. 696 // doesn't exist yet works if the symlink is created eventually.
697 TEST_F(FilePathWatcherTest, LinkedDirectoryPart1) { 697 TEST_F(FilePathWatcherTest, LinkedDirectoryPart1) {
698 FilePathWatcher watcher; 698 FilePathWatcher watcher;
699 FilePath dir(temp_dir_.path().AppendASCII("dir")); 699 FilePath dir(temp_dir_.path().AppendASCII("dir"));
700 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk")); 700 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
701 FilePath file(dir.AppendASCII("file")); 701 FilePath file(dir.AppendASCII("file"));
702 FilePath linkfile(link_dir.AppendASCII("file")); 702 FilePath linkfile(link_dir.AppendASCII("file"));
703 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 703 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
704 // dir/file should exist. 704 // dir/file should exist.
705 ASSERT_TRUE(file_util::CreateDirectory(dir)); 705 ASSERT_TRUE(file_util::CreateDirectory(dir));
706 ASSERT_TRUE(WriteFile(file, "content")); 706 ASSERT_TRUE(WriteFile(file, "content"));
707 // Note that we are watching dir.lnk/file which doesn't exist yet. 707 // Note that we are watching dir.lnk/file which doesn't exist yet.
708 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false)); 708 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false));
709 709
710 ASSERT_TRUE(file_util::CreateSymbolicLink(dir, link_dir)); 710 ASSERT_TRUE(file_util::CreateSymbolicLink(dir, link_dir));
711 VLOG(1) << "Waiting for link creation"; 711 VLOG(1) << "Waiting for link creation";
712 ASSERT_TRUE(WaitForEvents()); 712 ASSERT_TRUE(WaitForEvents());
713 713
714 ASSERT_TRUE(WriteFile(file, "content v2")); 714 ASSERT_TRUE(WriteFile(file, "content v2"));
715 VLOG(1) << "Waiting for file change"; 715 VLOG(1) << "Waiting for file change";
716 ASSERT_TRUE(WaitForEvents()); 716 ASSERT_TRUE(WaitForEvents());
717 717
718 ASSERT_TRUE(file_util::Delete(file, false)); 718 ASSERT_TRUE(base::Delete(file, false));
719 VLOG(1) << "Waiting for file deletion"; 719 VLOG(1) << "Waiting for file deletion";
720 ASSERT_TRUE(WaitForEvents()); 720 ASSERT_TRUE(WaitForEvents());
721 DeleteDelegateOnFileThread(delegate.release()); 721 DeleteDelegateOnFileThread(delegate.release());
722 } 722 }
723 723
724 // Verify that watching a file whose parent directory is a 724 // Verify that watching a file whose parent directory is a
725 // dangling symlink works if the directory is created eventually. 725 // dangling symlink works if the directory is created eventually.
726 TEST_F(FilePathWatcherTest, LinkedDirectoryPart2) { 726 TEST_F(FilePathWatcherTest, LinkedDirectoryPart2) {
727 FilePathWatcher watcher; 727 FilePathWatcher watcher;
728 FilePath dir(temp_dir_.path().AppendASCII("dir")); 728 FilePath dir(temp_dir_.path().AppendASCII("dir"));
729 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk")); 729 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
730 FilePath file(dir.AppendASCII("file")); 730 FilePath file(dir.AppendASCII("file"));
731 FilePath linkfile(link_dir.AppendASCII("file")); 731 FilePath linkfile(link_dir.AppendASCII("file"));
732 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 732 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
733 // Now create the link from dir.lnk pointing to dir but 733 // Now create the link from dir.lnk pointing to dir but
734 // neither dir nor dir/file exist yet. 734 // neither dir nor dir/file exist yet.
735 ASSERT_TRUE(file_util::CreateSymbolicLink(dir, link_dir)); 735 ASSERT_TRUE(file_util::CreateSymbolicLink(dir, link_dir));
736 // Note that we are watching dir.lnk/file. 736 // Note that we are watching dir.lnk/file.
737 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false)); 737 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false));
738 738
739 ASSERT_TRUE(file_util::CreateDirectory(dir)); 739 ASSERT_TRUE(file_util::CreateDirectory(dir));
740 ASSERT_TRUE(WriteFile(file, "content")); 740 ASSERT_TRUE(WriteFile(file, "content"));
741 VLOG(1) << "Waiting for dir/file creation"; 741 VLOG(1) << "Waiting for dir/file creation";
742 ASSERT_TRUE(WaitForEvents()); 742 ASSERT_TRUE(WaitForEvents());
743 743
744 ASSERT_TRUE(WriteFile(file, "content v2")); 744 ASSERT_TRUE(WriteFile(file, "content v2"));
745 VLOG(1) << "Waiting for file change"; 745 VLOG(1) << "Waiting for file change";
746 ASSERT_TRUE(WaitForEvents()); 746 ASSERT_TRUE(WaitForEvents());
747 747
748 ASSERT_TRUE(file_util::Delete(file, false)); 748 ASSERT_TRUE(base::Delete(file, false));
749 VLOG(1) << "Waiting for file deletion"; 749 VLOG(1) << "Waiting for file deletion";
750 ASSERT_TRUE(WaitForEvents()); 750 ASSERT_TRUE(WaitForEvents());
751 DeleteDelegateOnFileThread(delegate.release()); 751 DeleteDelegateOnFileThread(delegate.release());
752 } 752 }
753 753
754 // Verify that watching a file with a symlink on the path 754 // Verify that watching a file with a symlink on the path
755 // to the file works. 755 // to the file works.
756 TEST_F(FilePathWatcherTest, LinkedDirectoryPart3) { 756 TEST_F(FilePathWatcherTest, LinkedDirectoryPart3) {
757 FilePathWatcher watcher; 757 FilePathWatcher watcher;
758 FilePath dir(temp_dir_.path().AppendASCII("dir")); 758 FilePath dir(temp_dir_.path().AppendASCII("dir"));
759 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk")); 759 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
760 FilePath file(dir.AppendASCII("file")); 760 FilePath file(dir.AppendASCII("file"));
761 FilePath linkfile(link_dir.AppendASCII("file")); 761 FilePath linkfile(link_dir.AppendASCII("file"));
762 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 762 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
763 ASSERT_TRUE(file_util::CreateDirectory(dir)); 763 ASSERT_TRUE(file_util::CreateDirectory(dir));
764 ASSERT_TRUE(file_util::CreateSymbolicLink(dir, link_dir)); 764 ASSERT_TRUE(file_util::CreateSymbolicLink(dir, link_dir));
765 // Note that we are watching dir.lnk/file but the file doesn't exist yet. 765 // Note that we are watching dir.lnk/file but the file doesn't exist yet.
766 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false)); 766 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false));
767 767
768 ASSERT_TRUE(WriteFile(file, "content")); 768 ASSERT_TRUE(WriteFile(file, "content"));
769 VLOG(1) << "Waiting for file creation"; 769 VLOG(1) << "Waiting for file creation";
770 ASSERT_TRUE(WaitForEvents()); 770 ASSERT_TRUE(WaitForEvents());
771 771
772 ASSERT_TRUE(WriteFile(file, "content v2")); 772 ASSERT_TRUE(WriteFile(file, "content v2"));
773 VLOG(1) << "Waiting for file change"; 773 VLOG(1) << "Waiting for file change";
774 ASSERT_TRUE(WaitForEvents()); 774 ASSERT_TRUE(WaitForEvents());
775 775
776 ASSERT_TRUE(file_util::Delete(file, false)); 776 ASSERT_TRUE(base::Delete(file, false));
777 VLOG(1) << "Waiting for file deletion"; 777 VLOG(1) << "Waiting for file deletion";
778 ASSERT_TRUE(WaitForEvents()); 778 ASSERT_TRUE(WaitForEvents());
779 DeleteDelegateOnFileThread(delegate.release()); 779 DeleteDelegateOnFileThread(delegate.release());
780 } 780 }
781 781
782 #endif // OS_LINUX 782 #endif // OS_LINUX
783 783
784 enum Permission { 784 enum Permission {
785 Read, 785 Read,
786 Write, 786 Write,
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, false)); 906 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, false));
907 ASSERT_TRUE(WaitForEvents()); 907 ASSERT_TRUE(WaitForEvents());
908 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, true)); 908 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, true));
909 DeleteDelegateOnFileThread(delegate.release()); 909 DeleteDelegateOnFileThread(delegate.release());
910 } 910 }
911 911
912 #endif // OS_MACOSX 912 #endif // OS_MACOSX
913 } // namespace 913 } // namespace
914 914
915 } // namespace base 915 } // namespace base
OLDNEW
« no previous file with comments | « base/file_util_win.cc ('k') | base/files/file_util_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698