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

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

Issue 100573002: Move directory creation functions to base namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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_unittest.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 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 332
333 // Verify that watching a file whose parent directory doesn't exist yet works if 333 // Verify that watching a file whose parent directory doesn't exist yet works if
334 // the directory and file are created eventually. 334 // the directory and file are created eventually.
335 TEST_F(FilePathWatcherTest, NonExistentDirectory) { 335 TEST_F(FilePathWatcherTest, NonExistentDirectory) {
336 FilePathWatcher watcher; 336 FilePathWatcher watcher;
337 FilePath dir(temp_dir_.path().AppendASCII("dir")); 337 FilePath dir(temp_dir_.path().AppendASCII("dir"));
338 FilePath file(dir.AppendASCII("file")); 338 FilePath file(dir.AppendASCII("file"));
339 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 339 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
340 ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false)); 340 ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false));
341 341
342 ASSERT_TRUE(file_util::CreateDirectory(dir)); 342 ASSERT_TRUE(base::CreateDirectory(dir));
343 343
344 ASSERT_TRUE(WriteFile(file, "content")); 344 ASSERT_TRUE(WriteFile(file, "content"));
345 345
346 VLOG(1) << "Waiting for file creation"; 346 VLOG(1) << "Waiting for file creation";
347 ASSERT_TRUE(WaitForEvents()); 347 ASSERT_TRUE(WaitForEvents());
348 348
349 ASSERT_TRUE(WriteFile(file, "content v2")); 349 ASSERT_TRUE(WriteFile(file, "content v2"));
350 VLOG(1) << "Waiting for file change"; 350 VLOG(1) << "Waiting for file change";
351 ASSERT_TRUE(WaitForEvents()); 351 ASSERT_TRUE(WaitForEvents());
352 352
(...skipping 16 matching lines...) Expand all
369 369
370 FilePathWatcher watcher; 370 FilePathWatcher watcher;
371 FilePath file(path.AppendASCII("file")); 371 FilePath file(path.AppendASCII("file"));
372 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 372 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
373 ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false)); 373 ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false));
374 374
375 FilePath sub_path(temp_dir_.path()); 375 FilePath sub_path(temp_dir_.path());
376 for (std::vector<std::string>::const_iterator d(dir_names.begin()); 376 for (std::vector<std::string>::const_iterator d(dir_names.begin());
377 d != dir_names.end(); ++d) { 377 d != dir_names.end(); ++d) {
378 sub_path = sub_path.AppendASCII(*d); 378 sub_path = sub_path.AppendASCII(*d);
379 ASSERT_TRUE(file_util::CreateDirectory(sub_path)); 379 ASSERT_TRUE(base::CreateDirectory(sub_path));
380 } 380 }
381 VLOG(1) << "Create File"; 381 VLOG(1) << "Create File";
382 ASSERT_TRUE(WriteFile(file, "content")); 382 ASSERT_TRUE(WriteFile(file, "content"));
383 VLOG(1) << "Waiting for file creation"; 383 VLOG(1) << "Waiting for file creation";
384 ASSERT_TRUE(WaitForEvents()); 384 ASSERT_TRUE(WaitForEvents());
385 385
386 ASSERT_TRUE(WriteFile(file, "content v2")); 386 ASSERT_TRUE(WriteFile(file, "content v2"));
387 VLOG(1) << "Waiting for file modification"; 387 VLOG(1) << "Waiting for file modification";
388 ASSERT_TRUE(WaitForEvents()); 388 ASSERT_TRUE(WaitForEvents());
389 DeleteDelegateOnFileThread(delegate.release()); 389 DeleteDelegateOnFileThread(delegate.release());
390 } 390 }
391 391
392 #if defined(OS_MACOSX) 392 #if defined(OS_MACOSX)
393 // http://crbug.com/85930 393 // http://crbug.com/85930
394 #define DisappearingDirectory DISABLED_DisappearingDirectory 394 #define DisappearingDirectory DISABLED_DisappearingDirectory
395 #endif 395 #endif
396 TEST_F(FilePathWatcherTest, DisappearingDirectory) { 396 TEST_F(FilePathWatcherTest, DisappearingDirectory) {
397 FilePathWatcher watcher; 397 FilePathWatcher watcher;
398 FilePath dir(temp_dir_.path().AppendASCII("dir")); 398 FilePath dir(temp_dir_.path().AppendASCII("dir"));
399 FilePath file(dir.AppendASCII("file")); 399 FilePath file(dir.AppendASCII("file"));
400 ASSERT_TRUE(file_util::CreateDirectory(dir)); 400 ASSERT_TRUE(base::CreateDirectory(dir));
401 ASSERT_TRUE(WriteFile(file, "content")); 401 ASSERT_TRUE(WriteFile(file, "content"));
402 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 402 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
403 ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false)); 403 ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false));
404 404
405 ASSERT_TRUE(base::DeleteFile(dir, true)); 405 ASSERT_TRUE(base::DeleteFile(dir, true));
406 ASSERT_TRUE(WaitForEvents()); 406 ASSERT_TRUE(WaitForEvents());
407 DeleteDelegateOnFileThread(delegate.release()); 407 DeleteDelegateOnFileThread(delegate.release());
408 } 408 }
409 409
410 // Tests that a file that is deleted and reappears is tracked correctly. 410 // Tests that a file that is deleted and reappears is tracked correctly.
(...skipping 14 matching lines...) Expand all
425 } 425 }
426 426
427 TEST_F(FilePathWatcherTest, WatchDirectory) { 427 TEST_F(FilePathWatcherTest, WatchDirectory) {
428 FilePathWatcher watcher; 428 FilePathWatcher watcher;
429 FilePath dir(temp_dir_.path().AppendASCII("dir")); 429 FilePath dir(temp_dir_.path().AppendASCII("dir"));
430 FilePath file1(dir.AppendASCII("file1")); 430 FilePath file1(dir.AppendASCII("file1"));
431 FilePath file2(dir.AppendASCII("file2")); 431 FilePath file2(dir.AppendASCII("file2"));
432 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 432 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
433 ASSERT_TRUE(SetupWatch(dir, &watcher, delegate.get(), false)); 433 ASSERT_TRUE(SetupWatch(dir, &watcher, delegate.get(), false));
434 434
435 ASSERT_TRUE(file_util::CreateDirectory(dir)); 435 ASSERT_TRUE(base::CreateDirectory(dir));
436 VLOG(1) << "Waiting for directory creation"; 436 VLOG(1) << "Waiting for directory creation";
437 ASSERT_TRUE(WaitForEvents()); 437 ASSERT_TRUE(WaitForEvents());
438 438
439 ASSERT_TRUE(WriteFile(file1, "content")); 439 ASSERT_TRUE(WriteFile(file1, "content"));
440 VLOG(1) << "Waiting for file1 creation"; 440 VLOG(1) << "Waiting for file1 creation";
441 ASSERT_TRUE(WaitForEvents()); 441 ASSERT_TRUE(WaitForEvents());
442 442
443 #if !defined(OS_MACOSX) 443 #if !defined(OS_MACOSX)
444 // Mac implementation does not detect files modified in a directory. 444 // Mac implementation does not detect files modified in a directory.
445 ASSERT_TRUE(WriteFile(file1, "content v2")); 445 ASSERT_TRUE(WriteFile(file1, "content v2"));
(...skipping 18 matching lines...) Expand all
464 FilePath dest(temp_dir_.path().AppendASCII("dest")); 464 FilePath dest(temp_dir_.path().AppendASCII("dest"));
465 FilePath subdir(dir.AppendASCII("subdir")); 465 FilePath subdir(dir.AppendASCII("subdir"));
466 FilePath file(subdir.AppendASCII("file")); 466 FilePath file(subdir.AppendASCII("file"));
467 scoped_ptr<TestDelegate> file_delegate(new TestDelegate(collector())); 467 scoped_ptr<TestDelegate> file_delegate(new TestDelegate(collector()));
468 ASSERT_TRUE(SetupWatch(file, &file_watcher, file_delegate.get(), false)); 468 ASSERT_TRUE(SetupWatch(file, &file_watcher, file_delegate.get(), false));
469 scoped_ptr<TestDelegate> subdir_delegate(new TestDelegate(collector())); 469 scoped_ptr<TestDelegate> subdir_delegate(new TestDelegate(collector()));
470 ASSERT_TRUE(SetupWatch(subdir, &subdir_watcher, subdir_delegate.get(), 470 ASSERT_TRUE(SetupWatch(subdir, &subdir_watcher, subdir_delegate.get(),
471 false)); 471 false));
472 472
473 // Setup a directory hierarchy. 473 // Setup a directory hierarchy.
474 ASSERT_TRUE(file_util::CreateDirectory(subdir)); 474 ASSERT_TRUE(base::CreateDirectory(subdir));
475 ASSERT_TRUE(WriteFile(file, "content")); 475 ASSERT_TRUE(WriteFile(file, "content"));
476 VLOG(1) << "Waiting for file creation"; 476 VLOG(1) << "Waiting for file creation";
477 ASSERT_TRUE(WaitForEvents()); 477 ASSERT_TRUE(WaitForEvents());
478 478
479 // Move the parent directory. 479 // Move the parent directory.
480 base::Move(dir, dest); 480 base::Move(dir, dest);
481 VLOG(1) << "Waiting for directory move"; 481 VLOG(1) << "Waiting for directory move";
482 ASSERT_TRUE(WaitForEvents()); 482 ASSERT_TRUE(WaitForEvents());
483 DeleteDelegateOnFileThread(file_delegate.release()); 483 DeleteDelegateOnFileThread(file_delegate.release());
484 DeleteDelegateOnFileThread(subdir_delegate.release()); 484 DeleteDelegateOnFileThread(subdir_delegate.release());
485 } 485 }
486 486
487 #if defined(OS_WIN) 487 #if defined(OS_WIN)
488 TEST_F(FilePathWatcherTest, RecursiveWatch) { 488 TEST_F(FilePathWatcherTest, RecursiveWatch) {
489 FilePathWatcher watcher; 489 FilePathWatcher watcher;
490 FilePath dir(temp_dir_.path().AppendASCII("dir")); 490 FilePath dir(temp_dir_.path().AppendASCII("dir"));
491 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 491 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
492 ASSERT_TRUE(SetupWatch(dir, &watcher, delegate.get(), true)); 492 ASSERT_TRUE(SetupWatch(dir, &watcher, delegate.get(), true));
493 493
494 // Main directory("dir") creation. 494 // Main directory("dir") creation.
495 ASSERT_TRUE(file_util::CreateDirectory(dir)); 495 ASSERT_TRUE(base::CreateDirectory(dir));
496 ASSERT_TRUE(WaitForEvents()); 496 ASSERT_TRUE(WaitForEvents());
497 497
498 // Create "$dir/file1". 498 // Create "$dir/file1".
499 FilePath file1(dir.AppendASCII("file1")); 499 FilePath file1(dir.AppendASCII("file1"));
500 ASSERT_TRUE(WriteFile(file1, "content")); 500 ASSERT_TRUE(WriteFile(file1, "content"));
501 ASSERT_TRUE(WaitForEvents()); 501 ASSERT_TRUE(WaitForEvents());
502 502
503 // Create "$dir/subdir". 503 // Create "$dir/subdir".
504 FilePath subdir(dir.AppendASCII("subdir")); 504 FilePath subdir(dir.AppendASCII("subdir"));
505 ASSERT_TRUE(file_util::CreateDirectory(subdir)); 505 ASSERT_TRUE(base::CreateDirectory(subdir));
506 ASSERT_TRUE(WaitForEvents()); 506 ASSERT_TRUE(WaitForEvents());
507 507
508 // Create "$dir/subdir/subdir_file1". 508 // Create "$dir/subdir/subdir_file1".
509 FilePath subdir_file1(subdir.AppendASCII("subdir_file1")); 509 FilePath subdir_file1(subdir.AppendASCII("subdir_file1"));
510 ASSERT_TRUE(WriteFile(subdir_file1, "content")); 510 ASSERT_TRUE(WriteFile(subdir_file1, "content"));
511 ASSERT_TRUE(WaitForEvents()); 511 ASSERT_TRUE(WaitForEvents());
512 512
513 // Create "$dir/subdir/subdir_child_dir". 513 // Create "$dir/subdir/subdir_child_dir".
514 FilePath subdir_child_dir(subdir.AppendASCII("subdir_child_dir")); 514 FilePath subdir_child_dir(subdir.AppendASCII("subdir_child_dir"));
515 ASSERT_TRUE(file_util::CreateDirectory(subdir_child_dir)); 515 ASSERT_TRUE(base::CreateDirectory(subdir_child_dir));
516 ASSERT_TRUE(WaitForEvents()); 516 ASSERT_TRUE(WaitForEvents());
517 517
518 // Create "$dir/subdir/subdir_child_dir/child_dir_file1". 518 // Create "$dir/subdir/subdir_child_dir/child_dir_file1".
519 FilePath child_dir_file1(subdir_child_dir.AppendASCII("child_dir_file1")); 519 FilePath child_dir_file1(subdir_child_dir.AppendASCII("child_dir_file1"));
520 ASSERT_TRUE(WriteFile(child_dir_file1, "content v2")); 520 ASSERT_TRUE(WriteFile(child_dir_file1, "content v2"));
521 ASSERT_TRUE(WaitForEvents()); 521 ASSERT_TRUE(WaitForEvents());
522 522
523 // Write into "$dir/subdir/subdir_child_dir/child_dir_file1". 523 // Write into "$dir/subdir/subdir_child_dir/child_dir_file1".
524 ASSERT_TRUE(WriteFile(child_dir_file1, "content")); 524 ASSERT_TRUE(WriteFile(child_dir_file1, "content"));
525 ASSERT_TRUE(WaitForEvents()); 525 ASSERT_TRUE(WaitForEvents());
(...skipping 26 matching lines...) Expand all
552 FilePathWatcher file_watcher; 552 FilePathWatcher file_watcher;
553 FilePathWatcher subdir_watcher; 553 FilePathWatcher subdir_watcher;
554 FilePath source_dir(temp_dir_.path().AppendASCII("source")); 554 FilePath source_dir(temp_dir_.path().AppendASCII("source"));
555 FilePath source_subdir(source_dir.AppendASCII("subdir")); 555 FilePath source_subdir(source_dir.AppendASCII("subdir"));
556 FilePath source_file(source_subdir.AppendASCII("file")); 556 FilePath source_file(source_subdir.AppendASCII("file"));
557 FilePath dest_dir(temp_dir_.path().AppendASCII("dest")); 557 FilePath dest_dir(temp_dir_.path().AppendASCII("dest"));
558 FilePath dest_subdir(dest_dir.AppendASCII("subdir")); 558 FilePath dest_subdir(dest_dir.AppendASCII("subdir"));
559 FilePath dest_file(dest_subdir.AppendASCII("file")); 559 FilePath dest_file(dest_subdir.AppendASCII("file"));
560 560
561 // Setup a directory hierarchy. 561 // Setup a directory hierarchy.
562 ASSERT_TRUE(file_util::CreateDirectory(source_subdir)); 562 ASSERT_TRUE(base::CreateDirectory(source_subdir));
563 ASSERT_TRUE(WriteFile(source_file, "content")); 563 ASSERT_TRUE(WriteFile(source_file, "content"));
564 564
565 scoped_ptr<TestDelegate> file_delegate(new TestDelegate(collector())); 565 scoped_ptr<TestDelegate> file_delegate(new TestDelegate(collector()));
566 ASSERT_TRUE(SetupWatch(dest_file, &file_watcher, file_delegate.get(), false)); 566 ASSERT_TRUE(SetupWatch(dest_file, &file_watcher, file_delegate.get(), false));
567 scoped_ptr<TestDelegate> subdir_delegate(new TestDelegate(collector())); 567 scoped_ptr<TestDelegate> subdir_delegate(new TestDelegate(collector()));
568 ASSERT_TRUE(SetupWatch(dest_subdir, &subdir_watcher, subdir_delegate.get(), 568 ASSERT_TRUE(SetupWatch(dest_subdir, &subdir_watcher, subdir_delegate.get(),
569 false)); 569 false));
570 570
571 // Move the directory into place, s.t. the watched file appears. 571 // Move the directory into place, s.t. the watched file appears.
572 ASSERT_TRUE(base::Move(source_dir, dest_dir)); 572 ASSERT_TRUE(base::Move(source_dir, dest_dir));
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 // Verify that watching a file whose parent directory is a link that 676 // Verify that watching a file whose parent directory is a link that
677 // doesn't exist yet works if the symlink is created eventually. 677 // doesn't exist yet works if the symlink is created eventually.
678 TEST_F(FilePathWatcherTest, LinkedDirectoryPart1) { 678 TEST_F(FilePathWatcherTest, LinkedDirectoryPart1) {
679 FilePathWatcher watcher; 679 FilePathWatcher watcher;
680 FilePath dir(temp_dir_.path().AppendASCII("dir")); 680 FilePath dir(temp_dir_.path().AppendASCII("dir"));
681 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk")); 681 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
682 FilePath file(dir.AppendASCII("file")); 682 FilePath file(dir.AppendASCII("file"));
683 FilePath linkfile(link_dir.AppendASCII("file")); 683 FilePath linkfile(link_dir.AppendASCII("file"));
684 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 684 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
685 // dir/file should exist. 685 // dir/file should exist.
686 ASSERT_TRUE(file_util::CreateDirectory(dir)); 686 ASSERT_TRUE(base::CreateDirectory(dir));
687 ASSERT_TRUE(WriteFile(file, "content")); 687 ASSERT_TRUE(WriteFile(file, "content"));
688 // Note that we are watching dir.lnk/file which doesn't exist yet. 688 // Note that we are watching dir.lnk/file which doesn't exist yet.
689 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false)); 689 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false));
690 690
691 ASSERT_TRUE(CreateSymbolicLink(dir, link_dir)); 691 ASSERT_TRUE(CreateSymbolicLink(dir, link_dir));
692 VLOG(1) << "Waiting for link creation"; 692 VLOG(1) << "Waiting for link creation";
693 ASSERT_TRUE(WaitForEvents()); 693 ASSERT_TRUE(WaitForEvents());
694 694
695 ASSERT_TRUE(WriteFile(file, "content v2")); 695 ASSERT_TRUE(WriteFile(file, "content v2"));
696 VLOG(1) << "Waiting for file change"; 696 VLOG(1) << "Waiting for file change";
(...skipping 13 matching lines...) Expand all
710 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk")); 710 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
711 FilePath file(dir.AppendASCII("file")); 711 FilePath file(dir.AppendASCII("file"));
712 FilePath linkfile(link_dir.AppendASCII("file")); 712 FilePath linkfile(link_dir.AppendASCII("file"));
713 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 713 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
714 // Now create the link from dir.lnk pointing to dir but 714 // Now create the link from dir.lnk pointing to dir but
715 // neither dir nor dir/file exist yet. 715 // neither dir nor dir/file exist yet.
716 ASSERT_TRUE(CreateSymbolicLink(dir, link_dir)); 716 ASSERT_TRUE(CreateSymbolicLink(dir, link_dir));
717 // Note that we are watching dir.lnk/file. 717 // Note that we are watching dir.lnk/file.
718 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false)); 718 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false));
719 719
720 ASSERT_TRUE(file_util::CreateDirectory(dir)); 720 ASSERT_TRUE(base::CreateDirectory(dir));
721 ASSERT_TRUE(WriteFile(file, "content")); 721 ASSERT_TRUE(WriteFile(file, "content"));
722 VLOG(1) << "Waiting for dir/file creation"; 722 VLOG(1) << "Waiting for dir/file creation";
723 ASSERT_TRUE(WaitForEvents()); 723 ASSERT_TRUE(WaitForEvents());
724 724
725 ASSERT_TRUE(WriteFile(file, "content v2")); 725 ASSERT_TRUE(WriteFile(file, "content v2"));
726 VLOG(1) << "Waiting for file change"; 726 VLOG(1) << "Waiting for file change";
727 ASSERT_TRUE(WaitForEvents()); 727 ASSERT_TRUE(WaitForEvents());
728 728
729 ASSERT_TRUE(base::DeleteFile(file, false)); 729 ASSERT_TRUE(base::DeleteFile(file, false));
730 VLOG(1) << "Waiting for file deletion"; 730 VLOG(1) << "Waiting for file deletion";
731 ASSERT_TRUE(WaitForEvents()); 731 ASSERT_TRUE(WaitForEvents());
732 DeleteDelegateOnFileThread(delegate.release()); 732 DeleteDelegateOnFileThread(delegate.release());
733 } 733 }
734 734
735 // Verify that watching a file with a symlink on the path 735 // Verify that watching a file with a symlink on the path
736 // to the file works. 736 // to the file works.
737 TEST_F(FilePathWatcherTest, LinkedDirectoryPart3) { 737 TEST_F(FilePathWatcherTest, LinkedDirectoryPart3) {
738 FilePathWatcher watcher; 738 FilePathWatcher watcher;
739 FilePath dir(temp_dir_.path().AppendASCII("dir")); 739 FilePath dir(temp_dir_.path().AppendASCII("dir"));
740 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk")); 740 FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
741 FilePath file(dir.AppendASCII("file")); 741 FilePath file(dir.AppendASCII("file"));
742 FilePath linkfile(link_dir.AppendASCII("file")); 742 FilePath linkfile(link_dir.AppendASCII("file"));
743 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 743 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
744 ASSERT_TRUE(file_util::CreateDirectory(dir)); 744 ASSERT_TRUE(base::CreateDirectory(dir));
745 ASSERT_TRUE(CreateSymbolicLink(dir, link_dir)); 745 ASSERT_TRUE(CreateSymbolicLink(dir, link_dir));
746 // Note that we are watching dir.lnk/file but the file doesn't exist yet. 746 // Note that we are watching dir.lnk/file but the file doesn't exist yet.
747 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false)); 747 ASSERT_TRUE(SetupWatch(linkfile, &watcher, delegate.get(), false));
748 748
749 ASSERT_TRUE(WriteFile(file, "content")); 749 ASSERT_TRUE(WriteFile(file, "content"));
750 VLOG(1) << "Waiting for file creation"; 750 VLOG(1) << "Waiting for file creation";
751 ASSERT_TRUE(WaitForEvents()); 751 ASSERT_TRUE(WaitForEvents());
752 752
753 ASSERT_TRUE(WriteFile(file, "content v2")); 753 ASSERT_TRUE(WriteFile(file, "content v2"));
754 VLOG(1) << "Waiting for file change"; 754 VLOG(1) << "Waiting for file change";
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 // Windows implementation of FilePathWatcher catches attribute changes that 805 // Windows implementation of FilePathWatcher catches attribute changes that
806 // don't affect the path being watched. 806 // don't affect the path being watched.
807 // http://crbug.com/78045 807 // http://crbug.com/78045
808 808
809 // Verify that changing attributes on a directory works. 809 // Verify that changing attributes on a directory works.
810 TEST_F(FilePathWatcherTest, DirAttributesChanged) { 810 TEST_F(FilePathWatcherTest, DirAttributesChanged) {
811 FilePath test_dir1(temp_dir_.path().AppendASCII("DirAttributesChangedDir1")); 811 FilePath test_dir1(temp_dir_.path().AppendASCII("DirAttributesChangedDir1"));
812 FilePath test_dir2(test_dir1.AppendASCII("DirAttributesChangedDir2")); 812 FilePath test_dir2(test_dir1.AppendASCII("DirAttributesChangedDir2"));
813 FilePath test_file(test_dir2.AppendASCII("DirAttributesChangedFile")); 813 FilePath test_file(test_dir2.AppendASCII("DirAttributesChangedFile"));
814 // Setup a directory hierarchy. 814 // Setup a directory hierarchy.
815 ASSERT_TRUE(file_util::CreateDirectory(test_dir1)); 815 ASSERT_TRUE(base::CreateDirectory(test_dir1));
816 ASSERT_TRUE(file_util::CreateDirectory(test_dir2)); 816 ASSERT_TRUE(base::CreateDirectory(test_dir2));
817 ASSERT_TRUE(WriteFile(test_file, "content")); 817 ASSERT_TRUE(WriteFile(test_file, "content"));
818 818
819 FilePathWatcher watcher; 819 FilePathWatcher watcher;
820 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector())); 820 scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
821 ASSERT_TRUE(SetupWatch(test_file, &watcher, delegate.get(), false)); 821 ASSERT_TRUE(SetupWatch(test_file, &watcher, delegate.get(), false));
822 822
823 // We should not get notified in this case as it hasn't affected our ability 823 // We should not get notified in this case as it hasn't affected our ability
824 // to access the file. 824 // to access the file.
825 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Read, false)); 825 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Read, false));
826 loop_.PostDelayedTask(FROM_HERE, 826 loop_.PostDelayedTask(FROM_HERE,
827 MessageLoop::QuitWhenIdleClosure(), 827 MessageLoop::QuitWhenIdleClosure(),
828 TestTimeouts::tiny_timeout()); 828 TestTimeouts::tiny_timeout());
829 ASSERT_FALSE(WaitForEvents()); 829 ASSERT_FALSE(WaitForEvents());
830 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Read, true)); 830 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Read, true));
831 831
832 // We should get notified in this case because filepathwatcher can no 832 // We should get notified in this case because filepathwatcher can no
833 // longer access the file 833 // longer access the file
834 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, false)); 834 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, false));
835 ASSERT_TRUE(WaitForEvents()); 835 ASSERT_TRUE(WaitForEvents());
836 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, true)); 836 ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, true));
837 DeleteDelegateOnFileThread(delegate.release()); 837 DeleteDelegateOnFileThread(delegate.release());
838 } 838 }
839 839
840 #endif // OS_MACOSX 840 #endif // OS_MACOSX
841 } // namespace 841 } // namespace
842 842
843 } // namespace base 843 } // namespace base
OLDNEW
« no previous file with comments | « base/file_util_win.cc ('k') | base/files/file_util_proxy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698