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

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

Issue 352393002: Be explicit about target type in platform_util::OpenItem() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Chdir on Linux, Fix memory leak in test and address Mac comment. Created 5 years, 10 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
OLDNEW
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/download/chrome_download_manager_delegate.h" 5 #include "chrome/browser/download/chrome_download_manager_delegate.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 enum PlatformDownloadPathType { 94 enum PlatformDownloadPathType {
95 // Return the platform specific target path. 95 // Return the platform specific target path.
96 PLATFORM_TARGET_PATH, 96 PLATFORM_TARGET_PATH,
97 97
98 // Return the platform specific current path. If the download is in-progress 98 // Return the platform specific current path. If the download is in-progress
99 // and the download location is a local filesystem path, then 99 // and the download location is a local filesystem path, then
100 // GetPlatformDownloadPath will return the path to the intermediate file. 100 // GetPlatformDownloadPath will return the path to the intermediate file.
101 PLATFORM_CURRENT_PATH 101 PLATFORM_CURRENT_PATH
102 }; 102 };
103 103
104 // Returns a path in the form that that is expected by platform_util::OpenItem / 104 // Returns a path in the form that that is expected by platform_util::OpenFile /
105 // platform_util::ShowItemInFolder / DownloadTargetDeterminer. 105 // platform_util::OpenFolder / platform_util::ShowItemInFolder /
106 // DownloadTargetDeterminer.
106 // 107 //
107 // DownloadItems corresponding to Drive downloads use a temporary file as the 108 // DownloadItems corresponding to Drive downloads use a temporary file as the
108 // target path. The paths returned by DownloadItem::GetFullPath() / 109 // target path. The paths returned by DownloadItem::GetFullPath() /
109 // GetTargetFilePath() refer to this temporary file. This function looks up the 110 // GetTargetFilePath() refer to this temporary file. This function looks up the
110 // corresponding path in Drive for these downloads. 111 // corresponding path in Drive for these downloads.
111 // 112 //
112 // How the platform path is determined is based on PlatformDownloadPathType. 113 // How the platform path is determined is based on PlatformDownloadPathType.
113 base::FilePath GetPlatformDownloadPath(Profile* profile, 114 base::FilePath GetPlatformDownloadPath(Profile* profile,
114 const DownloadItem* download, 115 const DownloadItem* download,
115 PlatformDownloadPathType path_type) { 116 PlatformDownloadPathType path_type) {
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 can_save_as_complete, 422 can_save_as_complete,
422 download_prefs_.get(), 423 download_prefs_.get(),
423 callback); 424 callback);
424 } 425 }
425 426
426 void ChromeDownloadManagerDelegate::OpenDownloadUsingPlatformHandler( 427 void ChromeDownloadManagerDelegate::OpenDownloadUsingPlatformHandler(
427 DownloadItem* download) { 428 DownloadItem* download) {
428 base::FilePath platform_path( 429 base::FilePath platform_path(
429 GetPlatformDownloadPath(profile_, download, PLATFORM_TARGET_PATH)); 430 GetPlatformDownloadPath(profile_, download, PLATFORM_TARGET_PATH));
430 DCHECK(!platform_path.empty()); 431 DCHECK(!platform_path.empty());
431 platform_util::OpenItem(profile_, platform_path); 432 platform_util::OpenFile(profile_, platform_path,
433 platform_util::OpenOperationCallback());
432 } 434 }
433 435
434 void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { 436 void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) {
435 DCHECK_EQ(DownloadItem::COMPLETE, download->GetState()); 437 DCHECK_EQ(DownloadItem::COMPLETE, download->GetState());
436 DCHECK(!download->GetTargetFilePath().empty()); 438 DCHECK(!download->GetTargetFilePath().empty());
437 if (!download->CanOpenDownload()) 439 if (!download->CanOpenDownload())
438 return; 440 return;
439 441
440 if (!DownloadItemModel(download).ShouldPreferOpeningInBrowser()) { 442 if (!DownloadItemModel(download).ShouldPreferOpeningInBrowser()) {
441 RecordDownloadOpenMethod(DOWNLOAD_OPEN_METHOD_DEFAULT_PLATFORM); 443 RecordDownloadOpenMethod(DOWNLOAD_OPEN_METHOD_DEFAULT_PLATFORM);
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
740 path.MatchesExtension(FILE_PATH_LITERAL(".xht")) || 742 path.MatchesExtension(FILE_PATH_LITERAL(".xht")) ||
741 path.MatchesExtension(FILE_PATH_LITERAL(".xhtm")) || 743 path.MatchesExtension(FILE_PATH_LITERAL(".xhtm")) ||
742 path.MatchesExtension(FILE_PATH_LITERAL(".xhtml")) || 744 path.MatchesExtension(FILE_PATH_LITERAL(".xhtml")) ||
743 path.MatchesExtension(FILE_PATH_LITERAL(".xsl")) || 745 path.MatchesExtension(FILE_PATH_LITERAL(".xsl")) ||
744 path.MatchesExtension(FILE_PATH_LITERAL(".xslt"))) { 746 path.MatchesExtension(FILE_PATH_LITERAL(".xslt"))) {
745 return true; 747 return true;
746 } 748 }
747 #endif 749 #endif
748 return false; 750 return false;
749 } 751 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698