diff options
author | stuartmorgan@google.com <stuartmorgan@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-10 19:56:17 +0000 |
---|---|---|
committer | stuartmorgan@google.com <stuartmorgan@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-10 19:56:17 +0000 |
commit | df72c098109fd2c695593bbd791a2b14a4836796 (patch) | |
tree | 9842d85a8604dee9c2b713e3ee703dc3f565ebf0 /chrome/browser/download | |
parent | eaad22ec3fe7438aeb921b316aae094253b5a764 (diff) | |
download | chromium_src-df72c098109fd2c695593bbd791a2b14a4836796.zip chromium_src-df72c098109fd2c695593bbd791a2b14a4836796.tar.gz chromium_src-df72c098109fd2c695593bbd791a2b14a4836796.tar.bz2 |
Speculative fix for Mac quarantine crash
BUG=13120
TEST=Quaraniting should continue to work on the Mac, and zone information should still be set on Windows.
Review URL: http://codereview.chromium.org/193075
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25904 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download')
-rw-r--r-- | chrome/browser/download/download_file.cc | 13 | ||||
-rw-r--r-- | chrome/browser/download/download_file.h | 3 |
2 files changed, 15 insertions, 1 deletions
diff --git a/chrome/browser/download/download_file.cc b/chrome/browser/download/download_file.cc index 246e5b8..b6ff457 100644 --- a/chrome/browser/download/download_file.cc +++ b/chrome/browser/download/download_file.cc @@ -137,6 +137,13 @@ bool DownloadFile::Open(const char* open_mode) { } #if defined(OS_WIN) + AnnotateWithSourceInformation(); +#endif + return true; +} + +void DownloadFile::AnnotateWithSourceInformation() { +#if defined(OS_WIN) // Sets the Zone to tell Windows that this file comes from the internet. // We ignore the return value because a failure is not fatal. win_util::SetInternetZoneIdentifier(full_path_); @@ -144,7 +151,6 @@ bool DownloadFile::Open(const char* open_mode) { quarantine_mac::AddQuarantineMetadataToFile(full_path_, source_url_, referrer_url_); #endif - return true; } // DownloadFileManager implementation ------------------------------------------ @@ -565,6 +571,11 @@ void DownloadFileManager::OnFinalDownloadName(int id, DownloadFile* download = it->second; if (download->Rename(full_path)) { +#if defined(OS_MACOSX) + // Done here because we only want to do this once; see + // http://crbug.com/13120 for details. + download->AnnotateWithSourceInformation(); +#endif ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(manager, &DownloadManager::DownloadRenamedToFinalName, diff --git a/chrome/browser/download/download_file.h b/chrome/browser/download/download_file.h index 4d2336b..63fb1e7 100644 --- a/chrome/browser/download/download_file.h +++ b/chrome/browser/download/download_file.h @@ -99,6 +99,9 @@ class DownloadFile { // Rename the download file. Returns 'true' if the rename was successful. bool Rename(const FilePath& full_path); + // Informs the OS that this file came from the internet. + void AnnotateWithSourceInformation(); + // Accessors. int64 bytes_so_far() const { return bytes_so_far_; } int id() const { return id_; } |