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

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

Issue 113920: Dangerous download dialog for linux.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: mac uses DownloadManager? Created 11 years, 6 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
« no previous file with comments | « chrome/browser/download/download_exe.cc ('k') | chrome/browser/download/download_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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/download_manager.h" 5 #include "chrome/browser/download/download_manager.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 25 matching lines...) Expand all
36 #include "chrome/common/pref_service.h" 36 #include "chrome/common/pref_service.h"
37 #include "googleurl/src/gurl.h" 37 #include "googleurl/src/gurl.h"
38 #include "grit/chromium_strings.h" 38 #include "grit/chromium_strings.h"
39 #include "grit/generated_resources.h" 39 #include "grit/generated_resources.h"
40 #include "net/base/mime_util.h" 40 #include "net/base/mime_util.h"
41 #include "net/base/net_util.h" 41 #include "net/base/net_util.h"
42 #include "net/url_request/url_request_context.h" 42 #include "net/url_request/url_request_context.h"
43 43
44 #if defined(OS_WIN) 44 #if defined(OS_WIN)
45 #include "app/win_util.h" 45 #include "app/win_util.h"
46 // TODO(port): some of these need porting.
47 #include "base/registry.h" 46 #include "base/registry.h"
48 #include "base/win_util.h" 47 #include "base/win_util.h"
48 #endif
49
50 #if !defined(OS_MACOSX)
51 // Used for initializing the list of dangerous extensions. We don't support it
52 // yet on mac.
49 #include "chrome/browser/download/download_util.h" 53 #include "chrome/browser/download/download_util.h"
50 #endif 54 #endif
51 55
52 #if defined(OS_LINUX) 56 #if defined(OS_LINUX)
53 #include <gtk/gtk.h> 57 #include <gtk/gtk.h>
54 #endif 58 #endif
55 59
56 // Periodically update our observers. 60 // Periodically update our observers.
57 class DownloadItemUpdateTask : public Task { 61 class DownloadItemUpdateTask : public Task {
58 public: 62 public:
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 500
497 // This variable is needed to resolve which CreateDirectory we want to point 501 // This variable is needed to resolve which CreateDirectory we want to point
498 // to. Without it, the NewRunnableFunction cannot resolve the ambiguity. 502 // to. Without it, the NewRunnableFunction cannot resolve the ambiguity.
499 // TODO(estade): when file_util::CreateDirectory(wstring) is removed, 503 // TODO(estade): when file_util::CreateDirectory(wstring) is removed,
500 // get rid of |CreateDirectoryPtr|. 504 // get rid of |CreateDirectoryPtr|.
501 bool (*CreateDirectoryPtr)(const FilePath&) = &file_util::CreateDirectory; 505 bool (*CreateDirectoryPtr)(const FilePath&) = &file_util::CreateDirectory;
502 // Ensure that the download directory specified in the preferences exists. 506 // Ensure that the download directory specified in the preferences exists.
503 file_loop_->PostTask(FROM_HERE, NewRunnableFunction( 507 file_loop_->PostTask(FROM_HERE, NewRunnableFunction(
504 CreateDirectoryPtr, download_path())); 508 CreateDirectoryPtr, download_path()));
505 509
506 #if defined(OS_WIN) 510 #if defined(OS_WIN) || defined(OS_LINUX)
507 // We use this on windows to determine possibly dangerous downloads. 511 // We use this to determine possibly dangerous downloads.
508 download_util::InitializeExeTypes(&exe_types_); 512 download_util::InitializeExeTypes(&exe_types_);
509 #endif 513 #endif
510 514
511 // We store any file extension that should be opened automatically at 515 // We store any file extension that should be opened automatically at
512 // download completion in this pref. 516 // download completion in this pref.
513 std::wstring extensions_to_open = 517 std::wstring extensions_to_open =
514 prefs->GetString(prefs::kDownloadExtensionsToOpen); 518 prefs->GetString(prefs::kDownloadExtensionsToOpen);
515 std::vector<std::wstring> extensions; 519 std::vector<std::wstring> extensions;
516 SplitString(extensions_to_open, L':', &extensions); 520 SplitString(extensions_to_open, L':', &extensions);
517 for (size_t i = 0; i < extensions.size(); ++i) { 521 for (size_t i = 0; i < extensions.size(); ++i) {
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after
1313 } 1317 }
1314 for (size_t i = 0; i < arraysize(kExecutableBlackList); ++i) { 1318 for (size_t i = 0; i < arraysize(kExecutableBlackList); ++i) {
1315 if (net::MatchesMimeType(kExecutableBlackList[i], mime_type)) 1319 if (net::MatchesMimeType(kExecutableBlackList[i], mime_type))
1316 return false; 1320 return false;
1317 } 1321 }
1318 // We consider only other application types to be executable. 1322 // We consider only other application types to be executable.
1319 return net::MatchesMimeType("application/*", mime_type); 1323 return net::MatchesMimeType("application/*", mime_type);
1320 } 1324 }
1321 1325
1322 bool DownloadManager::IsExecutable(const FilePath::StringType& extension) { 1326 bool DownloadManager::IsExecutable(const FilePath::StringType& extension) {
1323 #if defined(OS_WIN) 1327 #if defined(OS_MACOSX)
1328 // We don't have dangerous download support on mac yet.
1329 return false;
1330 #else
1324 if (!IsStringASCII(extension)) 1331 if (!IsStringASCII(extension))
1325 return false; 1332 return false;
1333 #if defined(OS_WIN)
1326 std::string ascii_extension = WideToASCII(extension); 1334 std::string ascii_extension = WideToASCII(extension);
1335 #elif defined(OS_LINUX)
1336 std::string ascii_extension = extension;
1337 #endif
1327 StringToLowerASCII(&ascii_extension); 1338 StringToLowerASCII(&ascii_extension);
1328 1339
1329 return exe_types_.find(ascii_extension) != exe_types_.end(); 1340 return exe_types_.find(ascii_extension) != exe_types_.end();
1330 #elif defined(OS_POSIX) 1341 #endif // !defined(OS_MACOSX)
1331 // TODO(port): we misght not want to call this function on other platforms.
1332 // Figure it out.
1333 NOTIMPLEMENTED();
1334 return false;
1335 #endif
1336 } 1342 }
1337 1343
1338 void DownloadManager::ResetAutoOpenFiles() { 1344 void DownloadManager::ResetAutoOpenFiles() {
1339 auto_open_.clear(); 1345 auto_open_.clear();
1340 SaveAutoOpens(); 1346 SaveAutoOpens();
1341 } 1347 }
1342 1348
1343 bool DownloadManager::HasAutoOpenFileTypesRegistered() const { 1349 bool DownloadManager::HasAutoOpenFileTypesRegistered() const {
1344 return !auto_open_.empty(); 1350 return !auto_open_.empty();
1345 } 1351 }
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1525 } 1531 }
1526 1532
1527 if (contents) 1533 if (contents)
1528 contents->OnStartDownload(download); 1534 contents->OnStartDownload(download);
1529 } 1535 }
1530 1536
1531 // Clears the last download path, used to initialize "save as" dialogs. 1537 // Clears the last download path, used to initialize "save as" dialogs.
1532 void DownloadManager::ClearLastDownloadPath() { 1538 void DownloadManager::ClearLastDownloadPath() {
1533 last_download_path_ = FilePath(); 1539 last_download_path_ = FilePath();
1534 } 1540 }
OLDNEW
« no previous file with comments | « chrome/browser/download/download_exe.cc ('k') | chrome/browser/download/download_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698