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/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 Loading... |
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 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1193 it != results.end(); ++it) { | 1194 it != results.end(); ++it) { |
1194 json_results->Append( | 1195 json_results->Append( |
1195 new base::FundamentalValue(static_cast<int>((*it)->GetId()))); | 1196 new base::FundamentalValue(static_cast<int>((*it)->GetId()))); |
1196 (*it)->Remove(); | 1197 (*it)->Remove(); |
1197 } | 1198 } |
1198 SetResult(json_results); | 1199 SetResult(json_results); |
1199 RecordApiFunctions(DOWNLOADS_FUNCTION_ERASE); | 1200 RecordApiFunctions(DOWNLOADS_FUNCTION_ERASE); |
1200 return true; | 1201 return true; |
1201 } | 1202 } |
1202 | 1203 |
1203 DownloadsRemoveFileFunction::DownloadsRemoveFileFunction() | 1204 DownloadsRemoveFileFunction::DownloadsRemoveFileFunction() { |
1204 : item_(NULL) { | |
1205 } | 1205 } |
1206 | 1206 |
1207 DownloadsRemoveFileFunction::~DownloadsRemoveFileFunction() { | 1207 DownloadsRemoveFileFunction::~DownloadsRemoveFileFunction() { |
1208 if (item_) { | |
1209 item_->RemoveObserver(this); | |
1210 item_ = NULL; | |
1211 } | |
1212 } | 1208 } |
1213 | 1209 |
1214 bool DownloadsRemoveFileFunction::RunImpl() { | 1210 bool DownloadsRemoveFileFunction::RunImpl() { |
1215 scoped_ptr<downloads::RemoveFile::Params> params( | 1211 scoped_ptr<downloads::RemoveFile::Params> params( |
1216 downloads::RemoveFile::Params::Create(*args_)); | 1212 downloads::RemoveFile::Params::Create(*args_)); |
1217 EXTENSION_FUNCTION_VALIDATE(params.get()); | 1213 EXTENSION_FUNCTION_VALIDATE(params.get()); |
1218 DownloadItem* download_item = | 1214 DownloadItem* download_item = |
1219 GetDownload(GetProfile(), include_incognito(), params->download_id); | 1215 GetDownload(GetProfile(), include_incognito(), params->download_id); |
1220 if (InvalidId(download_item, &error_) || | 1216 if (InvalidId(download_item, &error_) || |
1221 Fault((download_item->GetState() != DownloadItem::COMPLETE), | 1217 Fault((download_item->GetState() != DownloadItem::COMPLETE), |
1222 errors::kNotComplete, &error_) || | 1218 errors::kNotComplete, &error_) || |
1223 Fault(download_item->GetFileExternallyRemoved(), | 1219 Fault(download_item->GetFileExternallyRemoved(), |
1224 errors::kFileAlreadyDeleted, &error_)) | 1220 errors::kFileAlreadyDeleted, &error_)) |
1225 return false; | 1221 return false; |
1226 item_ = download_item; | |
1227 item_->AddObserver(this); | |
1228 RecordApiFunctions(DOWNLOADS_FUNCTION_REMOVE_FILE); | 1222 RecordApiFunctions(DOWNLOADS_FUNCTION_REMOVE_FILE); |
1229 download_item->DeleteFile(); | 1223 download_item->DeleteFile( |
| 1224 base::Bind(&DownloadsRemoveFileFunction::Done, this)); |
1230 return true; | 1225 return true; |
1231 } | 1226 } |
1232 | 1227 |
1233 void DownloadsRemoveFileFunction::OnDownloadUpdated(DownloadItem* download) { | 1228 void DownloadsRemoveFileFunction::Done(bool success) { |
1234 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1229 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
1235 DCHECK_EQ(item_, download); | 1230 if (!success) { |
1236 if (!item_->GetFileExternallyRemoved()) | 1231 error_ = errors::kFileNotRemoved; |
1237 return; | 1232 } |
1238 item_->RemoveObserver(this); | 1233 SendResponse(error_.empty()); |
1239 item_ = NULL; | |
1240 SendResponse(true); | |
1241 } | |
1242 | |
1243 void DownloadsRemoveFileFunction::OnDownloadDestroyed(DownloadItem* download) { | |
1244 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
1245 DCHECK_EQ(item_, download); | |
1246 item_->RemoveObserver(this); | |
1247 item_ = NULL; | |
1248 SendResponse(true); | |
1249 } | 1234 } |
1250 | 1235 |
1251 DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {} | 1236 DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {} |
1252 | 1237 |
1253 DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {} | 1238 DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {} |
1254 | 1239 |
1255 DownloadsAcceptDangerFunction::OnPromptCreatedCallback* | 1240 DownloadsAcceptDangerFunction::OnPromptCreatedCallback* |
1256 DownloadsAcceptDangerFunction::on_prompt_created_ = NULL; | 1241 DownloadsAcceptDangerFunction::on_prompt_created_ = NULL; |
1257 | 1242 |
1258 bool DownloadsAcceptDangerFunction::RunImpl() { | 1243 bool DownloadsAcceptDangerFunction::RunImpl() { |
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1906 extensions::UnloadedExtensionInfo* unloaded = | 1891 extensions::UnloadedExtensionInfo* unloaded = |
1907 content::Details<extensions::UnloadedExtensionInfo>(details).ptr(); | 1892 content::Details<extensions::UnloadedExtensionInfo>(details).ptr(); |
1908 std::set<const extensions::Extension*>::iterator iter = | 1893 std::set<const extensions::Extension*>::iterator iter = |
1909 shelf_disabling_extensions_.find(unloaded->extension); | 1894 shelf_disabling_extensions_.find(unloaded->extension); |
1910 if (iter != shelf_disabling_extensions_.end()) | 1895 if (iter != shelf_disabling_extensions_.end()) |
1911 shelf_disabling_extensions_.erase(iter); | 1896 shelf_disabling_extensions_.erase(iter); |
1912 break; | 1897 break; |
1913 } | 1898 } |
1914 } | 1899 } |
1915 } | 1900 } |
OLD | NEW |