OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // Download utility implementation | 5 // Download utility implementation |
6 | 6 |
7 #include "chrome/browser/download/download_util.h" | 7 #include "chrome/browser/download/download_util.h" |
8 | 8 |
9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
10 #include <shobjidl.h> | 10 #include <shobjidl.h> |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 // The GetPreferredExtensionForMimeType call will end up going to disk. Do | 242 // The GetPreferredExtensionForMimeType call will end up going to disk. Do |
243 // this on another thread to avoid slowing the IO thread. | 243 // this on another thread to avoid slowing the IO thread. |
244 // http://crbug.com/61827 | 244 // http://crbug.com/61827 |
245 base::ThreadRestrictions::ScopedAllowIO allow_io; | 245 base::ThreadRestrictions::ScopedAllowIO allow_io; |
246 net::GetPreferredExtensionForMimeType(mime_type, &extension); | 246 net::GetPreferredExtensionForMimeType(mime_type, &extension); |
247 } | 247 } |
248 | 248 |
249 generated_extension->swap(extension); | 249 generated_extension->swap(extension); |
250 } | 250 } |
251 | 251 |
252 void GenerateFileNameFromInfo(DownloadCreateInfo* info, | 252 void GenerateFileNameFromRequest(const GURL& url, |
253 FilePath* generated_name) { | 253 const std::string& content_disposition, |
254 GenerateFileName(GURL(info->url()), | 254 const std::string& referrer_charset, |
255 info->content_disposition, | 255 const std::string& mime_type, |
256 info->referrer_charset, | 256 FilePath* generated_name) { |
257 info->mime_type, | 257 GenerateFileName(url, |
| 258 content_disposition, |
| 259 referrer_charset, |
| 260 mime_type, |
258 generated_name); | 261 generated_name); |
259 } | 262 } |
260 | 263 |
261 void GenerateFileName(const GURL& url, | 264 void GenerateFileName(const GURL& url, |
262 const std::string& content_disposition, | 265 const std::string& content_disposition, |
263 const std::string& referrer_charset, | 266 const std::string& referrer_charset, |
264 const std::string& mime_type, | 267 const std::string& mime_type, |
265 FilePath* generated_name) { | 268 FilePath* generated_name) { |
266 string16 default_file_name( | 269 string16 default_file_name( |
267 l10n_util::GetStringUTF16(IDS_DEFAULT_DOWNLOAD_FILENAME)); | 270 l10n_util::GetStringUTF16(IDS_DEFAULT_DOWNLOAD_FILENAME)); |
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
883 FilePath GetCrDownloadPath(const FilePath& suggested_path) { | 886 FilePath GetCrDownloadPath(const FilePath& suggested_path) { |
884 FilePath::StringType file_name; | 887 FilePath::StringType file_name; |
885 base::SStringPrintf( | 888 base::SStringPrintf( |
886 &file_name, | 889 &file_name, |
887 PRFilePathLiteral FILE_PATH_LITERAL(".crdownload"), | 890 PRFilePathLiteral FILE_PATH_LITERAL(".crdownload"), |
888 suggested_path.value().c_str()); | 891 suggested_path.value().c_str()); |
889 return FilePath(file_name); | 892 return FilePath(file_name); |
890 } | 893 } |
891 | 894 |
892 // TODO(erikkay,phajdan.jr): This is apparently not being exercised in tests. | 895 // TODO(erikkay,phajdan.jr): This is apparently not being exercised in tests. |
893 bool IsDangerous(DownloadCreateInfo* info, Profile* profile, bool auto_open) { | 896 bool IsDangerous(const GURL& url, |
| 897 const GURL& referrer_url, |
| 898 const FilePath& suggested_path, |
| 899 bool has_user_gesture, |
| 900 bool is_extension_install, |
| 901 Profile* profile, |
| 902 bool auto_open) { |
894 DownloadDangerLevel danger_level = GetFileDangerLevel( | 903 DownloadDangerLevel danger_level = GetFileDangerLevel( |
895 info->suggested_path.BaseName()); | 904 suggested_path.BaseName()); |
896 if (danger_level == Dangerous) | 905 if (danger_level == Dangerous) |
897 return !(auto_open && info->has_user_gesture); | 906 return !(auto_open && has_user_gesture); |
898 if (danger_level == AllowOnUserGesture && !info->has_user_gesture) | 907 if (danger_level == AllowOnUserGesture && !has_user_gesture) |
899 return true; | 908 return true; |
900 if (info->is_extension_install) { | 909 if (is_extension_install) { |
901 // Extensions that are not from the gallery are considered dangerous. | 910 // Extensions that are not from the gallery are considered dangerous. |
902 ExtensionService* service = profile->GetExtensionService(); | 911 ExtensionService* service = profile->GetExtensionService(); |
903 if (!service || | 912 if (!service || !service->IsDownloadFromGallery(url, referrer_url)) |
904 !service->IsDownloadFromGallery(info->url(), info->referrer_url)) | |
905 return true; | 913 return true; |
906 } | 914 } |
907 return false; | 915 return false; |
908 } | 916 } |
909 | 917 |
910 } // namespace download_util | 918 } // namespace download_util |
OLD | NEW |