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

Unified Diff: chrome/browser/extensions/api/downloads/downloads_api.cc

Issue 10837125: Revert 149794 - DownloadItem::Observer::OnDownloadDestroyed() replaces DownloadItem::REMOVING (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1228/src/
Patch Set: Created 8 years, 4 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/extensions/api/downloads/downloads_api.cc
===================================================================
--- chrome/browser/extensions/api/downloads/downloads_api.cc (revision 150095)
+++ chrome/browser/extensions/api/downloads/downloads_api.cc (working copy)
@@ -139,6 +139,7 @@
kStateInProgress,
kStateComplete,
kStateInterrupted,
+ NULL,
kStateInterrupted,
};
COMPILE_ASSERT(arraysize(kStateStrings) == DownloadItem::MAX_DOWNLOAD_STATE,
@@ -163,6 +164,7 @@
DCHECK(state >= 0);
DCHECK(state < static_cast<DownloadItem::DownloadState>(
arraysize(kStateStrings)));
+ DCHECK(state != DownloadItem::REMOVING);
return kStateStrings[state];
}
@@ -818,32 +820,25 @@
UMA_HISTOGRAM_PERCENTAGE("Download.OnChanged", (fires * 100 / total));
}
-void ExtensionDownloadsEventRouter::OnDownloadDestroyed(DownloadItem* item) {
+void ExtensionDownloadsEventRouter::OnDownloadUpdated(DownloadItem* item) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
int download_id = item->GetId();
- downloads_.erase(download_id);
- item->RemoveObserver(this);
- delete item_jsons_[download_id];
- item_jsons_.erase(download_id);
- delete on_changed_stats_[download_id];
- on_changed_stats_.erase(download_id);
-}
-
-void ExtensionDownloadsEventRouter::OnDownloadRemoved(DownloadItem* item) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (!profile_)
+ if (item->GetState() == DownloadItem::REMOVING) {
+ // The REMOVING state indicates that this item is being erased.
+ // Let's unregister as an observer so that we don't see any more updates
+ // from it, dispatch the onErased event, and remove its json and is
+ // OnChangedStat from our maps.
+ downloads_.erase(download_id);
+ item->RemoveObserver(this);
+ DispatchEvent(extensions::event_names::kOnDownloadErased,
+ base::Value::CreateIntegerValue(download_id));
+ delete item_jsons_[download_id];
+ item_jsons_.erase(download_id);
+ delete on_changed_stats_[download_id];
+ on_changed_stats_.erase(download_id);
return;
- int download_id = item->GetId();
- DispatchEvent(extensions::event_names::kOnDownloadErased,
- base::Value::CreateIntegerValue(download_id));
-}
+ }
-void ExtensionDownloadsEventRouter::OnDownloadUpdated(DownloadItem* item) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (!profile_)
- return;
- int download_id = item->GetId();
-
base::DictionaryValue* old_json = item_jsons_[download_id];
scoped_ptr<base::DictionaryValue> new_json(DownloadItemToJSON(item));
scoped_ptr<base::DictionaryValue> delta(new base::DictionaryValue());
@@ -891,6 +886,10 @@
item_jsons_[download_id]->Swap(new_json.get());
}
+void ExtensionDownloadsEventRouter::OnDownloadOpened(DownloadItem* item) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+}
+
void ExtensionDownloadsEventRouter::OnDownloadCreated(
DownloadManager* manager, DownloadItem* download_item) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
@@ -914,7 +913,6 @@
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
manager_->RemoveObserver(this);
manager_ = NULL;
- profile_ = NULL;
}
void ExtensionDownloadsEventRouter::DispatchEvent(
« no previous file with comments | « chrome/browser/extensions/api/downloads/downloads_api.h ('k') | chrome/browser/extensions/webstore_installer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698