| Index: chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc
|
| diff --git a/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc b/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc
|
| index 39d3cc3f462c678aebfff654073563253d9166aa..ce116d51c65b74e6c49008f41bcab0fca0052e51 100644
|
| --- a/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc
|
| +++ b/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc
|
| @@ -136,6 +136,7 @@ void MdDownloadsDOMHandler::RegisterMessages() {
|
| void MdDownloadsDOMHandler::RenderViewReused(
|
| content::RenderViewHost* render_view_host) {
|
| list_tracker_.Stop();
|
| + list_tracker_.Reset();
|
| }
|
|
|
| void MdDownloadsDOMHandler::HandleGetDownloads(const base::ListValue* args) {
|
| @@ -143,9 +144,9 @@ void MdDownloadsDOMHandler::HandleGetDownloads(const base::ListValue* args) {
|
|
|
| bool terms_changed = list_tracker_.SetSearchTerms(*args);
|
| if (terms_changed)
|
| - list_tracker_.CallClearAll();
|
| + list_tracker_.Reset();
|
|
|
| - list_tracker_.Start();
|
| + list_tracker_.StartAndSendChunk();
|
| }
|
|
|
| void MdDownloadsDOMHandler::HandleOpenFile(const base::ListValue* args) {
|
| @@ -238,6 +239,12 @@ void MdDownloadsDOMHandler::HandleUndo(const base::ListValue* args) {
|
| const IdSet last_removed_ids = removals_.back();
|
| removals_.pop_back();
|
|
|
| + const bool undoing_clear_all = last_removed_ids.size() > 1;
|
| + if (undoing_clear_all) {
|
| + list_tracker_.Reset();
|
| + list_tracker_.Stop();
|
| + }
|
| +
|
| for (auto id : last_removed_ids) {
|
| content::DownloadItem* download = GetDownloadById(id);
|
| if (!download)
|
| @@ -251,6 +258,9 @@ void MdDownloadsDOMHandler::HandleUndo(const base::ListValue* args) {
|
|
|
| model.SetIsBeingRevived(false);
|
| }
|
| +
|
| + if (undoing_clear_all)
|
| + list_tracker_.StartAndSendChunk();
|
| }
|
|
|
| void MdDownloadsDOMHandler::HandleCancel(const base::ListValue* args) {
|
| @@ -268,7 +278,7 @@ void MdDownloadsDOMHandler::HandleClearAll(const base::ListValue* args) {
|
|
|
| CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_CLEAR_ALL);
|
|
|
| - list_tracker_.CallClearAll();
|
| + list_tracker_.Reset();
|
| list_tracker_.Stop();
|
|
|
| DownloadVector downloads;
|
| @@ -278,7 +288,7 @@ void MdDownloadsDOMHandler::HandleClearAll(const base::ListValue* args) {
|
| GetOriginalNotifierManager()->GetAllDownloads(&downloads);
|
| RemoveDownloads(downloads);
|
|
|
| - list_tracker_.Start();
|
| + list_tracker_.StartAndSendChunk();
|
| }
|
|
|
| void MdDownloadsDOMHandler::RemoveDownloads(const DownloadVector& to_remove) {
|
|
|