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

Unified Diff: pkg/template_binding/lib/js/observe.js

Issue 723393003: update to polymer js 0.5.1 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: final tweaks Created 6 years 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/template_binding/lib/js/observe.js
diff --git a/pkg/template_binding/lib/js/observe.js b/pkg/template_binding/lib/js/observe.js
index 147f68a6ce902104507d0e0894ae4c324f348626..6cd2ccb4b10ab4d301b9a551da71704081d1a636 100644
--- a/pkg/template_binding/lib/js/observe.js
+++ b/pkg/template_binding/lib/js/observe.js
@@ -390,7 +390,7 @@
obj = obj[this[i - 1]];
if (!isObject(obj))
return;
- observe(obj, this[0]);
+ observe(obj, this[i]);
}
},
@@ -511,21 +511,9 @@
}
var runEOM = hasObserve ? (function(){
- var eomObj = { pingPong: true };
- var eomRunScheduled = false;
-
- Object.observe(eomObj, function() {
- runEOMTasks();
- eomRunScheduled = false;
- });
-
return function(fn) {
- eomTasks.push(fn);
- if (!eomRunScheduled) {
- eomRunScheduled = true;
- eomObj.pingPong = !eomObj.pingPong;
- }
- };
+ return Promise.resolve().then(fn);
+ }
})() :
(function() {
return function(fn) {
@@ -663,14 +651,13 @@
}
var record = {
- object: undefined,
objects: objects,
+ get rootObject() { return rootObj; },
+ set rootObject(value) {
+ rootObj = value;
+ rootObjProps = {};
+ },
open: function(obs, object) {
- if (!rootObj) {
- rootObj = object;
- rootObjProps = {};
- }
-
observers.push(obs);
observerCount++;
obs.iterateObjects_(observe);
@@ -691,7 +678,9 @@
rootObj = undefined;
rootObjProps = undefined;
observedSetCache.push(this);
- }
+ if (lastObservedSet === this)
+ lastObservedSet = null;
+ },
};
return record;
@@ -700,9 +689,9 @@
var lastObservedSet;
function getObservedSet(observer, obj) {
- if (!lastObservedSet || lastObservedSet.object !== obj) {
+ if (!lastObservedSet || lastObservedSet.rootObject !== obj) {
lastObservedSet = observedSetCache.pop() || newObservedSet();
- lastObservedSet.object = obj;
+ lastObservedSet.rootObject = obj;
}
lastObservedSet.open(observer, obj);
return lastObservedSet;
@@ -1690,19 +1679,33 @@
return splices;
}
- global.Observer = Observer;
- global.Observer.runEOM_ = runEOM;
- global.Observer.observerSentinel_ = observerSentinel; // for testing.
- global.Observer.hasObjectObserve = hasObserve;
- global.ArrayObserver = ArrayObserver;
- global.ArrayObserver.calculateSplices = function(current, previous) {
+ // Export the observe-js object for **Node.js**, with
+ // backwards-compatibility for the old `require()` API. If we're in
+ // the browser, export as a global object.
+
+ var expose = global;
+
+ if (typeof exports !== 'undefined') {
+ if (typeof module !== 'undefined' && module.exports) {
+ expose = exports = module.exports;
+ }
+ expose = exports;
+ }
+
+ expose.Observer = Observer;
+ expose.Observer.runEOM_ = runEOM;
+ expose.Observer.observerSentinel_ = observerSentinel; // for testing.
+ expose.Observer.hasObjectObserve = hasObserve;
+ expose.ArrayObserver = ArrayObserver;
+ expose.ArrayObserver.calculateSplices = function(current, previous) {
return arraySplice.calculateSplices(current, previous);
};
- global.ArraySplice = ArraySplice;
- global.ObjectObserver = ObjectObserver;
- global.PathObserver = PathObserver;
- global.CompoundObserver = CompoundObserver;
- global.Path = Path;
- global.ObserverTransform = ObserverTransform;
+ expose.ArraySplice = ArraySplice;
+ expose.ObjectObserver = ObjectObserver;
+ expose.PathObserver = PathObserver;
+ expose.CompoundObserver = CompoundObserver;
+ expose.Path = Path;
+ expose.ObserverTransform = ObserverTransform;
+
})(typeof global !== 'undefined' && global && typeof module !== 'undefined' && module ? global : this || window);

Powered by Google App Engine
This is Rietveld 408576698