| Index: base/files/file_path_watcher_linux.cc
|
| diff --git a/base/files/file_path_watcher_linux.cc b/base/files/file_path_watcher_linux.cc
|
| index 9e550227dfc9b82ac08ac7cc852254c7d4bf3ac2..690ac6dedb3f42b7d304d93bd5dc82492c9280f1 100644
|
| --- a/base/files/file_path_watcher_linux.cc
|
| +++ b/base/files/file_path_watcher_linux.cc
|
| @@ -101,7 +101,7 @@ class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate,
|
| // Returns true if watch for |path| has been added successfully.
|
| virtual bool Watch(const FilePath& path,
|
| bool recursive,
|
| - FilePathWatcher::Delegate* delegate) OVERRIDE;
|
| + const FilePathWatcher::Callback& callback) OVERRIDE;
|
|
|
| // Cancel the watch. This unregisters the instance with InotifyReader.
|
| virtual void Cancel() OVERRIDE;
|
| @@ -137,8 +137,8 @@ class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate,
|
| // that exists. Updates |watched_path_|. Returns true on success.
|
| bool UpdateWatches() WARN_UNUSED_RESULT;
|
|
|
| - // Delegate to notify upon changes.
|
| - scoped_refptr<FilePathWatcher::Delegate> delegate_;
|
| + // Callback to notify upon changes.
|
| + FilePathWatcher::Callback callback_;
|
|
|
| // The file or directory we're supposed to watch.
|
| FilePath target_;
|
| @@ -295,8 +295,7 @@ void InotifyReader::OnInotifyEvent(const inotify_event* event) {
|
| }
|
| }
|
|
|
| -FilePathWatcherImpl::FilePathWatcherImpl()
|
| - : delegate_(NULL) {
|
| +FilePathWatcherImpl::FilePathWatcherImpl() {
|
| }
|
|
|
| void FilePathWatcherImpl::OnFilePathChanged(InotifyReader::Watch fired_watch,
|
| @@ -339,7 +338,7 @@ void FilePathWatcherImpl::OnFilePathChanged(InotifyReader::Watch fired_watch,
|
| // IN_ISDIR set in the event masks. As a result we may sometimes
|
| // call UpdateWatches() unnecessarily.
|
| if (change_on_target_path && !UpdateWatches()) {
|
| - delegate_->OnFilePathError(target_);
|
| + callback_.Run(target_, true /* error */);
|
| return;
|
| }
|
|
|
| @@ -354,7 +353,7 @@ void FilePathWatcherImpl::OnFilePathChanged(InotifyReader::Watch fired_watch,
|
| if (target_changed ||
|
| (change_on_target_path && !created) ||
|
| (change_on_target_path && file_util::PathExists(target_))) {
|
| - delegate_->OnFilePathChanged(target_);
|
| + callback_.Run(target_, false);
|
| return;
|
| }
|
| }
|
| @@ -363,7 +362,7 @@ void FilePathWatcherImpl::OnFilePathChanged(InotifyReader::Watch fired_watch,
|
|
|
| bool FilePathWatcherImpl::Watch(const FilePath& path,
|
| bool recursive,
|
| - FilePathWatcher::Delegate* delegate) {
|
| + const FilePathWatcher::Callback& callback) {
|
| DCHECK(target_.empty());
|
| DCHECK(MessageLoopForIO::current());
|
| if (recursive) {
|
| @@ -373,7 +372,7 @@ bool FilePathWatcherImpl::Watch(const FilePath& path,
|
| }
|
|
|
| set_message_loop(base::MessageLoopProxy::current());
|
| - delegate_ = delegate;
|
| + callback_ = callback;
|
| target_ = path;
|
| MessageLoop::current()->AddDestructionObserver(this);
|
|
|
| @@ -390,7 +389,7 @@ bool FilePathWatcherImpl::Watch(const FilePath& path,
|
| }
|
|
|
| void FilePathWatcherImpl::Cancel() {
|
| - if (!delegate_) {
|
| + if (callback_.is_null()) {
|
| // Watch was never called, or the |message_loop_| thread is already gone.
|
| set_cancelled();
|
| return;
|
| @@ -410,9 +409,9 @@ void FilePathWatcherImpl::CancelOnMessageLoopThread() {
|
| if (!is_cancelled())
|
| set_cancelled();
|
|
|
| - if (delegate_) {
|
| + if (!callback_.is_null()) {
|
| MessageLoop::current()->RemoveDestructionObserver(this);
|
| - delegate_ = NULL;
|
| + callback_.Reset();
|
| }
|
|
|
| for (WatchVector::iterator watch_entry(watches_.begin());
|
|
|