Merge DownloadItem::SafetyState and DownloadDangerType
[email protected]
[email protected]
Review URL: https://chromiumcodereview.appspot.com/11693011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@177304 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/browser/download/download_item_impl.cc b/content/browser/download/download_item_impl.cc
index 7f54d1c..6a6acba 100644
--- a/content/browser/download/download_item_impl.cc
+++ b/content/browser/download/download_item_impl.cc
@@ -46,6 +46,7 @@
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
+#include "content/public/browser/download_danger_type.h"
#include "content/public/browser/download_interrupt_reasons.h"
#include "content/public/browser/download_url_parameters.h"
#include "content/public/common/content_switches.h"
@@ -64,20 +65,6 @@
file_util::Delete(path, false);
}
-const char* DebugSafetyStateString(DownloadItem::SafetyState state) {
- switch (state) {
- case DownloadItem::SAFE:
- return "SAFE";
- case DownloadItem::DANGEROUS:
- return "DANGEROUS";
- case DownloadItem::DANGEROUS_BUT_VALIDATED:
- return "DANGEROUS_BUT_VALIDATED";
- default:
- NOTREACHED() << "Unknown safety state " << state;
- return "unknown";
- };
-}
-
// Classes to null out request handle calls (for SavePage DownloadItems, which
// may have, e.g., Cancel() called on them without it doing anything)
// and to DCHECK on them (for history DownloadItems, which should never have
@@ -158,7 +145,6 @@
auto_resume_count_(0),
open_when_complete_(false),
file_externally_removed_(false),
- safety_state_(SAFE),
auto_opened_(false),
is_temporary_(false),
all_data_saved_(false),
@@ -208,7 +194,6 @@
auto_resume_count_(0),
open_when_complete_(false),
file_externally_removed_(false),
- safety_state_(SAFE),
auto_opened_(false),
is_temporary_(!info.save_info->file_path.empty()),
all_data_saved_(false),
@@ -262,7 +247,6 @@
auto_resume_count_(0),
open_when_complete_(false),
file_externally_removed_(false),
- safety_state_(SAFE),
auto_opened_(false),
is_temporary_(false),
all_data_saved_(false),
@@ -308,7 +292,7 @@
void DownloadItemImpl::DangerousDownloadValidated() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK_EQ(IN_PROGRESS, GetState());
- DCHECK_EQ(DANGEROUS, GetSafetyState());
+ DCHECK(IsDangerous());
VLOG(20) << __FUNCTION__ << " download=" << DebugString(true);
@@ -319,12 +303,11 @@
GetDangerType(),
DOWNLOAD_DANGER_TYPE_MAX);
- safety_state_ = DANGEROUS_BUT_VALIDATED;
+ danger_type_ = DOWNLOAD_DANGER_TYPE_USER_VALIDATED;
bound_net_log_.AddEvent(
net::NetLog::TYPE_DOWNLOAD_ITEM_SAFETY_STATE_UPDATED,
- base::Bind(&ItemCheckedNetLogCallback,
- GetDangerType(), GetSafetyState()));
+ base::Bind(&ItemCheckedNetLogCallback, GetDangerType()));
UpdateObservers();
@@ -590,9 +573,11 @@
return forced_file_path_;
}
+// TODO(asanka): Get rid of GetUserVerifiedFilePath(). http://crbug.com/134237.
FilePath DownloadItemImpl::GetUserVerifiedFilePath() const {
- return (safety_state_ == DownloadItem::SAFE) ?
- GetTargetFilePath() : GetFullPath();
+ return (IsDangerous() ||
+ danger_type_ == DOWNLOAD_DANGER_TYPE_USER_VALIDATED) ?
+ GetFullPath() : GetTargetFilePath();
}
FilePath DownloadItemImpl::GetFileNameToReportUser() const {
@@ -617,11 +602,6 @@
return file_externally_removed_;
}
-// TODO(asanka): Unify GetSafetyState() and IsDangerous().
-DownloadItem::SafetyState DownloadItemImpl::GetSafetyState() const {
- return safety_state_;
-}
-
bool DownloadItemImpl::IsDangerous() const {
#ifdef OS_WIN
// TODO(noelutz): At this point only the windows views UI supports
@@ -786,7 +766,7 @@
" paused = %c"
" resume_mode = %s"
" auto_resume_count = %d"
- " safety = %s"
+ " danger = %d"
" all_data_saved = %c"
" last_modified = '%s'"
" etag = '%s'"
@@ -800,7 +780,7 @@
IsPaused() ? 'T' : 'F',
DebugResumeModeString(GetResumeMode()),
auto_resume_count_,
- DebugSafetyStateString(GetSafetyState()),
+ GetDangerType(),
AllDataSaved() ? 'T' : 'F',
GetLastModifiedTime().c_str(),
GetETag().c_str(),
@@ -1263,7 +1243,7 @@
// Confirm we're in the proper set of states to be here;
// have all data, have a history handle, (validated or safe).
DCHECK_EQ(IN_PROGRESS_INTERNAL, state_);
- DCHECK_NE(DownloadItem::DANGEROUS, GetSafetyState());
+ DCHECK(!IsDangerous());
DCHECK(all_data_saved_);
OnDownloadCompleting();
@@ -1280,7 +1260,7 @@
VLOG(20) << __FUNCTION__ << "()"
<< " " << DebugString(true);
DCHECK(!GetTargetFilePath().empty());
- DCHECK_NE(DANGEROUS, GetSafetyState());
+ DCHECK(!IsDangerous());
// TODO(rdsmith/benjhayden): Remove as part of SavePackage integration.
if (is_save_package_download_) {
@@ -1456,7 +1436,7 @@
// If the download is dangerous, but not yet validated, it's not ready for
// completion.
- if (GetSafetyState() == DownloadItem::DANGEROUS)
+ if (IsDangerous())
return false;
// If the download isn't active (e.g. has been cancelled) it's not
@@ -1553,18 +1533,12 @@
}
void DownloadItemImpl::SetDangerType(DownloadDangerType danger_type) {
- danger_type_ = danger_type;
- // Notify observers if the safety state has changed as a result of the new
- // danger type.
- SafetyState updated_value = IsDangerous() ?
- DownloadItem::DANGEROUS : DownloadItem::SAFE;
- if (updated_value != safety_state_) {
- safety_state_ = updated_value;
+ if (danger_type != danger_type_) {
bound_net_log_.AddEvent(
net::NetLog::TYPE_DOWNLOAD_ITEM_SAFETY_STATE_UPDATED,
- base::Bind(&ItemCheckedNetLogCallback, GetDangerType(),
- GetSafetyState()));
+ base::Bind(&ItemCheckedNetLogCallback, danger_type));
}
+ danger_type_ = danger_type;
}
void DownloadItemImpl::SetFullPath(const FilePath& new_path) {
diff --git a/content/browser/download/download_item_impl.h b/content/browser/download/download_item_impl.h
index fb91db837..b1520741 100644
--- a/content/browser/download/download_item_impl.h
+++ b/content/browser/download/download_item_impl.h
@@ -128,7 +128,6 @@
virtual const std::string& GetHash() const OVERRIDE;
virtual const std::string& GetHashState() const OVERRIDE;
virtual bool GetFileExternallyRemoved() const OVERRIDE;
- virtual SafetyState GetSafetyState() const OVERRIDE;
virtual bool IsDangerous() const OVERRIDE;
virtual DownloadDangerType GetDangerType() const OVERRIDE;
virtual bool TimeRemaining(base::TimeDelta* remaining) const OVERRIDE;
@@ -450,10 +449,6 @@
// A flag for indicating if the downloaded file is externally removed.
bool file_externally_removed_;
- // Indicates if the download is considered potentially safe or dangerous
- // (executable files are typically considered dangerous).
- SafetyState safety_state_;
-
// True if the download was auto-opened. We set this rather than using
// an observer as it's frequently possible for the download to be auto opened
// before the observer is added.
diff --git a/content/browser/download/download_item_impl_unittest.cc b/content/browser/download/download_item_impl_unittest.cc
index 0146b1b..85428806 100644
--- a/content/browser/download/download_item_impl_unittest.cc
+++ b/content/browser/download/download_item_impl_unittest.cc
@@ -1005,7 +1005,7 @@
EXPECT_TRUE(item->IsDangerous());
item->DangerousDownloadValidated();
- EXPECT_EQ(DownloadItem::DANGEROUS_BUT_VALIDATED, item->GetSafetyState());
+ EXPECT_EQ(DOWNLOAD_DANGER_TYPE_USER_VALIDATED, item->GetDangerType());
RunAllPendingInMessageLoops();
EXPECT_EQ(DownloadItem::COMPLETE, item->GetState());
}
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc
index 32328b4..4b40c27 100644
--- a/content/browser/download/download_manager_impl.cc
+++ b/content/browser/download/download_manager_impl.cc
@@ -316,8 +316,7 @@
// associative containers such as sets.
it++;
- if (download->GetSafetyState() == DownloadItem::DANGEROUS &&
- download->IsPartialDownload()) {
+ if (download->IsDangerous() && download->IsPartialDownload()) {
// The user hasn't accepted it, so we need to remove it
// from the disk. This may or may not result in it being
// removed from the DownloadManager queues and deleted
diff --git a/content/browser/download/download_manager_impl_unittest.cc b/content/browser/download/download_manager_impl_unittest.cc
index 84710fcb..b1c5ac6 100644
--- a/content/browser/download/download_manager_impl_unittest.cc
+++ b/content/browser/download/download_manager_impl_unittest.cc
@@ -146,7 +146,6 @@
MOCK_CONST_METHOD0(GetOpenWhenComplete, bool());
MOCK_METHOD1(SetOpenWhenComplete, void(bool));
MOCK_CONST_METHOD0(GetFileExternallyRemoved, bool());
- MOCK_CONST_METHOD0(GetSafetyState, SafetyState());
MOCK_CONST_METHOD0(GetDangerType, DownloadDangerType());
MOCK_CONST_METHOD0(IsDangerous, bool());
MOCK_METHOD0(GetAutoOpened, bool());
@@ -464,8 +463,8 @@
virtual void TearDown() {
while (MockDownloadItemImpl*
item = mock_download_item_factory_->PopItem()) {
- EXPECT_CALL(*item, GetSafetyState())
- .WillOnce(Return(DownloadItem::SAFE));
+ EXPECT_CALL(*item, IsDangerous())
+ .WillOnce(Return(false));
EXPECT_CALL(*item, IsPartialDownload())
.WillOnce(Return(false));
}
diff --git a/content/browser/download/download_net_log_parameters.cc b/content/browser/download/download_net_log_parameters.cc
index 6de2729..22e837e 100644
--- a/content/browser/download/download_net_log_parameters.cc
+++ b/content/browser/download/download_net_log_parameters.cc
@@ -22,25 +22,18 @@
"HISTORY_IMPORT",
"SAVE_PAGE_AS"
};
-static const char* download_safety_names[] = {
- "SAFE",
- "DANGEROUS",
- "DANGEROUS_BUT_VALIDATED"
-};
static const char* download_danger_names[] = {
"NOT_DANGEROUS",
"DANGEROUS_FILE",
"DANGEROUS_URL",
"DANGEROUS_CONTENT",
"MAYBE_DANGEROUS_CONTENT",
- "UNCOMMON_CONTENT"
+ "UNCOMMON_CONTENT",
+ "USER_VALIDATED"
};
COMPILE_ASSERT(ARRAYSIZE_UNSAFE(download_type_names) == SRC_SAVE_PAGE_AS + 1,
download_type_enum_has_changed);
-COMPILE_ASSERT(ARRAYSIZE_UNSAFE(download_safety_names) ==
- DownloadItem::DANGEROUS_BUT_VALIDATED + 1,
- downloaditem_safety_state_enum_has_changed);
COMPILE_ASSERT(ARRAYSIZE_UNSAFE(download_danger_names) ==
DOWNLOAD_DANGER_TYPE_MAX,
download_danger_enum_has_changed);
@@ -61,8 +54,6 @@
dict->SetString("file_name", *file_name);
dict->SetString("danger_type",
download_danger_names[download_item->GetDangerType()]);
- dict->SetString("safety_state",
- download_safety_names[download_item->GetSafetyState()]);
dict->SetString("start_offset",
base::Int64ToString(download_item->GetReceivedBytes()));
@@ -71,12 +62,10 @@
base::Value* ItemCheckedNetLogCallback(
DownloadDangerType danger_type,
- DownloadItem::SafetyState safety_state,
net::NetLog::LogLevel log_level) {
DictionaryValue* dict = new DictionaryValue();
dict->SetString("danger_type", download_danger_names[danger_type]);
- dict->SetString("safety_state", download_safety_names[safety_state]);
return dict;
}
diff --git a/content/browser/download/download_net_log_parameters.h b/content/browser/download/download_net_log_parameters.h
index c8d63443..fc38e95 100644
--- a/content/browser/download/download_net_log_parameters.h
+++ b/content/browser/download/download_net_log_parameters.h
@@ -32,7 +32,6 @@
// Returns NetLog parameters when a DownloadItem is checked for danger.
base::Value* ItemCheckedNetLogCallback(
DownloadDangerType danger_type,
- DownloadItem::SafetyState safety_state,
net::NetLog::LogLevel log_level);
// Returns NetLog parameters when a DownloadItem is renamed.
diff --git a/content/browser/download/download_stats.h b/content/browser/download/download_stats.h
index dcd87e2..282d0e0b 100644
--- a/content/browser/download/download_stats.h
+++ b/content/browser/download/download_stats.h
@@ -92,7 +92,6 @@
DOWNLOAD_SOURCE_LAST_ENTRY
};
-
// Increment one of the above counts.
void RecordDownloadCount(DownloadCountTypes type);