Index: chrome/browser/resources/md_history/synced_device_manager.js |
diff --git a/chrome/browser/resources/md_history/synced_device_manager.js b/chrome/browser/resources/md_history/synced_device_manager.js |
index 12e67fddbe540238b32f22538bf1542ee2947b2d..2a73361fdef0d90c39705c9da4586965852e6da6 100644 |
--- a/chrome/browser/resources/md_history/synced_device_manager.js |
+++ b/chrome/browser/resources/md_history/synced_device_manager.js |
@@ -5,6 +5,7 @@ |
/** |
* @typedef {{device: string, |
* lastUpdateTime: string, |
+ * opened: boolean, |
* separatorIndexes: !Array<number>, |
* timestamp: number, |
* tabs: !Array<!ForeignSessionTab>, |
@@ -59,6 +60,7 @@ Polymer({ |
listeners: { |
'toggle-menu': 'onToggleMenu_', |
+ 'scroll': 'onListScroll_' |
}, |
/** @override */ |
@@ -105,6 +107,7 @@ Polymer({ |
return { |
device: session.name, |
lastUpdateTime: '– ' + session.modifiedTime, |
+ opened: true, |
separatorIndexes: separatorIndexes, |
timestamp: session.timestamp, |
tabs: tabs, |
@@ -116,6 +119,12 @@ Polymer({ |
chrome.send('startSignInFlow'); |
}, |
+ onListScroll_: function() { |
+ var menu = this.$.menu.getIfExists(); |
+ if (menu) |
+ menu.closeMenu(); |
+ }, |
+ |
onToggleMenu_: function(e) { |
this.$.menu.get().then(function(menu) { |
menu.toggleMenu(e.detail.target, e.detail.tag); |
@@ -209,9 +218,16 @@ Polymer({ |
} |
} |
- // Then, append any new devices. |
- for (var i = updateCount; i < sessionList.length; i++) { |
- this.push('syncedDevices_', this.createInternalDevice_(sessionList[i])); |
+ if (sessionList.length >= this.syncedDevices_.length) { |
+ // The list grew; append new items. |
+ for (var i = updateCount; i < sessionList.length; i++) { |
+ this.push('syncedDevices_', this.createInternalDevice_(sessionList[i])); |
+ } |
+ } else { |
+ // The list shrank; remove deleted items. |
+ this.splice( |
+ 'syncedDevices_', updateCount, |
+ this.syncedDevices_.length - updateCount); |
} |
}, |