| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @typedef {{device: string, | 6 * @typedef {{device: string, |
| 7 * lastUpdateTime: string, | 7 * lastUpdateTime: string, |
| 8 * separatorIndexes: !Array<number>, | 8 * separatorIndexes: !Array<number>, |
| 9 * timestamp: number, | 9 * timestamp: number, |
| 10 * tabs: !Array<!ForeignSessionTab>, | 10 * tabs: !Array<!ForeignSessionTab>, |
| 11 * tag: string}} | 11 * tag: string}} |
| 12 */ | 12 */ |
| 13 var ForeignDeviceInternal; | 13 var ForeignDeviceInternal; |
| 14 | 14 |
| 15 Polymer({ | 15 Polymer({ |
| 16 is: 'history-synced-device-manager', | 16 is: 'history-synced-device-manager', |
| 17 | 17 |
| 18 properties: { | 18 properties: { |
| 19 /** | 19 /** |
| 20 * @type {?Array<!ForeignSession>} | 20 * @type {?Array<!ForeignSession>} |
| 21 */ | 21 */ |
| 22 sessionList: { | 22 sessionList: { |
| 23 type: Array, | 23 type: Array, |
| 24 observer: 'updateSyncedDevices' | 24 observer: 'updateSyncedDevices' |
| 25 }, | 25 }, |
| 26 | 26 |
| 27 searchedTerm: { | 27 searchTerm: { |
| 28 type: String, | 28 type: String, |
| 29 observer: 'searchTermChanged' | 29 observer: 'searchTermChanged' |
| 30 }, | 30 }, |
| 31 | 31 |
| 32 /** | 32 /** |
| 33 * An array of synced devices with synced tab data. | 33 * An array of synced devices with synced tab data. |
| 34 * @type {!Array<!ForeignDeviceInternal>} | 34 * @type {!Array<!ForeignDeviceInternal>} |
| 35 */ | 35 */ |
| 36 syncedDevices_: { | 36 syncedDevices_: { |
| 37 type: Array, | 37 type: Array, |
| 38 value: function() { return []; } | 38 value: function() { return []; } |
| 39 } | 39 } |
| 40 }, | 40 }, |
| 41 | 41 |
| 42 /** | 42 /** |
| 43 * @param {!ForeignSession} session | 43 * @param {!ForeignSession} session |
| 44 * @return {!ForeignDeviceInternal} | 44 * @return {!ForeignDeviceInternal} |
| 45 */ | 45 */ |
| 46 createInternalDevice_: function(session) { | 46 createInternalDevice_: function(session) { |
| 47 var tabs = []; | 47 var tabs = []; |
| 48 var separatorIndexes = []; | 48 var separatorIndexes = []; |
| 49 for (var i = 0; i < session.windows.length; i++) { | 49 for (var i = 0; i < session.windows.length; i++) { |
| 50 var newTabs = session.windows[i].tabs; | 50 var newTabs = session.windows[i].tabs; |
| 51 if (newTabs.length == 0) | 51 if (newTabs.length == 0) |
| 52 continue; | 52 continue; |
| 53 | 53 |
| 54 | 54 |
| 55 if (!this.searchedTerm) { | 55 if (!this.searchTerm) { |
| 56 // Add all the tabs if there is no search term. | 56 // Add all the tabs if there is no search term. |
| 57 tabs = tabs.concat(newTabs); | 57 tabs = tabs.concat(newTabs); |
| 58 separatorIndexes.push(tabs.length - 1); | 58 separatorIndexes.push(tabs.length - 1); |
| 59 } else { | 59 } else { |
| 60 var searchText = this.searchedTerm.toLowerCase(); | 60 var searchText = this.searchTerm.toLowerCase(); |
| 61 var windowAdded = false; | 61 var windowAdded = false; |
| 62 for (var j = 0; j < newTabs.length; j++) { | 62 for (var j = 0; j < newTabs.length; j++) { |
| 63 var tab = newTabs[j]; | 63 var tab = newTabs[j]; |
| 64 if (tab.title.toLowerCase().indexOf(searchText) != -1) { | 64 if (tab.title.toLowerCase().indexOf(searchText) != -1) { |
| 65 tabs.push(tab); | 65 tabs.push(tab); |
| 66 windowAdded = true; | 66 windowAdded = true; |
| 67 } | 67 } |
| 68 } | 68 } |
| 69 if (windowAdded) | 69 if (windowAdded) |
| 70 separatorIndexes.push(tabs.length - 1); | 70 separatorIndexes.push(tabs.length - 1); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 'syncedDevices_', i, 1, this.createInternalDevice_(sessionList[i])); | 103 'syncedDevices_', i, 1, this.createInternalDevice_(sessionList[i])); |
| 104 } | 104 } |
| 105 } | 105 } |
| 106 | 106 |
| 107 // Then, append any new devices. | 107 // Then, append any new devices. |
| 108 for (var i = updateCount; i < sessionList.length; i++) { | 108 for (var i = updateCount; i < sessionList.length; i++) { |
| 109 this.push('syncedDevices_', this.createInternalDevice_(sessionList[i])); | 109 this.push('syncedDevices_', this.createInternalDevice_(sessionList[i])); |
| 110 } | 110 } |
| 111 }, | 111 }, |
| 112 | 112 |
| 113 searchTermChanged: function(searchedTerm) { | 113 searchTermChanged: function(searchTerm) { |
| 114 this.syncedDevices_ = []; | 114 this.syncedDevices_ = []; |
| 115 this.updateSyncedDevices(this.sessionList); | 115 this.updateSyncedDevices(this.sessionList); |
| 116 } | 116 } |
| 117 }); | 117 }); |
| OLD | NEW |