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

Side by Side Diff: chrome/browser/download_manager.cc

Issue 462: Same CL as 448. Had to redo it.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 3 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
« no previous file with comments | « no previous file | chrome/common/chrome_paths.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 <time.h> 5 #include <time.h>
6 6
7 #include "chrome/browser/download_manager.h" 7 #include "chrome/browser/download_manager.h"
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 75
76 if (!file_util::PathExists(new_path)) { 76 if (!file_util::PathExists(new_path)) {
77 path->swap(new_path); 77 path->swap(new_path);
78 return true; 78 return true;
79 } 79 }
80 } 80 }
81 81
82 return false; 82 return false;
83 } 83 }
84 84
85 static bool DownloadPathIsDangerous(const std::wstring& download_path) {
86 std::wstring desktop_dir;
87 if (!PathService::Get(chrome::DIR_USER_DESKTOP, &desktop_dir)) {
88 NOTREACHED();
89 return false;
90 }
91 return (download_path == desktop_dir);
92 }
93
85 // DownloadItem implementation ------------------------------------------------- 94 // DownloadItem implementation -------------------------------------------------
86 95
87 // Constructor for reading from the history service. 96 // Constructor for reading from the history service.
88 DownloadItem::DownloadItem(const DownloadCreateInfo& info) 97 DownloadItem::DownloadItem(const DownloadCreateInfo& info)
89 : id_(-1), 98 : id_(-1),
90 full_path_(info.path), 99 full_path_(info.path),
91 url_(info.url), 100 url_(info.url),
92 total_bytes_(info.total_bytes), 101 total_bytes_(info.total_bytes),
93 received_bytes_(info.received_bytes), 102 received_bytes_(info.received_bytes),
94 start_tick_(0), 103 start_tick_(0),
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 is_paused_ = !is_paused_; 254 is_paused_ = !is_paused_;
246 UpdateObservers(); 255 UpdateObservers();
247 } 256 }
248 257
249 // DownloadManager implementation ---------------------------------------------- 258 // DownloadManager implementation ----------------------------------------------
250 259
251 // static 260 // static
252 void DownloadManager::RegisterUserPrefs(PrefService* prefs) { 261 void DownloadManager::RegisterUserPrefs(PrefService* prefs) {
253 prefs->RegisterBooleanPref(prefs::kPromptForDownload, false); 262 prefs->RegisterBooleanPref(prefs::kPromptForDownload, false);
254 prefs->RegisterStringPref(prefs::kDownloadExtensionsToOpen, L""); 263 prefs->RegisterStringPref(prefs::kDownloadExtensionsToOpen, L"");
264 prefs->RegisterBooleanPref(prefs::kDownloadDirUpgraded, false);
265
266 // The default download path is userprofile\download.
267 std::wstring default_download_path;
268 if (!PathService::Get(chrome::DIR_USER_DOCUMENTS, &default_download_path)) {
269 NOTREACHED();
270 }
271 file_util::AppendToPath(&default_download_path,
272 l10n_util::GetString(IDS_DOWNLOAD_DIRECTORY));
273 prefs->RegisterStringPref(prefs::kDownloadDefaultDirectory,
274 default_download_path);
275
276 // If the download path is dangerous we forcefully reset it. But if we do
277 // so we set a flag to make sure we only do it once, to avoid fighting
278 // the user if he really wants it on an unsafe place such as the desktop.
279
280 if (!prefs->GetBoolean(prefs::kDownloadDirUpgraded)) {
281 std::wstring current_download_dir =
282 prefs->GetString(prefs::kDownloadDefaultDirectory);
283 if (DownloadPathIsDangerous(current_download_dir)) {
284 prefs->SetString(prefs::kDownloadDefaultDirectory,
285 default_download_path);
286 }
287 prefs->SetBoolean(prefs::kDownloadDirUpgraded, true);
288 }
255 } 289 }
256 290
257 DownloadManager::DownloadManager() 291 DownloadManager::DownloadManager()
258 : shutdown_needed_(false), 292 : shutdown_needed_(false),
259 profile_(NULL), 293 profile_(NULL),
260 file_manager_(NULL), 294 file_manager_(NULL),
261 ui_loop_(MessageLoop::current()), 295 ui_loop_(MessageLoop::current()),
262 file_loop_(NULL) { 296 file_loop_(NULL) {
263 } 297 }
264 298
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 if (!file_loop_) { 414 if (!file_loop_) {
381 NOTREACHED(); 415 NOTREACHED();
382 return false; 416 return false;
383 } 417 }
384 418
385 // Get our user preference state. 419 // Get our user preference state.
386 PrefService* prefs = profile_->GetPrefs(); 420 PrefService* prefs = profile_->GetPrefs();
387 DCHECK(prefs); 421 DCHECK(prefs);
388 prompt_for_download_.Init(prefs::kPromptForDownload, prefs, NULL); 422 prompt_for_download_.Init(prefs::kPromptForDownload, prefs, NULL);
389 423
390 // Use the IE download directory on Vista, if available.
391 std::wstring default_download_path;
392 if (win_util::GetWinVersion() == win_util::WINVERSION_VISTA) {
393 RegKey vista_reg(HKEY_CURRENT_USER,
394 L"Software\\Microsoft\\Internet Explorer", KEY_READ);
395 const wchar_t* const vista_dir = L"Download Directory";
396 if (vista_reg.ValueExists(vista_dir))
397 vista_reg.ReadValue(vista_dir, &default_download_path);
398 }
399 if (default_download_path.empty()) {
400 PathService::Get(chrome::DIR_USER_DOCUMENTS, &default_download_path);
401 file_util::AppendToPath(&default_download_path,
402 l10n_util::GetString(IDS_DOWNLOAD_DIRECTORY));
403 }
404 // Check if the pref has already been registered, as the user profile and the
405 // "off the record" profile might register it.
406 if (!prefs->IsPrefRegistered(prefs::kDownloadDefaultDirectory))
407 prefs->RegisterStringPref(prefs::kDownloadDefaultDirectory,
408 default_download_path);
409 download_path_.Init(prefs::kDownloadDefaultDirectory, prefs, NULL); 424 download_path_.Init(prefs::kDownloadDefaultDirectory, prefs, NULL);
410 425
411 // Ensure that the download directory specified in the preferences exists. 426 // Ensure that the download directory specified in the preferences exists.
412 file_loop_->PostTask(FROM_HERE, NewRunnableMethod( 427 file_loop_->PostTask(FROM_HERE, NewRunnableMethod(
413 file_manager_, &DownloadFileManager::CreateDirectory, *download_path_)); 428 file_manager_, &DownloadFileManager::CreateDirectory, *download_path_));
414 429
415 // We store any file extension that should be opened automatically at 430 // We store any file extension that should be opened automatically at
416 // download completion in this pref. 431 // download completion in this pref.
417 download_util::InitializeExeTypes(&exe_types_); 432 download_util::InitializeExeTypes(&exe_types_);
418 433
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 for (std::vector<int64>::iterator it = results->begin(); 1095 for (std::vector<int64>::iterator it = results->begin();
1081 it != results->end(); ++it) { 1096 it != results->end(); ++it) {
1082 DownloadMap::iterator dit = downloads_.find(*it); 1097 DownloadMap::iterator dit = downloads_.find(*it);
1083 if (dit != downloads_.end()) 1098 if (dit != downloads_.end())
1084 searched_downloads.push_back(dit->second); 1099 searched_downloads.push_back(dit->second);
1085 } 1100 }
1086 1101
1087 requestor->SetDownloads(searched_downloads); 1102 requestor->SetDownloads(searched_downloads);
1088 } 1103 }
1089 1104
OLDNEW
« no previous file with comments | « no previous file | chrome/common/chrome_paths.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698