| Index: packages/watcher/lib/src/directory_watcher/mac_os.dart
|
| diff --git a/packages/watcher/lib/src/directory_watcher/mac_os.dart b/packages/watcher/lib/src/directory_watcher/mac_os.dart
|
| index 487225eb4dff495537048fc075216ce92e5d8435..8a17e2e795dd7039f5964d87ade83799a49992d1 100644
|
| --- a/packages/watcher/lib/src/directory_watcher/mac_os.dart
|
| +++ b/packages/watcher/lib/src/directory_watcher/mac_os.dart
|
| @@ -2,8 +2,6 @@
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| -library watcher.directory_watcher.mac_os;
|
| -
|
| import 'dart:async';
|
| import 'dart:io';
|
|
|
| @@ -58,7 +56,7 @@ class _MacOSDirectoryWatcher
|
| ///
|
| /// This is separate from [_subscriptions] because this stream occasionally
|
| /// needs to be resubscribed in order to work around issue 14849.
|
| - StreamSubscription<FileSystemEvent> _watchSubscription;
|
| + StreamSubscription<List<FileSystemEvent>> _watchSubscription;
|
|
|
| /// The subscription to the [Directory.list] call for the initial listing of
|
| /// the directory to determine its initial state.
|
| @@ -116,9 +114,9 @@ class _MacOSDirectoryWatcher
|
| return;
|
| }
|
|
|
| - _sortEvents(batch).forEach((path, events) {
|
| - var canonicalEvent = _canonicalEvent(events);
|
| - events = canonicalEvent == null ?
|
| + _sortEvents(batch).forEach((path, eventSet) {
|
| + var canonicalEvent = _canonicalEvent(eventSet);
|
| + var events = canonicalEvent == null ?
|
| _eventsBasedOnFileSystem(path) : [canonicalEvent];
|
|
|
| for (var event in events) {
|
| @@ -139,7 +137,7 @@ class _MacOSDirectoryWatcher
|
|
|
| if (_files.containsDir(path)) continue;
|
|
|
| - var subscription;
|
| + StreamSubscription<FileSystemEntity> subscription;
|
| subscription = new Directory(path).list(recursive: true)
|
| .listen((entity) {
|
| if (entity is Directory) return;
|
| @@ -175,7 +173,7 @@ class _MacOSDirectoryWatcher
|
| /// The returned events won't contain any [FileSystemMoveEvent]s, nor will it
|
| /// contain any events relating to [path].
|
| Map<String, Set<FileSystemEvent>> _sortEvents(List<FileSystemEvent> batch) {
|
| - var eventsForPaths = {};
|
| + var eventsForPaths = <String, Set>{};
|
|
|
| // FSEvents can report past events, including events on the root directory
|
| // such as it being created. We want to ignore these. If the directory is
|
| @@ -187,8 +185,10 @@ class _MacOSDirectoryWatcher
|
| // events. Emitting them could cause useless or out-of-order events.
|
| var directories = unionAll(batch.map((event) {
|
| if (!event.isDirectory) return new Set();
|
| - if (event is! FileSystemMoveEvent) return new Set.from([event.path]);
|
| - return new Set.from([event.path, event.destination]);
|
| + if (event is FileSystemMoveEvent) {
|
| + return new Set.from([event.path, event.destination]);
|
| + }
|
| + return new Set.from([event.path]);
|
| }));
|
|
|
| isInModifiedDirectory(path) =>
|
| @@ -294,7 +294,7 @@ class _MacOSDirectoryWatcher
|
| var fileExists = new File(path).existsSync();
|
| var dirExists = new Directory(path).existsSync();
|
|
|
| - var events = [];
|
| + var events = <FileSystemEvent>[];
|
| if (fileExisted) {
|
| if (fileExists) {
|
| events.add(new ConstructableFileSystemModifyEvent(path, false, false));
|
| @@ -337,7 +337,7 @@ class _MacOSDirectoryWatcher
|
| // FSEvents can fail to report the contents of the directory being removed
|
| // when the directory itself is removed, so we need to manually mark the
|
| // files as removed.
|
| - for (var file in _files.toSet()) {
|
| + for (var file in _files.paths) {
|
| _emitEvent(ChangeType.REMOVE, file);
|
| }
|
| _files.clear();
|
|
|