Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Side by Side Diff: pkg/watcher/lib/src/directory_watcher/mac_os.dart

Issue 134773002: Stop working around issue 15458 in pkg/watcher. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library watcher.directory_watcher.mac_os; 5 library watcher.directory_watcher.mac_os;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
11 import 'package:stack_trace/stack_trace.dart'; 11 import 'package:stack_trace/stack_trace.dart';
12 12
13 import '../constructable_file_system_event.dart'; 13 import '../constructable_file_system_event.dart';
14 import '../path_set.dart'; 14 import '../path_set.dart';
15 import '../utils.dart'; 15 import '../utils.dart';
16 import '../watch_event.dart'; 16 import '../watch_event.dart';
17 import 'resubscribable.dart'; 17 import 'resubscribable.dart';
18 18
19 /// Uses the FSEvents subsystem to watch for filesystem events. 19 /// Uses the FSEvents subsystem to watch for filesystem events.
20 /// 20 ///
21 /// FSEvents has two main idiosyncrasies that this class works around. First, it 21 /// FSEvents has two main idiosyncrasies that this class works around. First, it
22 /// will occasionally report events that occurred before the filesystem watch 22 /// will occasionally report events that occurred before the filesystem watch
23 /// was initiated. Second, if multiple events happen to the same file in close 23 /// was initiated. Second, if multiple events happen to the same file in close
24 /// succession, it won't report them in the order they occurred. See issue 24 /// succession, it won't report them in the order they occurred. See issue
25 /// 14373. 25 /// 14373.
26 /// 26 ///
27 /// This also works around issues 15458 and 14849 in the implementation of 27 /// This also works around issue 14849 in the implementation of
28 /// [Directory.watch]. 28 /// [Directory.watch].
29 class MacOSDirectoryWatcher extends ResubscribableDirectoryWatcher { 29 class MacOSDirectoryWatcher extends ResubscribableDirectoryWatcher {
30 // TODO(nweiz): remove these when issue 15042 is fixed. 30 // TODO(nweiz): remove these when issue 15042 is fixed.
31 static var logDebugInfo = false; 31 static var logDebugInfo = false;
32 static var _count = 0; 32 static var _count = 0;
33 33
34 MacOSDirectoryWatcher(String directory) 34 MacOSDirectoryWatcher(String directory)
35 : super(directory, () => new _MacOSDirectoryWatcher(directory, _count++)); 35 : super(directory, () => new _MacOSDirectoryWatcher(directory, _count++));
36 } 36 }
37 37
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 // but not the CREATE. 288 // but not the CREATE.
289 if (type == FileSystemEvent.CREATE && hadModifyEvent && 289 if (type == FileSystemEvent.CREATE && hadModifyEvent &&
290 _files.contains(batch.first.path)) { 290 _files.contains(batch.first.path)) {
291 type = FileSystemEvent.MODIFY; 291 type = FileSystemEvent.MODIFY;
292 } 292 }
293 293
294 switch (type) { 294 switch (type) {
295 case FileSystemEvent.CREATE: 295 case FileSystemEvent.CREATE:
296 return new ConstructableFileSystemCreateEvent(batch.first.path, isDir); 296 return new ConstructableFileSystemCreateEvent(batch.first.path, isDir);
297 case FileSystemEvent.DELETE: 297 case FileSystemEvent.DELETE:
298 // Issue 15458 means that DELETE events for directories can actually
299 // mean CREATE, so we always check the filesystem for them.
300 if (isDir) return null;
301 return new ConstructableFileSystemCreateEvent(batch.first.path, false); 298 return new ConstructableFileSystemCreateEvent(batch.first.path, false);
302 case FileSystemEvent.MODIFY: 299 case FileSystemEvent.MODIFY:
303 return new ConstructableFileSystemModifyEvent( 300 return new ConstructableFileSystemModifyEvent(
304 batch.first.path, isDir, false); 301 batch.first.path, isDir, false);
305 default: assert(false); 302 default: assert(false);
306 } 303 }
307 } 304 }
308 305
309 /// Returns one or more events that describe the change between the last known 306 /// Returns one or more events that describe the change between the last known
310 /// state of [path] and its current state on the filesystem. 307 /// state of [path] and its current state on the filesystem.
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 } else if (event is FileSystemDeleteEvent) { 425 } else if (event is FileSystemDeleteEvent) {
429 return "delete $type $path"; 426 return "delete $type $path";
430 } else if (event is FileSystemModifyEvent) { 427 } else if (event is FileSystemModifyEvent) {
431 return "modify $type $path"; 428 return "modify $type $path";
432 } else if (event is FileSystemMoveEvent) { 429 } else if (event is FileSystemMoveEvent) {
433 return "move $type $path to " 430 return "move $type $path to "
434 "${p.relative(event.destination, from: directory)}"; 431 "${p.relative(event.destination, from: directory)}";
435 } 432 }
436 } 433 }
437 } 434 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698