| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 *handle = FindFirstChangeNotification( | 193 *handle = FindFirstChangeNotification( |
| 194 dir.value().c_str(), | 194 dir.value().c_str(), |
| 195 recursive, | 195 recursive, |
| 196 FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_SIZE | | 196 FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_SIZE | |
| 197 FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_DIR_NAME | | 197 FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_DIR_NAME | |
| 198 FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SECURITY); | 198 FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SECURITY); |
| 199 if (*handle != INVALID_HANDLE_VALUE) { | 199 if (*handle != INVALID_HANDLE_VALUE) { |
| 200 // Make sure the handle we got points to an existing directory. It seems | 200 // Make sure the handle we got points to an existing directory. It seems |
| 201 // that windows sometimes hands out watches to directories that are | 201 // that windows sometimes hands out watches to directories that are |
| 202 // about to go away, but doesn't sent notifications if that happens. | 202 // about to go away, but doesn't sent notifications if that happens. |
| 203 if (!file_util::DirectoryExists(dir)) { | 203 if (!DirectoryExists(dir)) { |
| 204 FindCloseChangeNotification(*handle); | 204 FindCloseChangeNotification(*handle); |
| 205 *handle = INVALID_HANDLE_VALUE; | 205 *handle = INVALID_HANDLE_VALUE; |
| 206 } | 206 } |
| 207 return true; | 207 return true; |
| 208 } | 208 } |
| 209 | 209 |
| 210 // If FindFirstChangeNotification failed because the target directory | 210 // If FindFirstChangeNotification failed because the target directory |
| 211 // doesn't exist, access is denied (happens if the file is already gone but | 211 // doesn't exist, access is denied (happens if the file is already gone but |
| 212 // there are still handles open), or the target is not a directory, try the | 212 // there are still handles open), or the target is not a directory, try the |
| 213 // immediate parent directory instead. | 213 // immediate parent directory instead. |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 handle_ = INVALID_HANDLE_VALUE; | 283 handle_ = INVALID_HANDLE_VALUE; |
| 284 } | 284 } |
| 285 | 285 |
| 286 } // namespace | 286 } // namespace |
| 287 | 287 |
| 288 FilePathWatcher::FilePathWatcher() { | 288 FilePathWatcher::FilePathWatcher() { |
| 289 impl_ = new FilePathWatcherImpl(); | 289 impl_ = new FilePathWatcherImpl(); |
| 290 } | 290 } |
| 291 | 291 |
| 292 } // namespace base | 292 } // namespace base |
| OLD | NEW |