Index: chrome/browser/resources/task_manager/main.js |
diff --git a/chrome/browser/resources/task_manager/main.js b/chrome/browser/resources/task_manager/main.js |
index 9bc0d285d2e3478f64481fbb377b71870657e812..62eb4a4efd8105b2ed7934b057fec487cc275cd8 100644 |
--- a/chrome/browser/resources/task_manager/main.js |
+++ b/chrome/browser/resources/task_manager/main.js |
@@ -542,18 +542,30 @@ TaskManager.prototype = { |
var length = task.length; |
var tasks = task.tasks; |
- // We have to store the selected indexes and restore them after |
+ // We have to store the selected pids and restore them after |
// splice(), because it might replace some items but the replaced |
// items would lose the selection. |
var oldSelectedIndexes = sm.selectedIndexes; |
+ // Create map of selected PIDs. |
+ var selectedPids = {}; |
+ for (var i = 0; i < oldSelectedIndexes.length; i++) { |
+ var item = dm.item(oldSelectedIndexes[i]); |
+ if (item) selectedPids[item['processId'][0]] = true; |
+ } |
+ |
var args = tasks.slice(); |
args.unshift(start, dm.length); |
dm.splice.apply(dm, args); |
- sm.selectedIndexes = oldSelectedIndexes.filter(function(index) { |
- return index < dm.length; |
- }); |
+ // Create new array of selected indexes from map of old PIDs. |
+ var newSelectedIndexes = []; |
+ for (var i = 0; i < dm.length; i++) { |
+ if (selectedPids[dm.item(i)['processId'][0]]) |
+ newSelectedIndexes.push(i); |
+ } |
+ |
+ sm.selectedIndexes = newSelectedIndexes; |
var pids = []; |
for (var i = 0; i < dm.length; i++) { |