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

Unified Diff: pkg/observe/lib/src/path_observer.dart

Issue 307793002: update polymer, nodebind, and templatebinding (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: roll Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: pkg/observe/lib/src/path_observer.dart
diff --git a/pkg/observe/lib/src/path_observer.dart b/pkg/observe/lib/src/path_observer.dart
index cfaab187764caf34f630bca86db670e101073256..d6bf8143ca9a6521d11bc46e0fb5352b95b20599 100644
--- a/pkg/observe/lib/src/path_observer.dart
+++ b/pkg/observe/lib/src/path_observer.dart
@@ -41,6 +41,7 @@ class PathObserver extends _Observer implements Bindable {
/// Sets the value at this path.
void set value(Object newValue) {
if (_path != null) _path.setValueFrom(_object, newValue);
+ _discardChanges();
}
int get _reportArgumentCount => 2;
@@ -431,7 +432,7 @@ class CompoundObserver extends _Observer implements Bindable {
throw new StateError('Cannot add observers once started.');
}
- observer.open(_deliver);
+ observer.open((_) => deliver());
_observed..add(_observerSentinel)..add(observer);
}
@@ -532,10 +533,7 @@ abstract class _Observer extends Bindable {
return _value;
}
- get value {
- _check(skipChanges: true);
- return _value;
- }
+ get value => _discardChanges();
void close() {
if (!_isOpen) return;
@@ -545,10 +543,13 @@ abstract class _Observer extends Bindable {
_notifyCallback = null;
}
- void _deliver(_) {
- if (_isOpen) _dirtyCheck();
+ _discardChanges() {
+ _check(skipChanges: true);
+ return _value;
}
+ bool deliver() => _isOpen ? _dirtyCheck() : false;
+
bool _dirtyCheck() {
var cycles = 0;
while (cycles < _MAX_DIRTY_CHECK_CYCLES && _check()) {

Powered by Google App Engine
This is Rietveld 408576698