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

Unified Diff: chrome/browser/download/download_extension_api.cc

Issue 10542038: Rewrite DownloadsApiTest in C++. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 6 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/download/download_extension_api.cc
diff --git a/chrome/browser/download/download_extension_api.cc b/chrome/browser/download/download_extension_api.cc
index b19c22c19b7bcf3c66c1b091a9f7e1de9c81d6bc..825a2f200487744fc6a122a42012da9678a17ded 100644
--- a/chrome/browser/download/download_extension_api.cc
+++ b/chrome/browser/download/download_extension_api.cc
@@ -37,9 +37,11 @@
#include "chrome/browser/renderer_host/chrome_render_message_filter.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/webui/web_ui_util.h"
+#include "chrome/common/chrome_notification_types.h"
#include "content/public/browser/download_interrupt_reasons.h"
#include "content/public/browser/download_item.h"
#include "content/public/browser/download_save_info.h"
+#include "content/public/browser/notification_service.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/resource_dispatcher_host.h"
@@ -982,6 +984,8 @@ ExtensionDownloadsEventRouter::OnChangedStat::~OnChangedStat() {
}
void ExtensionDownloadsEventRouter::OnDownloadUpdated(DownloadItem* item) {
+ if (!profile_)
+ return;
int download_id = item->GetId();
if (item->GetState() == DownloadItem::REMOVING) {
// The REMOVING state indicates that this item is being erased.
@@ -1106,10 +1110,13 @@ void ExtensionDownloadsEventRouter::ManagerGoingDown(
DownloadManager* manager) {
manager_->RemoveObserver(this);
manager_ = NULL;
+ profile_ = NULL;
Randy Smith (Not in Mondays) 2012/06/18 18:42:58 So this means that you'll not handle the notificat
benjhayden 2012/06/19 15:01:59 When I made ChromeDownloadManagerDelegate own Exte
Randy Smith (Not in Mondays) 2012/06/19 19:23:23 Sure, that's a problem, but you've chosen one part
benjhayden 2012/06/21 17:50:48 An extension that wants to keep track of the state
}
void ExtensionDownloadsEventRouter::DispatchEvent(
const char* event_name, base::Value* arg) {
+ if (!profile_)
+ return;
ListValue args;
args.Append(arg);
std::string json_args;
@@ -1119,4 +1126,11 @@ void ExtensionDownloadsEventRouter::DispatchEvent(
json_args,
profile_,
GURL());
+ DownloadsNotificationSource notification_source;
+ notification_source.event_name = event_name;
+ notification_source.profile = profile_;
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_EXTENSION_DOWNLOADS_EVENT,
+ content::Source<DownloadsNotificationSource>(&notification_source),
+ content::Details<std::string>(&json_args));
Randy Smith (Not in Mondays) 2012/06/18 18:42:58 This is two different mechanisms for notifying abo
benjhayden 2012/06/19 15:01:59 EDER is-a DM::O already. How would making it a DM:
Randy Smith (Not in Mondays) 2012/06/19 19:23:23 Sorry, this is my cluelessness; I didn't notice th
}

Powered by Google App Engine
This is Rietveld 408576698