summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/download/download_file.cc13
-rw-r--r--chrome/browser/download/download_file.h3
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_; }