Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/downloads_dom_handler.h" | 5 #include "chrome/browser/ui/webui/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 14 matching lines...) Expand all Loading... | |
| 25 #include "base/values.h" | 25 #include "base/values.h" |
| 26 #include "chrome/browser/browser_process.h" | 26 #include "chrome/browser/browser_process.h" |
| 27 #include "chrome/browser/download/download_crx_util.h" | 27 #include "chrome/browser/download/download_crx_util.h" |
| 28 #include "chrome/browser/download/download_danger_prompt.h" | 28 #include "chrome/browser/download/download_danger_prompt.h" |
| 29 #include "chrome/browser/download/download_history.h" | 29 #include "chrome/browser/download/download_history.h" |
| 30 #include "chrome/browser/download/download_item_model.h" | 30 #include "chrome/browser/download/download_item_model.h" |
| 31 #include "chrome/browser/download/download_prefs.h" | 31 #include "chrome/browser/download/download_prefs.h" |
| 32 #include "chrome/browser/download/download_query.h" | 32 #include "chrome/browser/download/download_query.h" |
| 33 #include "chrome/browser/download/download_service.h" | 33 #include "chrome/browser/download/download_service.h" |
| 34 #include "chrome/browser/download/download_service_factory.h" | 34 #include "chrome/browser/download/download_service_factory.h" |
| 35 #include "chrome/browser/download/download_shelf.h" | |
| 35 #include "chrome/browser/download/drag_download_item.h" | 36 #include "chrome/browser/download/drag_download_item.h" |
| 36 #include "chrome/browser/extensions/api/downloads/downloads_api.h" | 37 #include "chrome/browser/extensions/api/downloads/downloads_api.h" |
| 37 #include "chrome/browser/extensions/extension_service.h" | 38 #include "chrome/browser/extensions/extension_service.h" |
| 38 #include "chrome/browser/platform_util.h" | 39 #include "chrome/browser/platform_util.h" |
| 39 #include "chrome/browser/profiles/profile.h" | 40 #include "chrome/browser/profiles/profile.h" |
| 41 #include "chrome/browser/ui/browser_finder.h" | |
| 42 #include "chrome/browser/ui/browser_window.h" | |
| 40 #include "chrome/browser/ui/webui/fileicon_source.h" | 43 #include "chrome/browser/ui/webui/fileicon_source.h" |
| 41 #include "chrome/common/pref_names.h" | 44 #include "chrome/common/pref_names.h" |
| 42 #include "chrome/common/url_constants.h" | 45 #include "chrome/common/url_constants.h" |
| 43 #include "content/public/browser/browser_thread.h" | 46 #include "content/public/browser/browser_thread.h" |
| 44 #include "content/public/browser/download_item.h" | 47 #include "content/public/browser/download_item.h" |
| 45 #include "content/public/browser/url_data_source.h" | 48 #include "content/public/browser/url_data_source.h" |
| 46 #include "content/public/browser/user_metrics.h" | 49 #include "content/public/browser/user_metrics.h" |
| 47 #include "content/public/browser/web_contents.h" | 50 #include "content/public/browser/web_contents.h" |
| 48 #include "content/public/browser/web_ui.h" | 51 #include "content/public/browser/web_ui.h" |
| 49 #include "extensions/browser/extension_system.h" | 52 #include "extensions/browser/extension_system.h" |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 535 if (GetMainNotifierManager()) | 538 if (GetMainNotifierManager()) |
| 536 GetMainNotifierManager()->GetAllDownloads(&downloads); | 539 GetMainNotifierManager()->GetAllDownloads(&downloads); |
| 537 if (original_notifier_ && original_notifier_->GetManager()) | 540 if (original_notifier_ && original_notifier_->GetManager()) |
| 538 original_notifier_->GetManager()->GetAllDownloads(&downloads); | 541 original_notifier_->GetManager()->GetAllDownloads(&downloads); |
| 539 RemoveDownloads(downloads); | 542 RemoveDownloads(downloads); |
| 540 } | 543 } |
| 541 | 544 |
| 542 void DownloadsDOMHandler::RemoveDownloads( | 545 void DownloadsDOMHandler::RemoveDownloads( |
| 543 const std::vector<content::DownloadItem*>& to_remove) { | 546 const std::vector<content::DownloadItem*>& to_remove) { |
| 544 std::set<uint32> ids; | 547 std::set<uint32> ids; |
| 548 | |
| 549 DownloadShelf* shelf = nullptr; | |
| 550 | |
| 551 // |web_contents| is NULL in tests. | |
| 552 content::WebContents* web_contents = GetWebUIWebContents(); | |
| 553 if (web_contents) { | |
| 554 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); | |
| 555 shelf = browser->window()->GetDownloadShelf(); | |
|
asanka
2015/02/28 00:58:52
This might not work since the shelf could be on a
| |
| 556 } | |
| 557 | |
| 545 for (auto* download : to_remove) { | 558 for (auto* download : to_remove) { |
| 546 if (IsRemoved(*download) || | 559 if (IsRemoved(*download) || |
| 547 download->GetState() == content::DownloadItem::IN_PROGRESS) { | 560 download->GetState() == content::DownloadItem::IN_PROGRESS) { |
| 548 continue; | 561 continue; |
| 549 } | 562 } |
| 550 | 563 |
| 551 DownloadsDOMHandlerData::Create(download)->set_is_removed(true); | 564 DownloadsDOMHandlerData::Create(download)->set_is_removed(true); |
| 552 ids.insert(download->GetId()); | 565 ids.insert(download->GetId()); |
| 553 download->UpdateObservers(); | 566 download->UpdateObservers(); |
| 567 | |
| 568 if (shelf) | |
| 569 shelf->RemoveDownload(download); | |
| 554 } | 570 } |
| 571 | |
| 555 removes_.push_back(ids); | 572 removes_.push_back(ids); |
| 556 } | 573 } |
| 557 | 574 |
| 558 void DownloadsDOMHandler::HandleOpenDownloadsFolder( | 575 void DownloadsDOMHandler::HandleOpenDownloadsFolder( |
| 559 const base::ListValue* args) { | 576 const base::ListValue* args) { |
| 560 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_OPEN_FOLDER); | 577 CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_OPEN_FOLDER); |
| 561 content::DownloadManager* manager = main_notifier_.GetManager(); | 578 content::DownloadManager* manager = main_notifier_.GetManager(); |
| 562 if (manager) { | 579 if (manager) { |
| 563 platform_util::OpenItem( | 580 platform_util::OpenItem( |
| 564 Profile::FromBrowserContext(manager->GetBrowserContext()), | 581 Profile::FromBrowserContext(manager->GetBrowserContext()), |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 682 } | 699 } |
| 683 | 700 |
| 684 void DownloadsDOMHandler::CallDownloadsList(const base::ListValue& downloads) { | 701 void DownloadsDOMHandler::CallDownloadsList(const base::ListValue& downloads) { |
| 685 web_ui()->CallJavascriptFunction("downloadsList", downloads); | 702 web_ui()->CallJavascriptFunction("downloadsList", downloads); |
| 686 } | 703 } |
| 687 | 704 |
| 688 void DownloadsDOMHandler::CallDownloadUpdated( | 705 void DownloadsDOMHandler::CallDownloadUpdated( |
| 689 const base::ListValue& download_item) { | 706 const base::ListValue& download_item) { |
| 690 web_ui()->CallJavascriptFunction("downloadUpdated", download_item); | 707 web_ui()->CallJavascriptFunction("downloadUpdated", download_item); |
| 691 } | 708 } |
| OLD | NEW |