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

Side by Side Diff: chrome/browser/download/download_target_determiner.cc

Issue 1513413002: Enable "Hide Extension" option when "Save Link As" on the Mac Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nits. Created 5 years 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/download/download_target_determiner.h" 5 #include "chrome/browser/download/download_target_determiner.h"
6 6
7 #include "base/location.h" 7 #include "base/location.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/rand_util.h" 9 #include "base/rand_util.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 const CompletionCallback& callback) 88 const CompletionCallback& callback)
89 : next_state_(STATE_GENERATE_TARGET_PATH), 89 : next_state_(STATE_GENERATE_TARGET_PATH),
90 should_prompt_(false), 90 should_prompt_(false),
91 should_notify_extensions_(false), 91 should_notify_extensions_(false),
92 create_target_directory_(false), 92 create_target_directory_(false),
93 conflict_action_(DownloadPathReservationTracker::OVERWRITE), 93 conflict_action_(DownloadPathReservationTracker::OVERWRITE),
94 danger_type_(download->GetDangerType()), 94 danger_type_(download->GetDangerType()),
95 is_dangerous_file_(false), 95 is_dangerous_file_(false),
96 virtual_path_(initial_virtual_path), 96 virtual_path_(initial_virtual_path),
97 is_filetype_handled_safely_(false), 97 is_filetype_handled_safely_(false),
98 hide_file_extension_(false),
98 download_(download), 99 download_(download),
99 is_resumption_(download_->GetLastReason() != 100 is_resumption_(download_->GetLastReason() !=
100 content::DOWNLOAD_INTERRUPT_REASON_NONE && 101 content::DOWNLOAD_INTERRUPT_REASON_NONE &&
101 !initial_virtual_path.empty()), 102 !initial_virtual_path.empty()),
102 download_prefs_(download_prefs), 103 download_prefs_(download_prefs),
103 delegate_(delegate), 104 delegate_(delegate),
104 completion_callback_(callback), 105 completion_callback_(callback),
105 weak_ptr_factory_(this) { 106 weak_ptr_factory_(this) {
106 DCHECK_CURRENTLY_ON(BrowserThread::UI); 107 DCHECK_CURRENTLY_ON(BrowserThread::UI);
107 DCHECK(download_); 108 DCHECK(download_);
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 download_, 329 download_,
329 virtual_path_, 330 virtual_path_,
330 base::Bind(&DownloadTargetDeterminer::PromptUserForDownloadPathDone, 331 base::Bind(&DownloadTargetDeterminer::PromptUserForDownloadPathDone,
331 weak_ptr_factory_.GetWeakPtr())); 332 weak_ptr_factory_.GetWeakPtr()));
332 return QUIT_DOLOOP; 333 return QUIT_DOLOOP;
333 } 334 }
334 return CONTINUE; 335 return CONTINUE;
335 } 336 }
336 337
337 void DownloadTargetDeterminer::PromptUserForDownloadPathDone( 338 void DownloadTargetDeterminer::PromptUserForDownloadPathDone(
338 const base::FilePath& virtual_path) { 339 const base::FilePath& virtual_path, bool hide_file_extension) {
339 DCHECK_CURRENTLY_ON(BrowserThread::UI); 340 DCHECK_CURRENTLY_ON(BrowserThread::UI);
340 DVLOG(20) << "User selected path:" << virtual_path.AsUTF8Unsafe(); 341 DVLOG(20) << "User selected path:" << virtual_path.AsUTF8Unsafe();
341 if (virtual_path.empty()) { 342 if (virtual_path.empty()) {
342 CancelOnFailureAndDeleteSelf(); 343 CancelOnFailureAndDeleteSelf();
343 return; 344 return;
344 } 345 }
345 DCHECK_EQ(STATE_DETERMINE_LOCAL_PATH, next_state_); 346 DCHECK_EQ(STATE_DETERMINE_LOCAL_PATH, next_state_);
346 347
347 virtual_path_ = virtual_path; 348 virtual_path_ = virtual_path;
348 download_prefs_->SetSaveFilePath(virtual_path_.DirName()); 349 download_prefs_->SetSaveFilePath(virtual_path_.DirName());
350 hide_file_extension_ = hide_file_extension;
349 DoLoop(); 351 DoLoop();
350 } 352 }
351 353
352 DownloadTargetDeterminer::Result 354 DownloadTargetDeterminer::Result
353 DownloadTargetDeterminer::DoDetermineLocalPath() { 355 DownloadTargetDeterminer::DoDetermineLocalPath() {
354 DCHECK_CURRENTLY_ON(BrowserThread::UI); 356 DCHECK_CURRENTLY_ON(BrowserThread::UI);
355 DCHECK(!virtual_path_.empty()); 357 DCHECK(!virtual_path_.empty());
356 DCHECK(local_path_.empty()); 358 DCHECK(local_path_.empty());
357 359
358 next_state_ = STATE_DETERMINE_MIME_TYPE; 360 next_state_ = STATE_DETERMINE_MIME_TYPE;
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 target_info->target_path = local_path_; 730 target_info->target_path = local_path_;
729 target_info->target_disposition = 731 target_info->target_disposition =
730 (HasPromptedForPath() || should_prompt_ 732 (HasPromptedForPath() || should_prompt_
731 ? DownloadItem::TARGET_DISPOSITION_PROMPT 733 ? DownloadItem::TARGET_DISPOSITION_PROMPT
732 : DownloadItem::TARGET_DISPOSITION_OVERWRITE); 734 : DownloadItem::TARGET_DISPOSITION_OVERWRITE);
733 target_info->danger_type = danger_type_; 735 target_info->danger_type = danger_type_;
734 target_info->is_dangerous_file = is_dangerous_file_; 736 target_info->is_dangerous_file = is_dangerous_file_;
735 target_info->intermediate_path = intermediate_path_; 737 target_info->intermediate_path = intermediate_path_;
736 target_info->mime_type = mime_type_; 738 target_info->mime_type = mime_type_;
737 target_info->is_filetype_handled_safely = is_filetype_handled_safely_; 739 target_info->is_filetype_handled_safely = is_filetype_handled_safely_;
740 target_info->hide_file_extension = hide_file_extension_;
738 741
739 base::ThreadTaskRunnerHandle::Get()->PostTask( 742 base::ThreadTaskRunnerHandle::Get()->PostTask(
740 FROM_HERE, base::Bind(completion_callback_, base::Passed(&target_info))); 743 FROM_HERE, base::Bind(completion_callback_, base::Passed(&target_info)));
741 completion_callback_.Reset(); 744 completion_callback_.Reset();
742 delete this; 745 delete this;
743 } 746 }
744 747
745 void DownloadTargetDeterminer::CancelOnFailureAndDeleteSelf() { 748 void DownloadTargetDeterminer::CancelOnFailureAndDeleteSelf() {
746 // Path substitution failed. 749 // Path substitution failed.
747 virtual_path_.clear(); 750 virtual_path_.clear();
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 const base::FilePath& suggested_path) { 898 const base::FilePath& suggested_path) {
896 return base::FilePath(suggested_path.value() + kCrdownloadSuffix); 899 return base::FilePath(suggested_path.value() + kCrdownloadSuffix);
897 } 900 }
898 901
899 #if defined(OS_WIN) 902 #if defined(OS_WIN)
900 // static 903 // static
901 bool DownloadTargetDeterminer::IsAdobeReaderUpToDate() { 904 bool DownloadTargetDeterminer::IsAdobeReaderUpToDate() {
902 return g_is_adobe_reader_up_to_date_; 905 return g_is_adobe_reader_up_to_date_;
903 } 906 }
904 #endif 907 #endif
OLDNEW
« no previous file with comments | « chrome/browser/download/download_target_determiner.h ('k') | chrome/browser/download/download_target_determiner_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698