| 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 <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 951 const std::string& name) | 951 const std::string& name) |
| 952 : id_(id), | 952 : id_(id), |
| 953 name_(name) { | 953 name_(name) { |
| 954 item->SetUserData(kKey, this); | 954 item->SetUserData(kKey, this); |
| 955 } | 955 } |
| 956 | 956 |
| 957 DownloadsDownloadFunction::DownloadsDownloadFunction() {} | 957 DownloadsDownloadFunction::DownloadsDownloadFunction() {} |
| 958 | 958 |
| 959 DownloadsDownloadFunction::~DownloadsDownloadFunction() {} | 959 DownloadsDownloadFunction::~DownloadsDownloadFunction() {} |
| 960 | 960 |
| 961 bool DownloadsDownloadFunction::RunImpl() { | 961 bool DownloadsDownloadFunction::RunAsync() { |
| 962 scoped_ptr<downloads::Download::Params> params( | 962 scoped_ptr<downloads::Download::Params> params( |
| 963 downloads::Download::Params::Create(*args_)); | 963 downloads::Download::Params::Create(*args_)); |
| 964 EXTENSION_FUNCTION_VALIDATE(params.get()); | 964 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 965 const downloads::DownloadOptions& options = params->options; | 965 const downloads::DownloadOptions& options = params->options; |
| 966 GURL download_url(options.url); | 966 GURL download_url(options.url); |
| 967 if (Fault(!download_url.is_valid(), errors::kInvalidURL, &error_)) | 967 if (Fault(!download_url.is_valid(), errors::kInvalidURL, &error_)) |
| 968 return false; | 968 return false; |
| 969 | 969 |
| 970 Profile* current_profile = GetProfile(); | 970 Profile* current_profile = GetProfile(); |
| 971 if (include_incognito() && GetProfile()->HasOffTheRecordProfile()) | 971 if (include_incognito() && GetProfile()->HasOffTheRecordProfile()) |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1200 RecordApiFunctions(DOWNLOADS_FUNCTION_ERASE); | 1200 RecordApiFunctions(DOWNLOADS_FUNCTION_ERASE); |
| 1201 return true; | 1201 return true; |
| 1202 } | 1202 } |
| 1203 | 1203 |
| 1204 DownloadsRemoveFileFunction::DownloadsRemoveFileFunction() { | 1204 DownloadsRemoveFileFunction::DownloadsRemoveFileFunction() { |
| 1205 } | 1205 } |
| 1206 | 1206 |
| 1207 DownloadsRemoveFileFunction::~DownloadsRemoveFileFunction() { | 1207 DownloadsRemoveFileFunction::~DownloadsRemoveFileFunction() { |
| 1208 } | 1208 } |
| 1209 | 1209 |
| 1210 bool DownloadsRemoveFileFunction::RunImpl() { | 1210 bool DownloadsRemoveFileFunction::RunAsync() { |
| 1211 scoped_ptr<downloads::RemoveFile::Params> params( | 1211 scoped_ptr<downloads::RemoveFile::Params> params( |
| 1212 downloads::RemoveFile::Params::Create(*args_)); | 1212 downloads::RemoveFile::Params::Create(*args_)); |
| 1213 EXTENSION_FUNCTION_VALIDATE(params.get()); | 1213 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 1214 DownloadItem* download_item = | 1214 DownloadItem* download_item = |
| 1215 GetDownload(GetProfile(), include_incognito(), params->download_id); | 1215 GetDownload(GetProfile(), include_incognito(), params->download_id); |
| 1216 if (InvalidId(download_item, &error_) || | 1216 if (InvalidId(download_item, &error_) || |
| 1217 Fault((download_item->GetState() != DownloadItem::COMPLETE), | 1217 Fault((download_item->GetState() != DownloadItem::COMPLETE), |
| 1218 errors::kNotComplete, &error_) || | 1218 errors::kNotComplete, &error_) || |
| 1219 Fault(download_item->GetFileExternallyRemoved(), | 1219 Fault(download_item->GetFileExternallyRemoved(), |
| 1220 errors::kFileAlreadyDeleted, &error_)) | 1220 errors::kFileAlreadyDeleted, &error_)) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1233 SendResponse(error_.empty()); | 1233 SendResponse(error_.empty()); |
| 1234 } | 1234 } |
| 1235 | 1235 |
| 1236 DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {} | 1236 DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {} |
| 1237 | 1237 |
| 1238 DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {} | 1238 DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {} |
| 1239 | 1239 |
| 1240 DownloadsAcceptDangerFunction::OnPromptCreatedCallback* | 1240 DownloadsAcceptDangerFunction::OnPromptCreatedCallback* |
| 1241 DownloadsAcceptDangerFunction::on_prompt_created_ = NULL; | 1241 DownloadsAcceptDangerFunction::on_prompt_created_ = NULL; |
| 1242 | 1242 |
| 1243 bool DownloadsAcceptDangerFunction::RunImpl() { | 1243 bool DownloadsAcceptDangerFunction::RunAsync() { |
| 1244 scoped_ptr<downloads::AcceptDanger::Params> params( | 1244 scoped_ptr<downloads::AcceptDanger::Params> params( |
| 1245 downloads::AcceptDanger::Params::Create(*args_)); | 1245 downloads::AcceptDanger::Params::Create(*args_)); |
| 1246 EXTENSION_FUNCTION_VALIDATE(params.get()); | 1246 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 1247 PromptOrWait(params->download_id, 10); | 1247 PromptOrWait(params->download_id, 10); |
| 1248 return true; | 1248 return true; |
| 1249 } | 1249 } |
| 1250 | 1250 |
| 1251 void DownloadsAcceptDangerFunction::PromptOrWait(int download_id, int retries) { | 1251 void DownloadsAcceptDangerFunction::PromptOrWait(int download_id, int retries) { |
| 1252 DownloadItem* download_item = | 1252 DownloadItem* download_item = |
| 1253 GetDownload(GetProfile(), include_incognito(), download_id); | 1253 GetDownload(GetProfile(), include_incognito(), download_id); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1310 case DownloadDangerPrompt::DISMISS: | 1310 case DownloadDangerPrompt::DISMISS: |
| 1311 break; | 1311 break; |
| 1312 } | 1312 } |
| 1313 SendResponse(error_.empty()); | 1313 SendResponse(error_.empty()); |
| 1314 } | 1314 } |
| 1315 | 1315 |
| 1316 DownloadsShowFunction::DownloadsShowFunction() {} | 1316 DownloadsShowFunction::DownloadsShowFunction() {} |
| 1317 | 1317 |
| 1318 DownloadsShowFunction::~DownloadsShowFunction() {} | 1318 DownloadsShowFunction::~DownloadsShowFunction() {} |
| 1319 | 1319 |
| 1320 bool DownloadsShowFunction::RunImpl() { | 1320 bool DownloadsShowFunction::RunAsync() { |
| 1321 scoped_ptr<downloads::Show::Params> params( | 1321 scoped_ptr<downloads::Show::Params> params( |
| 1322 downloads::Show::Params::Create(*args_)); | 1322 downloads::Show::Params::Create(*args_)); |
| 1323 EXTENSION_FUNCTION_VALIDATE(params.get()); | 1323 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 1324 DownloadItem* download_item = | 1324 DownloadItem* download_item = |
| 1325 GetDownload(GetProfile(), include_incognito(), params->download_id); | 1325 GetDownload(GetProfile(), include_incognito(), params->download_id); |
| 1326 if (InvalidId(download_item, &error_)) | 1326 if (InvalidId(download_item, &error_)) |
| 1327 return false; | 1327 return false; |
| 1328 download_item->ShowDownloadInShell(); | 1328 download_item->ShowDownloadInShell(); |
| 1329 RecordApiFunctions(DOWNLOADS_FUNCTION_SHOW); | 1329 RecordApiFunctions(DOWNLOADS_FUNCTION_SHOW); |
| 1330 return true; | 1330 return true; |
| 1331 } | 1331 } |
| 1332 | 1332 |
| 1333 DownloadsShowDefaultFolderFunction::DownloadsShowDefaultFolderFunction() {} | 1333 DownloadsShowDefaultFolderFunction::DownloadsShowDefaultFolderFunction() {} |
| 1334 | 1334 |
| 1335 DownloadsShowDefaultFolderFunction::~DownloadsShowDefaultFolderFunction() {} | 1335 DownloadsShowDefaultFolderFunction::~DownloadsShowDefaultFolderFunction() {} |
| 1336 | 1336 |
| 1337 bool DownloadsShowDefaultFolderFunction::RunImpl() { | 1337 bool DownloadsShowDefaultFolderFunction::RunAsync() { |
| 1338 DownloadManager* manager = NULL; | 1338 DownloadManager* manager = NULL; |
| 1339 DownloadManager* incognito_manager = NULL; | 1339 DownloadManager* incognito_manager = NULL; |
| 1340 GetManagers(GetProfile(), include_incognito(), &manager, &incognito_manager); | 1340 GetManagers(GetProfile(), include_incognito(), &manager, &incognito_manager); |
| 1341 platform_util::OpenItem( | 1341 platform_util::OpenItem( |
| 1342 GetProfile(), | 1342 GetProfile(), |
| 1343 DownloadPrefs::FromDownloadManager(manager)->DownloadPath()); | 1343 DownloadPrefs::FromDownloadManager(manager)->DownloadPath()); |
| 1344 RecordApiFunctions(DOWNLOADS_FUNCTION_SHOW_DEFAULT_FOLDER); | 1344 RecordApiFunctions(DOWNLOADS_FUNCTION_SHOW_DEFAULT_FOLDER); |
| 1345 return true; | 1345 return true; |
| 1346 } | 1346 } |
| 1347 | 1347 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1365 return false; | 1365 return false; |
| 1366 download_item->OpenDownload(); | 1366 download_item->OpenDownload(); |
| 1367 RecordApiFunctions(DOWNLOADS_FUNCTION_OPEN); | 1367 RecordApiFunctions(DOWNLOADS_FUNCTION_OPEN); |
| 1368 return true; | 1368 return true; |
| 1369 } | 1369 } |
| 1370 | 1370 |
| 1371 DownloadsDragFunction::DownloadsDragFunction() {} | 1371 DownloadsDragFunction::DownloadsDragFunction() {} |
| 1372 | 1372 |
| 1373 DownloadsDragFunction::~DownloadsDragFunction() {} | 1373 DownloadsDragFunction::~DownloadsDragFunction() {} |
| 1374 | 1374 |
| 1375 bool DownloadsDragFunction::RunImpl() { | 1375 bool DownloadsDragFunction::RunAsync() { |
| 1376 scoped_ptr<downloads::Drag::Params> params( | 1376 scoped_ptr<downloads::Drag::Params> params( |
| 1377 downloads::Drag::Params::Create(*args_)); | 1377 downloads::Drag::Params::Create(*args_)); |
| 1378 EXTENSION_FUNCTION_VALIDATE(params.get()); | 1378 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 1379 DownloadItem* download_item = | 1379 DownloadItem* download_item = |
| 1380 GetDownload(GetProfile(), include_incognito(), params->download_id); | 1380 GetDownload(GetProfile(), include_incognito(), params->download_id); |
| 1381 content::WebContents* web_contents = | 1381 content::WebContents* web_contents = |
| 1382 dispatcher()->delegate()->GetVisibleWebContents(); | 1382 dispatcher()->delegate()->GetVisibleWebContents(); |
| 1383 if (InvalidId(download_item, &error_) || | 1383 if (InvalidId(download_item, &error_) || |
| 1384 Fault(!web_contents, errors::kInvisibleContext, &error_)) | 1384 Fault(!web_contents, errors::kInvisibleContext, &error_)) |
| 1385 return false; | 1385 return false; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1459 } | 1459 } |
| 1460 | 1460 |
| 1461 DownloadsGetFileIconFunction::~DownloadsGetFileIconFunction() {} | 1461 DownloadsGetFileIconFunction::~DownloadsGetFileIconFunction() {} |
| 1462 | 1462 |
| 1463 void DownloadsGetFileIconFunction::SetIconExtractorForTesting( | 1463 void DownloadsGetFileIconFunction::SetIconExtractorForTesting( |
| 1464 DownloadFileIconExtractor* extractor) { | 1464 DownloadFileIconExtractor* extractor) { |
| 1465 DCHECK(extractor); | 1465 DCHECK(extractor); |
| 1466 icon_extractor_.reset(extractor); | 1466 icon_extractor_.reset(extractor); |
| 1467 } | 1467 } |
| 1468 | 1468 |
| 1469 bool DownloadsGetFileIconFunction::RunImpl() { | 1469 bool DownloadsGetFileIconFunction::RunAsync() { |
| 1470 scoped_ptr<downloads::GetFileIcon::Params> params( | 1470 scoped_ptr<downloads::GetFileIcon::Params> params( |
| 1471 downloads::GetFileIcon::Params::Create(*args_)); | 1471 downloads::GetFileIcon::Params::Create(*args_)); |
| 1472 EXTENSION_FUNCTION_VALIDATE(params.get()); | 1472 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 1473 const downloads::GetFileIconOptions* options = | 1473 const downloads::GetFileIconOptions* options = |
| 1474 params->options.get(); | 1474 params->options.get(); |
| 1475 int icon_size = kDefaultIconSize; | 1475 int icon_size = kDefaultIconSize; |
| 1476 if (options && options->size.get()) | 1476 if (options && options->size.get()) |
| 1477 icon_size = *options->size.get(); | 1477 icon_size = *options->size.get(); |
| 1478 DownloadItem* download_item = | 1478 DownloadItem* download_item = |
| 1479 GetDownload(GetProfile(), include_incognito(), params->download_id); | 1479 GetDownload(GetProfile(), include_incognito(), params->download_id); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1561 // When a download's filename is being determined, | 1561 // When a download's filename is being determined, |
| 1562 // ChromeDownloadManagerDelegate::CheckVisitedReferrerBeforeDone (CVRBD) passes | 1562 // ChromeDownloadManagerDelegate::CheckVisitedReferrerBeforeDone (CVRBD) passes |
| 1563 // 2 callbacks to ExtensionDownloadsEventRouter::OnDeterminingFilename (ODF), | 1563 // 2 callbacks to ExtensionDownloadsEventRouter::OnDeterminingFilename (ODF), |
| 1564 // which stores the callbacks in the item's ExtensionDownloadsEventRouterData | 1564 // which stores the callbacks in the item's ExtensionDownloadsEventRouterData |
| 1565 // (EDERD) along with all of the extension IDs that are listening for | 1565 // (EDERD) along with all of the extension IDs that are listening for |
| 1566 // onDeterminingFilename events. ODF dispatches | 1566 // onDeterminingFilename events. ODF dispatches |
| 1567 // chrome.downloads.onDeterminingFilename. | 1567 // chrome.downloads.onDeterminingFilename. |
| 1568 // | 1568 // |
| 1569 // When the extension's event handler calls |suggestCallback|, | 1569 // When the extension's event handler calls |suggestCallback|, |
| 1570 // downloads_custom_bindings.js calls | 1570 // downloads_custom_bindings.js calls |
| 1571 // DownloadsInternalDetermineFilenameFunction::RunImpl, which calls | 1571 // DownloadsInternalDetermineFilenameFunction::RunAsync, which calls |
| 1572 // EDER::DetermineFilename, which notifies the item's EDERD. | 1572 // EDER::DetermineFilename, which notifies the item's EDERD. |
| 1573 // | 1573 // |
| 1574 // When the last extension's event handler returns, EDERD calls one of the two | 1574 // When the last extension's event handler returns, EDERD calls one of the two |
| 1575 // callbacks that CVRBD passed to ODF, allowing CDMD to complete the filename | 1575 // callbacks that CVRBD passed to ODF, allowing CDMD to complete the filename |
| 1576 // determination process. If multiple extensions wish to override the filename, | 1576 // determination process. If multiple extensions wish to override the filename, |
| 1577 // then the extension that was last installed wins. | 1577 // then the extension that was last installed wins. |
| 1578 | 1578 |
| 1579 void ExtensionDownloadsEventRouter::OnDeterminingFilename( | 1579 void ExtensionDownloadsEventRouter::OnDeterminingFilename( |
| 1580 DownloadItem* item, | 1580 DownloadItem* item, |
| 1581 const base::FilePath& suggested_path, | 1581 const base::FilePath& suggested_path, |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1897 const extensions::Extension* extension, | 1897 const extensions::Extension* extension, |
| 1898 extensions::UnloadedExtensionInfo::Reason reason) { | 1898 extensions::UnloadedExtensionInfo::Reason reason) { |
| 1899 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1899 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1900 std::set<const extensions::Extension*>::iterator iter = | 1900 std::set<const extensions::Extension*>::iterator iter = |
| 1901 shelf_disabling_extensions_.find(extension); | 1901 shelf_disabling_extensions_.find(extension); |
| 1902 if (iter != shelf_disabling_extensions_.end()) | 1902 if (iter != shelf_disabling_extensions_.end()) |
| 1903 shelf_disabling_extensions_.erase(iter); | 1903 shelf_disabling_extensions_.erase(iter); |
| 1904 } | 1904 } |
| 1905 | 1905 |
| 1906 } // namespace extensions | 1906 } // namespace extensions |
| OLD | NEW |