Chromium Code Reviews| Index: chrome/browser/extensions/webstore_installer.cc |
| diff --git a/chrome/browser/extensions/webstore_installer.cc b/chrome/browser/extensions/webstore_installer.cc |
| index 5ef853c25f2366f8bdb027dc77f7aafa3a7ad644..40b977685948cd2de8dc727e0b406eff77ced810 100644 |
| --- a/chrome/browser/extensions/webstore_installer.cc |
| +++ b/chrome/browser/extensions/webstore_installer.cc |
| @@ -10,6 +10,8 @@ |
| #include "base/bind.h" |
| #include "base/command_line.h" |
| #include "base/file_util.h" |
| +#include "base/metrics/field_trial.h" |
| +#include "base/path_service.h" |
| #include "base/rand_util.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_util.h" |
| @@ -27,6 +29,7 @@ |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser_list.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| +#include "chrome/common/chrome_paths.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/common/extensions/extension.h" |
| #include "chrome/common/extensions/extension_constants.h" |
| @@ -79,6 +82,11 @@ const char kInlineInstallSource[] = "inline"; |
| const char kDefaultInstallSource[] = "ondemand"; |
| const char kAppLauncherInstallSource[] = "applauncher"; |
| +// Folder for downloading crx files from the webstore. This is used so that the |
| +// crx files don't go via the usual downloads folder. |
| +const base::FilePath::CharType kWebstoreDownloadFolder[] = |
| + FILE_PATH_LITERAL("Webstore Downloads"); |
| + |
| base::FilePath* g_download_directory_for_tests = NULL; |
| // Must be executed on the FILE thread. |
| @@ -125,6 +133,16 @@ void GetDownloadFilePath( |
| base::Bind(callback, file)); |
| } |
| +bool UseSeparateWebstoreDownloadDirectory() { |
| + const char kWebstoreDownloadDirectoryFieldTrialName[] = |
|
jar (doing other things)
2013/11/18 23:49:44
nit: these super long names reduce readability IMO
jackhou1
2013/11/19 06:56:48
Done.
|
| + "WebstoreDownloadDirectory"; |
| + const char kSeparateDirectoryUnderUDD[] = "SeparateDirectoryUnderUDD"; |
| + |
| + std::string field_trial_group = base::FieldTrialList::FindFullName( |
| + kWebstoreDownloadDirectoryFieldTrialName); |
| + return field_trial_group == kSeparateDirectoryUnderUDD; |
| +} |
| + |
| } // namespace |
| namespace extensions { |
| @@ -487,8 +505,17 @@ void WebstoreInstaller::DownloadNextPendingModule() { |
| void WebstoreInstaller::DownloadCrx( |
| const std::string& extension_id, InstallSource source) { |
|
jar (doing other things)
2013/11/18 23:49:44
nit: one arg per line.
jackhou1
2013/11/19 06:56:48
Done.
|
| download_url_ = GetWebstoreInstallURL(extension_id, source); |
| - base::FilePath download_path = DownloadPrefs::FromDownloadManager( |
| - BrowserContext::GetDownloadManager(profile_))->DownloadPath(); |
| + |
| + base::FilePath download_path; |
| + if (UseSeparateWebstoreDownloadDirectory()) { |
| + base::FilePath user_data_dir; |
| + PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); |
| + download_path = user_data_dir.Append(kWebstoreDownloadFolder); |
| + } else { |
| + download_path = DownloadPrefs::FromDownloadManager( |
| + BrowserContext::GetDownloadManager(profile_))->DownloadPath(); |
| + } |
| + |
| BrowserThread::PostTask( |
| BrowserThread::FILE, FROM_HERE, |
| base::Bind(&GetDownloadFilePath, download_path, id_, |