Index: base/directory_watcher_unittest.cc |
diff --git a/base/directory_watcher_unittest.cc b/base/directory_watcher_unittest.cc |
index 6a2abc90cc7e62c31710af7a642f3fc498069967..1b15de80da9beeb9874bd5017b822851fc0e5eca 100644 |
--- a/base/directory_watcher_unittest.cc |
+++ b/base/directory_watcher_unittest.cc |
@@ -13,6 +13,7 @@ |
#include "base/path_service.h" |
#include "base/platform_thread.h" |
#include "base/string_util.h" |
+#include "base/thread.h" |
#if defined(OS_WIN) |
#include "base/win_util.h" |
#endif // defined(OS_WIN) |
@@ -151,7 +152,7 @@ class TestDelegate : public DirectoryWatcher::Delegate { |
TEST_F(DirectoryWatcherTest, NewFile) { |
DirectoryWatcher watcher; |
TestDelegate delegate(this); |
- ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, false)); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, NULL, false)); |
SetExpectedNumberOfNotifiedDelegates(1); |
ASSERT_TRUE(WriteTestFile(test_dir_.AppendASCII("test_file"), "content")); |
@@ -166,7 +167,7 @@ TEST_F(DirectoryWatcherTest, ModifiedFile) { |
DirectoryWatcher watcher; |
TestDelegate delegate(this); |
- ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, false)); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, NULL, false)); |
// Now make sure we get notified if the file is modified. |
SetExpectedNumberOfNotifiedDelegates(1); |
@@ -181,7 +182,7 @@ TEST_F(DirectoryWatcherTest, DeletedFile) { |
DirectoryWatcher watcher; |
TestDelegate delegate(this); |
- ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, false)); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, NULL, false)); |
// Now make sure we get notified if the file is deleted. |
SetExpectedNumberOfNotifiedDelegates(1); |
@@ -195,7 +196,7 @@ TEST_F(DirectoryWatcherTest, Unregister) { |
{ |
DirectoryWatcher watcher; |
- ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, false)); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, NULL, false)); |
// And then let it fall out of scope, clearing its watch. |
} |
@@ -209,15 +210,10 @@ TEST_F(DirectoryWatcherTest, Unregister) { |
TEST_F(DirectoryWatcherTest, SubDirRecursive) { |
FilePath subdir(CreateTestDirDirectoryASCII("SubDir", true)); |
-#if defined(OS_LINUX) |
- // TODO(port): Recursive watches are not implemented on Linux. |
- return; |
-#endif // !defined(OS_WIN) |
- |
// Verify that modifications to a subdirectory are noticed by recursive watch. |
TestDelegate delegate(this); |
DirectoryWatcher watcher; |
- ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, true)); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, NULL, true)); |
// Write a file to the subdir. |
SetExpectedNumberOfNotifiedDelegates(1); |
ASSERT_TRUE(WriteTestFile(subdir.AppendASCII("test_file"), "some content")); |
@@ -244,7 +240,7 @@ TEST_F(DirectoryWatcherTest, SubDirNonRecursive) { |
// by a not-recursive watch. |
DirectoryWatcher watcher; |
TestDelegate delegate(this); |
- ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, false)); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, NULL, false)); |
// Modify the test file. There should be no notifications. |
SetExpectedNumberOfNotifiedDelegates(0); |
@@ -276,7 +272,7 @@ class Deleter : public DirectoryWatcher::Delegate { |
TEST_F(DirectoryWatcherTest, DeleteDuringNotify) { |
DirectoryWatcher* watcher = new DirectoryWatcher; |
Deleter deleter(watcher, &loop_); // Takes ownership of watcher. |
- ASSERT_TRUE(watcher->Watch(test_dir_, &deleter, false)); |
+ ASSERT_TRUE(watcher->Watch(test_dir_, &deleter, NULL, false)); |
ASSERT_TRUE(WriteTestFile(test_dir_.AppendASCII("test_file"), "content")); |
loop_.Run(); |
@@ -286,11 +282,21 @@ TEST_F(DirectoryWatcherTest, DeleteDuringNotify) { |
ASSERT_TRUE(deleter.watcher_.get() == NULL); |
} |
+TEST_F(DirectoryWatcherTest, BackendLoop) { |
+ base::Thread thread("test"); |
+ ASSERT_TRUE(thread.Start()); |
+ |
+ DirectoryWatcher watcher; |
+ TestDelegate delegate(this); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, thread.message_loop(), |
+ true)); |
+} |
+ |
TEST_F(DirectoryWatcherTest, MultipleWatchersSingleFile) { |
DirectoryWatcher watcher1, watcher2; |
TestDelegate delegate1(this), delegate2(this); |
- ASSERT_TRUE(watcher1.Watch(test_dir_, &delegate1, false)); |
- ASSERT_TRUE(watcher2.Watch(test_dir_, &delegate2, false)); |
+ ASSERT_TRUE(watcher1.Watch(test_dir_, &delegate1, NULL, false)); |
+ ASSERT_TRUE(watcher2.Watch(test_dir_, &delegate2, NULL, false)); |
SetExpectedNumberOfNotifiedDelegates(2); |
ASSERT_TRUE(WriteTestFile(test_dir_.AppendASCII("test_file"), "content")); |
@@ -304,7 +310,8 @@ TEST_F(DirectoryWatcherTest, MultipleWatchersDifferentFiles) { |
FilePath subdirs[kNumberOfWatchers]; |
for (int i = 0; i < kNumberOfWatchers; i++) { |
subdirs[i] = CreateTestDirDirectoryASCII("Dir" + IntToString(i), false); |
- ASSERT_TRUE(watchers[i].Watch(subdirs[i], &delegates[i], false)); |
+ ASSERT_TRUE(watchers[i].Watch(subdirs[i], &delegates[i], |
+ NULL, ((i % 2) == 0))); |
} |
for (int i = 0; i < kNumberOfWatchers; i++) { |
// Verify that we only get modifications from one watcher (each watcher has |
@@ -328,7 +335,7 @@ TEST_F(DirectoryWatcherTest, MultipleWatchersDifferentFiles) { |
TEST_F(DirectoryWatcherTest, WatchCreatedDirectory) { |
TestDelegate delegate(this); |
DirectoryWatcher watcher; |
- ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, true)); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, NULL, true)); |
SetExpectedNumberOfNotifiedDelegates(1); |
FilePath subdir(CreateTestDirDirectoryASCII("SubDir", true)); |
@@ -347,7 +354,7 @@ TEST_F(DirectoryWatcherTest, RecursiveWatchDeletedSubdirectory) { |
TestDelegate delegate(this); |
DirectoryWatcher watcher; |
- ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, true)); |
+ ASSERT_TRUE(watcher.Watch(test_dir_, &delegate, NULL, true)); |
// Write a file to the subdir. |
SetExpectedNumberOfNotifiedDelegates(1); |
@@ -367,8 +374,8 @@ TEST_F(DirectoryWatcherTest, MoveFileAcrossWatches) { |
TestDelegate delegate1(this), delegate2(this); |
DirectoryWatcher watcher1, watcher2; |
- ASSERT_TRUE(watcher1.Watch(subdir1, &delegate1, true)); |
- ASSERT_TRUE(watcher2.Watch(subdir2, &delegate2, true)); |
+ ASSERT_TRUE(watcher1.Watch(subdir1, &delegate1, NULL, true)); |
+ ASSERT_TRUE(watcher2.Watch(subdir2, &delegate2, NULL, true)); |
SetExpectedNumberOfNotifiedDelegates(1); |
ASSERT_TRUE(WriteTestFile(subdir1.AppendASCII("file"), "some content")); |
@@ -397,8 +404,8 @@ TEST_F(DirectoryWatcherTest, MoveFileAcrossWatches) { |
// Basic test: add a file and verify we notice it. |
TEST_F(DirectoryWatcherTest, NonExistentDirectory) { |
DirectoryWatcher watcher; |
- ASSERT_FALSE(watcher.Watch(test_dir_.AppendASCII("does-not-exist"), NULL, |
- false)); |
+ ASSERT_FALSE(watcher.Watch(test_dir_.AppendASCII("does-not-exist"), |
+ NULL, NULL, false)); |
} |
} // namespace |