| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/file_path_watcher.h" | 5 #include "chrome/browser/file_path_watcher.h" |
| 6 | 6 |
| 7 #include <CoreServices/CoreServices.h> | 7 #include <CoreServices/CoreServices.h> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 | 100 |
| 101 FilePathWatcherImpl::FilePathWatcherImpl() | 101 FilePathWatcherImpl::FilePathWatcherImpl() |
| 102 : fsevent_stream_(NULL), | 102 : fsevent_stream_(NULL), |
| 103 canceled_(false) { | 103 canceled_(false) { |
| 104 } | 104 } |
| 105 | 105 |
| 106 void FilePathWatcherImpl::OnFilePathChanged() { | 106 void FilePathWatcherImpl::OnFilePathChanged() { |
| 107 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); | 107 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
| 108 DCHECK(!target_.empty()); | 108 DCHECK(!target_.empty()); |
| 109 | 109 |
| 110 file_util::FileInfo file_info; | 110 base::PlatformFileInfo file_info; |
| 111 bool file_exists = file_util::GetFileInfo(target_, &file_info); | 111 bool file_exists = file_util::GetFileInfo(target_, &file_info); |
| 112 if (file_exists && (last_modified_.is_null() || | 112 if (file_exists && (last_modified_.is_null() || |
| 113 last_modified_ != file_info.last_modified)) { | 113 last_modified_ != file_info.last_modified)) { |
| 114 last_modified_ = file_info.last_modified; | 114 last_modified_ = file_info.last_modified; |
| 115 first_notification_ = base::Time::Now(); | 115 first_notification_ = base::Time::Now(); |
| 116 delegate_->OnFilePathChanged(target_); | 116 delegate_->OnFilePathChanged(target_); |
| 117 } else if (file_exists && !first_notification_.is_null()) { | 117 } else if (file_exists && !first_notification_.is_null()) { |
| 118 // The target's last modification time is equal to what's on record. This | 118 // The target's last modification time is equal to what's on record. This |
| 119 // means that either an unrelated event occurred, or the target changed | 119 // means that either an unrelated event occurred, or the target changed |
| 120 // again (file modification times only have a resolution of 1s). Comparing | 120 // again (file modification times only have a resolution of 1s). Comparing |
| (...skipping 22 matching lines...) Expand all Loading... |
| 143 | 143 |
| 144 bool FilePathWatcherImpl::Watch(const FilePath& path, | 144 bool FilePathWatcherImpl::Watch(const FilePath& path, |
| 145 FilePathWatcher::Delegate* delegate) { | 145 FilePathWatcher::Delegate* delegate) { |
| 146 DCHECK(target_.value().empty()); | 146 DCHECK(target_.value().empty()); |
| 147 | 147 |
| 148 target_ = path; | 148 target_ = path; |
| 149 delegate_ = delegate; | 149 delegate_ = delegate; |
| 150 | 150 |
| 151 FSEventStreamEventId start_event = FSEventsGetCurrentEventId(); | 151 FSEventStreamEventId start_event = FSEventsGetCurrentEventId(); |
| 152 | 152 |
| 153 file_util::FileInfo file_info; | 153 base::PlatformFileInfo file_info; |
| 154 if (file_util::GetFileInfo(target_, &file_info)) { | 154 if (file_util::GetFileInfo(target_, &file_info)) { |
| 155 last_modified_ = file_info.last_modified; | 155 last_modified_ = file_info.last_modified; |
| 156 first_notification_ = base::Time::Now(); | 156 first_notification_ = base::Time::Now(); |
| 157 } | 157 } |
| 158 | 158 |
| 159 ChromeThread::PostTask(ChromeThread::UI, FROM_HERE, | 159 ChromeThread::PostTask(ChromeThread::UI, FROM_HERE, |
| 160 NewRunnableMethod(this, &FilePathWatcherImpl::UpdateEventStream, | 160 NewRunnableMethod(this, &FilePathWatcherImpl::UpdateEventStream, |
| 161 start_event)); | 161 start_event)); |
| 162 | 162 |
| 163 return true; | 163 return true; |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 FSEventStreamInvalidate(fsevent_stream_); | 223 FSEventStreamInvalidate(fsevent_stream_); |
| 224 FSEventStreamRelease(fsevent_stream_); | 224 FSEventStreamRelease(fsevent_stream_); |
| 225 fsevent_stream_ = NULL; | 225 fsevent_stream_ = NULL; |
| 226 } | 226 } |
| 227 | 227 |
| 228 } // namespace | 228 } // namespace |
| 229 | 229 |
| 230 FilePathWatcher::FilePathWatcher() { | 230 FilePathWatcher::FilePathWatcher() { |
| 231 impl_ = new FilePathWatcherImpl(); | 231 impl_ = new FilePathWatcherImpl(); |
| 232 } | 232 } |
| OLD | NEW |