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

Side by Side Diff: chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc

Issue 1492273002: MD Downloads: limit the amount of downloads we send (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@new-dl-data
Patch Set: self-review Created 5 years 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.h" 5 #include "chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 web_ui()->RegisterMessageCallback("clearAll", 128 web_ui()->RegisterMessageCallback("clearAll",
129 base::Bind(&MdDownloadsDOMHandler::HandleClearAll, 129 base::Bind(&MdDownloadsDOMHandler::HandleClearAll,
130 weak_ptr_factory_.GetWeakPtr())); 130 weak_ptr_factory_.GetWeakPtr()));
131 web_ui()->RegisterMessageCallback("openDownloadsFolder", 131 web_ui()->RegisterMessageCallback("openDownloadsFolder",
132 base::Bind(&MdDownloadsDOMHandler::HandleOpenDownloadsFolder, 132 base::Bind(&MdDownloadsDOMHandler::HandleOpenDownloadsFolder,
133 weak_ptr_factory_.GetWeakPtr())); 133 weak_ptr_factory_.GetWeakPtr()));
134 } 134 }
135 135
136 void MdDownloadsDOMHandler::RenderViewReused( 136 void MdDownloadsDOMHandler::RenderViewReused(
137 content::RenderViewHost* render_view_host) { 137 content::RenderViewHost* render_view_host) {
138 list_tracker_.Stop(); 138 list_tracker_.Reset();
139 } 139 }
140 140
141 void MdDownloadsDOMHandler::HandleGetDownloads(const base::ListValue* args) { 141 void MdDownloadsDOMHandler::HandleGetDownloads(const base::ListValue* args) {
142 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_GET_DOWNLOADS); 142 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_GET_DOWNLOADS);
143 143
144 bool terms_changed = list_tracker_.SetSearchTerms(*args); 144 bool terms_changed = list_tracker_.SetSearchTerms(*args);
145 if (terms_changed) 145 if (terms_changed)
146 list_tracker_.CallClearAll(); 146 list_tracker_.Reset();
147 147
148 list_tracker_.Start(); 148 list_tracker_.StartAndSendChunk();
149 } 149 }
150 150
151 void MdDownloadsDOMHandler::HandleOpenFile(const base::ListValue* args) { 151 void MdDownloadsDOMHandler::HandleOpenFile(const base::ListValue* args) {
152 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_OPEN_FILE); 152 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_OPEN_FILE);
153 content::DownloadItem* file = GetDownloadByValue(args); 153 content::DownloadItem* file = GetDownloadByValue(args);
154 if (file) 154 if (file)
155 file->OpenDownload(); 155 file->OpenDownload();
156 } 156 }
157 157
158 void MdDownloadsDOMHandler::HandleDrag(const base::ListValue* args) { 158 void MdDownloadsDOMHandler::HandleDrag(const base::ListValue* args) {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 } 231 }
232 232
233 void MdDownloadsDOMHandler::HandleUndo(const base::ListValue* args) { 233 void MdDownloadsDOMHandler::HandleUndo(const base::ListValue* args) {
234 // TODO(dbeam): handle more than removed downloads someday? 234 // TODO(dbeam): handle more than removed downloads someday?
235 if (removals_.empty()) 235 if (removals_.empty())
236 return; 236 return;
237 237
238 const IdSet last_removed_ids = removals_.back(); 238 const IdSet last_removed_ids = removals_.back();
239 removals_.pop_back(); 239 removals_.pop_back();
240 240
241 const bool undoing_clear_all = last_removed_ids.size() > 1;
242 if (undoing_clear_all)
Dan Beam 2015/12/05 00:31:43 ^ this is how
243 list_tracker_.Reset();
244
241 for (auto id : last_removed_ids) { 245 for (auto id : last_removed_ids) {
242 content::DownloadItem* download = GetDownloadById(id); 246 content::DownloadItem* download = GetDownloadById(id);
243 if (!download) 247 if (!download)
244 continue; 248 continue;
245 249
246 DownloadItemModel model(download); 250 DownloadItemModel model(download);
247 model.SetShouldShowInShelf(true); 251 model.SetShouldShowInShelf(true);
248 model.SetIsBeingRevived(true); 252 model.SetIsBeingRevived(true);
249 253
250 download->UpdateObservers(); 254 download->UpdateObservers();
251 255
252 model.SetIsBeingRevived(false); 256 model.SetIsBeingRevived(false);
253 } 257 }
258
259 if (undoing_clear_all)
260 list_tracker_.StartAndSendChunk();
254 } 261 }
255 262
256 void MdDownloadsDOMHandler::HandleCancel(const base::ListValue* args) { 263 void MdDownloadsDOMHandler::HandleCancel(const base::ListValue* args) {
257 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_CANCEL); 264 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_CANCEL);
258 content::DownloadItem* file = GetDownloadByValue(args); 265 content::DownloadItem* file = GetDownloadByValue(args);
259 if (file) 266 if (file)
260 file->Cancel(true); 267 file->Cancel(true);
261 } 268 }
262 269
263 void MdDownloadsDOMHandler::HandleClearAll(const base::ListValue* args) { 270 void MdDownloadsDOMHandler::HandleClearAll(const base::ListValue* args) {
264 if (!IsDeletingHistoryAllowed()) { 271 if (!IsDeletingHistoryAllowed()) {
265 // This should only be reached during tests. 272 // This should only be reached during tests.
266 return; 273 return;
267 } 274 }
268 275
269 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_CLEAR_ALL); 276 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_CLEAR_ALL);
270 277
271 list_tracker_.CallClearAll(); 278 list_tracker_.Reset();
272 list_tracker_.Stop();
273 279
274 DownloadVector downloads; 280 DownloadVector downloads;
275 if (GetMainNotifierManager()) 281 if (GetMainNotifierManager())
276 GetMainNotifierManager()->GetAllDownloads(&downloads); 282 GetMainNotifierManager()->GetAllDownloads(&downloads);
277 if (GetOriginalNotifierManager()) 283 if (GetOriginalNotifierManager())
278 GetOriginalNotifierManager()->GetAllDownloads(&downloads); 284 GetOriginalNotifierManager()->GetAllDownloads(&downloads);
279 RemoveDownloads(downloads); 285 RemoveDownloads(downloads);
280 286
281 list_tracker_.Start(); 287 list_tracker_.StartAndSendChunk();
282 } 288 }
283 289
284 void MdDownloadsDOMHandler::RemoveDownloads(const DownloadVector& to_remove) { 290 void MdDownloadsDOMHandler::RemoveDownloads(const DownloadVector& to_remove) {
285 IdSet ids; 291 IdSet ids;
286 292
287 for (auto* download : to_remove) { 293 for (auto* download : to_remove) {
288 DownloadItemModel item_model(download); 294 DownloadItemModel item_model(download);
289 if (!item_model.ShouldShowInShelf() || 295 if (!item_model.ShouldShowInShelf() ||
290 download->GetState() == content::DownloadItem::IN_PROGRESS) { 296 download->GetState() == content::DownloadItem::IN_PROGRESS) {
291 continue; 297 continue;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 if (GetMainNotifierManager()) 399 if (GetMainNotifierManager())
394 item = GetMainNotifierManager()->GetDownload(id); 400 item = GetMainNotifierManager()->GetDownload(id);
395 if (!item && GetOriginalNotifierManager()) 401 if (!item && GetOriginalNotifierManager())
396 item = GetOriginalNotifierManager()->GetDownload(id); 402 item = GetOriginalNotifierManager()->GetDownload(id);
397 return item; 403 return item;
398 } 404 }
399 405
400 content::WebContents* MdDownloadsDOMHandler::GetWebUIWebContents() { 406 content::WebContents* MdDownloadsDOMHandler::GetWebUIWebContents() {
401 return web_ui()->GetWebContents(); 407 return web_ui()->GetWebContents();
402 } 408 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698