| OLD | NEW |
| 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 Loading... |
| 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 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 can_save_as_complete, | 414 can_save_as_complete, |
| 414 download_prefs_.get(), | 415 download_prefs_.get(), |
| 415 callback); | 416 callback); |
| 416 } | 417 } |
| 417 | 418 |
| 418 void ChromeDownloadManagerDelegate::OpenDownloadUsingPlatformHandler( | 419 void ChromeDownloadManagerDelegate::OpenDownloadUsingPlatformHandler( |
| 419 DownloadItem* download) { | 420 DownloadItem* download) { |
| 420 base::FilePath platform_path( | 421 base::FilePath platform_path( |
| 421 GetPlatformDownloadPath(profile_, download, PLATFORM_TARGET_PATH)); | 422 GetPlatformDownloadPath(profile_, download, PLATFORM_TARGET_PATH)); |
| 422 DCHECK(!platform_path.empty()); | 423 DCHECK(!platform_path.empty()); |
| 423 platform_util::OpenItem(profile_, platform_path); | 424 platform_util::OpenFile(profile_, platform_path); |
| 424 } | 425 } |
| 425 | 426 |
| 426 void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { | 427 void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { |
| 427 DCHECK_EQ(DownloadItem::COMPLETE, download->GetState()); | 428 DCHECK_EQ(DownloadItem::COMPLETE, download->GetState()); |
| 428 DCHECK(!download->GetTargetFilePath().empty()); | 429 DCHECK(!download->GetTargetFilePath().empty()); |
| 429 if (!download->CanOpenDownload()) | 430 if (!download->CanOpenDownload()) |
| 430 return; | 431 return; |
| 431 | 432 |
| 432 if (!DownloadItemModel(download).ShouldPreferOpeningInBrowser()) { | 433 if (!DownloadItemModel(download).ShouldPreferOpeningInBrowser()) { |
| 433 RecordDownloadOpenMethod(DOWNLOAD_OPEN_METHOD_DEFAULT_PLATFORM); | 434 RecordDownloadOpenMethod(DOWNLOAD_OPEN_METHOD_DEFAULT_PLATFORM); |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 733 path.MatchesExtension(FILE_PATH_LITERAL(".xht")) || | 734 path.MatchesExtension(FILE_PATH_LITERAL(".xht")) || |
| 734 path.MatchesExtension(FILE_PATH_LITERAL(".xhtm")) || | 735 path.MatchesExtension(FILE_PATH_LITERAL(".xhtm")) || |
| 735 path.MatchesExtension(FILE_PATH_LITERAL(".xhtml")) || | 736 path.MatchesExtension(FILE_PATH_LITERAL(".xhtml")) || |
| 736 path.MatchesExtension(FILE_PATH_LITERAL(".xsl")) || | 737 path.MatchesExtension(FILE_PATH_LITERAL(".xsl")) || |
| 737 path.MatchesExtension(FILE_PATH_LITERAL(".xslt"))) { | 738 path.MatchesExtension(FILE_PATH_LITERAL(".xslt"))) { |
| 738 return true; | 739 return true; |
| 739 } | 740 } |
| 740 #endif | 741 #endif |
| 741 return false; | 742 return false; |
| 742 } | 743 } |
| OLD | NEW |