Chromium Code Reviews| Index: chrome/browser/resources/md_bookmarks/store_client.js |
| diff --git a/chrome/browser/resources/md_bookmarks/store_client.js b/chrome/browser/resources/md_bookmarks/store_client.js |
| index 344df43db1ea8142842866d281d8346b0273021f..7d1512734967740a7b2c1f51f90ab171bc17bd8a 100644 |
| --- a/chrome/browser/resources/md_bookmarks/store_client.js |
| +++ b/chrome/browser/resources/md_bookmarks/store_client.js |
| @@ -38,7 +38,8 @@ cr.define('bookmarks', function() { |
| * watch('item', (state) => state.nodes[this.itemId]); |
| * |
| * Note that object identity is used to determine if the value has changed |
| - * before updating the UI, rather than Polymer-style deep equality. |
| + * before updating the UI, rather than Polymer-style deep equality. If the |
| + * getter function returns |undefined|, no changes will propagate to the UI. |
| * |
| * Typechecking is supressed because this conflicts with |
| * Object.prototype.watch, which is a Gecko-only method that is recognized |
| @@ -73,7 +74,7 @@ cr.define('bookmarks', function() { |
| // Avoid poking Polymer unless something has actually changed. Reducers |
| // must return new objects rather than mutating existing objects, so |
| // any real changes will pass through correctly. |
| - if (oldValue == newValue) |
| + if (oldValue == newValue || newValue == undefined) |
|
calamity
2017/04/03 06:54:24
What case does this prevent? Anything deleted in t
tsergeant
2017/04/04 04:42:28
It comes down to an ordering thing. The sequence o
|
| return; |
| this[watch.localProperty] = newValue; |