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

Unified Diff: chrome/browser/extensions/webstore_installer.cc

Issue 46583007: Download webstore CRXs into separate directory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 7 years, 1 month 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/webstore_installer.cc
diff --git a/chrome/browser/extensions/webstore_installer.cc b/chrome/browser/extensions/webstore_installer.cc
index d4c9c2f0e3ddb70eefde3cd5dd499e46f0e5c3bc..d4a1bad5547b41b15ae1a5d8b20308b99be7c292 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"
@@ -28,6 +30,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"
@@ -75,19 +78,25 @@ const char kInvalidDownloadError[] =
"Download was not a valid extension or user script";
const char kDependencyNotFoundError[] = "Dependency not found";
const char kDependencyNotSharedModuleError[] =
- "Dependency is not shared module";
+ "Dependency is not shared module";
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.
void GetDownloadFilePath(
- const base::FilePath& download_directory, const std::string& id,
+ const base::FilePath& download_directory,
+ const std::string& id,
const base::Callback<void(const base::FilePath&)>& callback) {
base::FilePath directory(g_download_directory_for_tests ?
- *g_download_directory_for_tests : download_directory);
+ *g_download_directory_for_tests : download_directory);
#if defined(OS_CHROMEOS)
// Do not use drive for extension downloads.
@@ -126,13 +135,23 @@ void GetDownloadFilePath(
base::Bind(callback, file));
}
+bool UseSeparateWebstoreDownloadDirectory() {
+ const char kFieldTrial[] = "WebstoreDownloadDirectory";
+ const char kSeparateDirectoryUnderUDD[] = "SeparateDirectoryUnderUDD";
+
+ std::string field_trial_group =
+ base::FieldTrialList::FindFullName(kFieldTrial);
+ return field_trial_group == kSeparateDirectoryUnderUDD;
+}
+
} // namespace
namespace extensions {
// static
GURL WebstoreInstaller::GetWebstoreInstallURL(
- const std::string& extension_id, InstallSource source) {
+ const std::string& extension_id,
+ InstallSource source) {
std::string install_source;
switch (source) {
case INSTALL_SOURCE_INLINE:
@@ -493,10 +512,20 @@ void WebstoreInstaller::DownloadNextPendingModule() {
}
void WebstoreInstaller::DownloadCrx(
- const std::string& extension_id, InstallSource source) {
+ const std::string& extension_id,
+ InstallSource source) {
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_,
« no previous file with comments | « chrome/browser/extensions/api/webstore_private/webstore_private_api.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698