Move FilePathWatcher to base/files.

FilePathWatcher is going to be used in future for monitoring
changes to /etc/resolv.conf so it needs live somewhere where
various consumers can get at it without incurring the wrath
of the layering gods.

TEST=existing tests
BUG=67734

Review URL: http://codereview.chromium.org/6793020

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81606 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: 493c8001f5011b3f0aacf06a57df7f523b09b23c
diff --git a/base/files/file_path_watcher.cc b/base/files/file_path_watcher.cc
new file mode 100644
index 0000000..7ce64ac
--- /dev/null
+++ b/base/files/file_path_watcher.cc
@@ -0,0 +1,33 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Cross platform methods for FilePathWatcher. See the various platform
+// specific implementation files, too.
+
+#include "base/files/file_path_watcher.h"
+
+#include "base/logging.h"
+#include "base/message_loop.h"
+
+namespace base {
+namespace files {
+
+FilePathWatcher::~FilePathWatcher() {
+  impl_->Cancel();
+}
+
+bool FilePathWatcher::Watch(const FilePath& path, Delegate* delegate) {
+  DCHECK(path.IsAbsolute());
+  return impl_->Watch(path, delegate);
+}
+
+FilePathWatcher::PlatformDelegate::PlatformDelegate(): cancelled_(false) {
+}
+
+FilePathWatcher::PlatformDelegate::~PlatformDelegate() {
+  DCHECK(is_cancelled());
+}
+
+}  // namespace files
+}  // namespace base