| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "base/files/file_path_watcher_kqueue.h" | 6 #include "base/files/file_path_watcher_kqueue.h" | 
| 7 | 7 | 
| 8 #if !defined(OS_IOS) | 8 #if !defined(OS_IOS) | 
| 9 #include "base/files/file_path_watcher_fsevents.h" | 9 #include "base/files/file_path_watcher_fsevents.h" | 
| 10 #endif | 10 #endif | 
| 11 | 11 | 
| 12 namespace base { | 12 namespace base { | 
| 13 | 13 | 
| 14 namespace { | 14 namespace { | 
| 15 | 15 | 
| 16 class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate { | 16 class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate { | 
| 17  public: | 17  public: | 
| 18   virtual bool Watch(const FilePath& path, | 18   virtual bool Watch(const FilePath& path, | 
| 19                      bool recursive, | 19                      bool recursive, | 
| 20                      const FilePathWatcher::Callback& callback) OVERRIDE { | 20                      const FilePathWatcher::Callback& callback) override { | 
| 21     // Use kqueue for non-recursive watches and FSEvents for recursive ones. | 21     // Use kqueue for non-recursive watches and FSEvents for recursive ones. | 
| 22     DCHECK(!impl_.get()); | 22     DCHECK(!impl_.get()); | 
| 23     if (recursive) { | 23     if (recursive) { | 
| 24       if (!FilePathWatcher::RecursiveWatchAvailable()) | 24       if (!FilePathWatcher::RecursiveWatchAvailable()) | 
| 25         return false; | 25         return false; | 
| 26 #if !defined(OS_IOS) | 26 #if !defined(OS_IOS) | 
| 27       impl_ = new FilePathWatcherFSEvents(); | 27       impl_ = new FilePathWatcherFSEvents(); | 
| 28 #endif  // OS_IOS | 28 #endif  // OS_IOS | 
| 29     } else { | 29     } else { | 
| 30       impl_ = new FilePathWatcherKQueue(); | 30       impl_ = new FilePathWatcherKQueue(); | 
| 31     } | 31     } | 
| 32     DCHECK(impl_.get()); | 32     DCHECK(impl_.get()); | 
| 33     return impl_->Watch(path, recursive, callback); | 33     return impl_->Watch(path, recursive, callback); | 
| 34   } | 34   } | 
| 35 | 35 | 
| 36   virtual void Cancel() OVERRIDE { | 36   virtual void Cancel() override { | 
| 37     if (impl_.get()) | 37     if (impl_.get()) | 
| 38       impl_->Cancel(); | 38       impl_->Cancel(); | 
| 39     set_cancelled(); | 39     set_cancelled(); | 
| 40   } | 40   } | 
| 41 | 41 | 
| 42   virtual void CancelOnMessageLoopThread() OVERRIDE { | 42   virtual void CancelOnMessageLoopThread() override { | 
| 43     if (impl_.get()) | 43     if (impl_.get()) | 
| 44       impl_->Cancel(); | 44       impl_->Cancel(); | 
| 45     set_cancelled(); | 45     set_cancelled(); | 
| 46   } | 46   } | 
| 47 | 47 | 
| 48  protected: | 48  protected: | 
| 49   virtual ~FilePathWatcherImpl() {} | 49   virtual ~FilePathWatcherImpl() {} | 
| 50 | 50 | 
| 51   scoped_refptr<PlatformDelegate> impl_; | 51   scoped_refptr<PlatformDelegate> impl_; | 
| 52 }; | 52 }; | 
| 53 | 53 | 
| 54 }  // namespace | 54 }  // namespace | 
| 55 | 55 | 
| 56 FilePathWatcher::FilePathWatcher() { | 56 FilePathWatcher::FilePathWatcher() { | 
| 57   impl_ = new FilePathWatcherImpl(); | 57   impl_ = new FilePathWatcherImpl(); | 
| 58 } | 58 } | 
| 59 | 59 | 
| 60 }  // namespace base | 60 }  // namespace base | 
| OLD | NEW | 
|---|