| OLD | NEW |
| 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 // This library itself is undocumented and not supported for end use. | 5 // This library itself is undocumented and not supported for end use. |
| 6 // Because dart:html must use some of this functionality, it has to be available | 6 // Because dart:html must use some of this functionality, it has to be available |
| 7 // via a dart:* library. The public APIs are reexported via package:mdv_observe. | 7 // via a dart:* library. The public APIs are reexported via package:mdv_observe. |
| 8 // Generally we try to keep this library minimal, with utility types and | 8 // Generally we try to keep this library minimal, with utility types and |
| 9 // functions in the package. | 9 // functions in the package. |
| 10 library dart.mdv_observe_impl; | 10 library dart.mdv_observe_impl; |
| 11 | 11 |
| 12 import 'dart:async'; | 12 import 'dart:async'; |
| 13 import 'dart:collection'; | 13 import 'dart:collection'; |
| 14 | 14 |
| 15 part 'path_observer.dart'; |
| 16 |
| 15 /** | 17 /** |
| 16 * Interface representing an observable object. This is used by data in | 18 * Interface representing an observable object. This is used by data in |
| 17 * model-view architectures to notify interested parties of [changes]. | 19 * model-view architectures to notify interested parties of [changes]. |
| 18 * | 20 * |
| 19 * This object does not require any specific technique to implement | 21 * This object does not require any specific technique to implement |
| 20 * observability. | 22 * observability. |
| 21 * | 23 * |
| 22 * You can use [ObservableMixin] as a base class or mixin to implement this. | 24 * You can use [ObservableMixin] as a base class or mixin to implement this. |
| 23 */ | 25 */ |
| 24 abstract class Observable { | 26 abstract class Observable { |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 /** Queues an action to happen during the [deliverChangeRecords] timeslice. */ | 219 /** Queues an action to happen during the [deliverChangeRecords] timeslice. */ |
| 218 void queueChangeRecords(void deliverChanges()) { | 220 void queueChangeRecords(void deliverChanges()) { |
| 219 if (_deliverCallbacks == null) { | 221 if (_deliverCallbacks == null) { |
| 220 _deliverCallbacks = new Queue<Function>(); | 222 _deliverCallbacks = new Queue<Function>(); |
| 221 runAsync(deliverChangeRecords); | 223 runAsync(deliverChangeRecords); |
| 222 } | 224 } |
| 223 _deliverCallbacks.add(deliverChanges); | 225 _deliverCallbacks.add(deliverChanges); |
| 224 } | 226 } |
| 225 | 227 |
| 226 Queue _deliverCallbacks; | 228 Queue _deliverCallbacks; |
| OLD | NEW |