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

Unified Diff: chrome/browser/resources/md_history/synced_device_manager.js

Issue 2022003002: [MD History] Add search for synced devices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@land_icons
Patch Set: address comments Created 4 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: 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 606f664631bf683c66df5e8f1ea1afa811a78ada..ab273b3e73a71c7d4dddb73667f6e435bae428f2 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,
+ * separatorIndexes: !Array<number>,
* timestamp: number,
* tabs: !Array<!ForeignSessionTab>,
* tag: string}}
@@ -20,7 +21,12 @@ Polymer({
*/
sessionList: {
type: Array,
- observer: 'setSyncedHistory',
+ observer: 'updateSyncedDevices'
+ },
+
+ searchedTerm: {
+ type: String,
+ observer: 'searchTermChanged'
},
/**
@@ -39,20 +45,39 @@ Polymer({
*/
createInternalDevice_: function(session) {
var tabs = [];
- for (var j = 0; j < session.windows.length; j++) {
- var newTabs = session.windows[j].tabs;
+ var separatorIndexes = [];
+ for (var i = 0; i < session.windows.length; i++) {
+ var newTabs = session.windows[i].tabs;
if (newTabs.length == 0)
continue;
- tabs = tabs.concat(newTabs);
- tabs[tabs.length - 1].needsWindowSeparator = true;
+
+ if (!this.searchedTerm) {
+ // Add all the tabs if there is no search term.
+ tabs = tabs.concat(newTabs);
+ separatorIndexes.push(tabs.length - 1);
+ } else {
+ var searchText = this.searchedTerm.toLowerCase();
+ var windowAdded = false;
+ for (var j = 0; j < newTabs.length; j++) {
+ var tab = newTabs[j];
+ if (tab.title.toLowerCase().indexOf(searchText) != -1) {
+ tabs.push(tab);
+ windowAdded = true;
+ }
+ }
+ if (windowAdded)
+ separatorIndexes.push(tabs.length - 1);
+ }
+
}
return {
device: session.name,
lastUpdateTime: '– ' + session.modifiedTime,
+ separatorIndexes: separatorIndexes,
timestamp: session.timestamp,
tabs: tabs,
- tag: session.tag
+ tag: session.tag,
};
},
@@ -62,9 +87,9 @@ Polymer({
* avoid doing extra work in this case. The logic could be more intelligent
* about updating individual tabs rather than replacing whole sessions, but
* this approach seems to have acceptable performance.
- * @param {!Array<!ForeignSession>} sessionList
+ * @param {?Array<!ForeignSession>} sessionList
*/
- setSyncedHistory: function(sessionList) {
+ updateSyncedDevices: function(sessionList) {
if (!sessionList)
return;
@@ -83,5 +108,10 @@ Polymer({
for (var i = updateCount; i < sessionList.length; i++) {
this.push('syncedDevices_', this.createInternalDevice_(sessionList[i]));
}
+ },
+
+ searchTermChanged: function(searchedTerm) {
+ this.syncedDevices_ = [];
+ this.updateSyncedDevices(this.sessionList);
}
});

Powered by Google App Engine
This is Rietveld 408576698