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

Side by Side Diff: chrome/browser/extensions/api/downloads/downloads_api.cc

Issue 134373003: Return error to chrome.downloads.removeFile (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
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/extensions/api/downloads/downloads_api.h" 5 #include "chrome/browser/extensions/api/downloads/downloads_api.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cctype> 8 #include <cctype>
9 #include <iterator> 9 #include <iterator>
10 #include <set> 10 #include <set>
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 using content::BrowserContext; 83 using content::BrowserContext;
84 using content::BrowserThread; 84 using content::BrowserThread;
85 using content::DownloadItem; 85 using content::DownloadItem;
86 using content::DownloadManager; 86 using content::DownloadManager;
87 87
88 namespace download_extension_errors { 88 namespace download_extension_errors {
89 89
90 const char kEmptyFile[] = "Filename not yet determined"; 90 const char kEmptyFile[] = "Filename not yet determined";
91 const char kFileAlreadyDeleted[] = "Download file already deleted"; 91 const char kFileAlreadyDeleted[] = "Download file already deleted";
92 const char kFileNotRemoved[] = "Unable to remove file";
92 const char kIconNotFound[] = "Icon not found"; 93 const char kIconNotFound[] = "Icon not found";
93 const char kInvalidDangerType[] = "Invalid danger type"; 94 const char kInvalidDangerType[] = "Invalid danger type";
94 const char kInvalidFilename[] = "Invalid filename"; 95 const char kInvalidFilename[] = "Invalid filename";
95 const char kInvalidFilter[] = "Invalid query filter"; 96 const char kInvalidFilter[] = "Invalid query filter";
96 const char kInvalidHeader[] = "Invalid request header"; 97 const char kInvalidHeader[] = "Invalid request header";
97 const char kInvalidId[] = "Invalid downloadId"; 98 const char kInvalidId[] = "Invalid downloadId";
98 const char kInvalidOrderBy[] = "Invalid orderBy field"; 99 const char kInvalidOrderBy[] = "Invalid orderBy field";
99 const char kInvalidQueryLimit[] = "Invalid query limit"; 100 const char kInvalidQueryLimit[] = "Invalid query limit";
100 const char kInvalidState[] = "Invalid state"; 101 const char kInvalidState[] = "Invalid state";
101 const char kInvalidURL[] = "Invalid URL"; 102 const char kInvalidURL[] = "Invalid URL";
(...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after
1191 it != results.end(); ++it) { 1192 it != results.end(); ++it) {
1192 json_results->Append( 1193 json_results->Append(
1193 new base::FundamentalValue(static_cast<int>((*it)->GetId()))); 1194 new base::FundamentalValue(static_cast<int>((*it)->GetId())));
1194 (*it)->Remove(); 1195 (*it)->Remove();
1195 } 1196 }
1196 SetResult(json_results); 1197 SetResult(json_results);
1197 RecordApiFunctions(DOWNLOADS_FUNCTION_ERASE); 1198 RecordApiFunctions(DOWNLOADS_FUNCTION_ERASE);
1198 return true; 1199 return true;
1199 } 1200 }
1200 1201
1201 DownloadsRemoveFileFunction::DownloadsRemoveFileFunction() 1202 DownloadsRemoveFileFunction::DownloadsRemoveFileFunction() {
1202 : item_(NULL) {
1203 } 1203 }
1204 1204
1205 DownloadsRemoveFileFunction::~DownloadsRemoveFileFunction() { 1205 DownloadsRemoveFileFunction::~DownloadsRemoveFileFunction() {
1206 if (item_) {
1207 item_->RemoveObserver(this);
1208 item_ = NULL;
1209 }
1210 } 1206 }
1211 1207
1212 bool DownloadsRemoveFileFunction::RunImpl() { 1208 bool DownloadsRemoveFileFunction::RunImpl() {
1213 scoped_ptr<downloads::RemoveFile::Params> params( 1209 scoped_ptr<downloads::RemoveFile::Params> params(
1214 downloads::RemoveFile::Params::Create(*args_)); 1210 downloads::RemoveFile::Params::Create(*args_));
1215 EXTENSION_FUNCTION_VALIDATE(params.get()); 1211 EXTENSION_FUNCTION_VALIDATE(params.get());
1216 DownloadItem* download_item = 1212 DownloadItem* download_item =
1217 GetDownload(GetProfile(), include_incognito(), params->download_id); 1213 GetDownload(GetProfile(), include_incognito(), params->download_id);
1218 if (InvalidId(download_item, &error_) || 1214 if (InvalidId(download_item, &error_) ||
1219 Fault((download_item->GetState() != DownloadItem::COMPLETE), 1215 Fault((download_item->GetState() != DownloadItem::COMPLETE),
1220 errors::kNotComplete, &error_) || 1216 errors::kNotComplete, &error_) ||
1221 Fault(download_item->GetFileExternallyRemoved(), 1217 Fault(download_item->GetFileExternallyRemoved(),
1222 errors::kFileAlreadyDeleted, &error_)) 1218 errors::kFileAlreadyDeleted, &error_))
1223 return false; 1219 return false;
1224 item_ = download_item;
1225 item_->AddObserver(this);
1226 RecordApiFunctions(DOWNLOADS_FUNCTION_REMOVE_FILE); 1220 RecordApiFunctions(DOWNLOADS_FUNCTION_REMOVE_FILE);
1227 download_item->DeleteFile(); 1221 download_item->DeleteFile(
1222 base::Bind(&DownloadsRemoveFileFunction::Done, this));
1228 return true; 1223 return true;
1229 } 1224 }
1230 1225
1231 void DownloadsRemoveFileFunction::OnDownloadUpdated(DownloadItem* download) { 1226 void DownloadsRemoveFileFunction::Done(bool success) {
1232 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1227 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1233 DCHECK_EQ(item_, download); 1228 if (!success) {
1234 if (!item_->GetFileExternallyRemoved()) 1229 error_ = errors::kFileNotRemoved;
1235 return; 1230 }
1236 item_->RemoveObserver(this); 1231 SendResponse(error_.empty());
1237 item_ = NULL;
1238 SendResponse(true);
1239 }
1240
1241 void DownloadsRemoveFileFunction::OnDownloadDestroyed(DownloadItem* download) {
1242 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1243 DCHECK_EQ(item_, download);
1244 item_->RemoveObserver(this);
1245 item_ = NULL;
1246 SendResponse(true);
1247 } 1232 }
1248 1233
1249 DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {} 1234 DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {}
1250 1235
1251 DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {} 1236 DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {}
1252 1237
1253 DownloadsAcceptDangerFunction::OnPromptCreatedCallback* 1238 DownloadsAcceptDangerFunction::OnPromptCreatedCallback*
1254 DownloadsAcceptDangerFunction::on_prompt_created_ = NULL; 1239 DownloadsAcceptDangerFunction::on_prompt_created_ = NULL;
1255 1240
1256 bool DownloadsAcceptDangerFunction::RunImpl() { 1241 bool DownloadsAcceptDangerFunction::RunImpl() {
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after
1904 extensions::UnloadedExtensionInfo* unloaded = 1889 extensions::UnloadedExtensionInfo* unloaded =
1905 content::Details<extensions::UnloadedExtensionInfo>(details).ptr(); 1890 content::Details<extensions::UnloadedExtensionInfo>(details).ptr();
1906 std::set<const extensions::Extension*>::iterator iter = 1891 std::set<const extensions::Extension*>::iterator iter =
1907 shelf_disabling_extensions_.find(unloaded->extension); 1892 shelf_disabling_extensions_.find(unloaded->extension);
1908 if (iter != shelf_disabling_extensions_.end()) 1893 if (iter != shelf_disabling_extensions_.end())
1909 shelf_disabling_extensions_.erase(iter); 1894 shelf_disabling_extensions_.erase(iter);
1910 break; 1895 break;
1911 } 1896 }
1912 } 1897 }
1913 } 1898 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698