Index: chrome/browser/safe_browsing/download_protection_service_unittest.cc |
diff --git a/chrome/browser/safe_browsing/download_protection_service_unittest.cc b/chrome/browser/safe_browsing/download_protection_service_unittest.cc |
index 939f32d56a613192e364a2106c871ece0240e253..9e14d54f1fa75319f513179742d6532b343f5ed9 100644 |
--- a/chrome/browser/safe_browsing/download_protection_service_unittest.cc |
+++ b/chrome/browser/safe_browsing/download_protection_service_unittest.cc |
@@ -478,6 +478,8 @@ class DownloadProtectionServiceTest : public testing::Test { |
} |
public: |
+ enum ArchiveType { ZIP, DMG }; |
+ |
void CheckDoneCallback( |
DownloadProtectionService::DownloadCheckResult result) { |
result_ = result; |
@@ -514,9 +516,9 @@ class DownloadProtectionServiceTest : public testing::Test { |
// Check scenarios where we should/shouldn't send a report for |
// a corrupted zip. |
- void CheckClientDownloadReportCorruptZip(bool is_extended_reporting, |
- bool is_incognito); |
- |
+ void CheckClientDownloadReportCorruptArchive(ArchiveType type, |
+ bool is_extended_reporting, |
+ bool is_incognito); |
protected: |
// This will effectivly mask the global Singleton while this is in scope. |
@@ -545,8 +547,8 @@ class DownloadProtectionServiceTest : public testing::Test { |
base::ScopedTempDir temp_dir_; |
}; |
- |
-void DownloadProtectionServiceTest::CheckClientDownloadReportCorruptZip( |
+void DownloadProtectionServiceTest::CheckClientDownloadReportCorruptArchive( |
+ ArchiveType type, |
bool is_extended_reporting, |
bool is_incognito) { |
net::FakeURLFetcherFactory factory(NULL); |
@@ -557,12 +559,17 @@ void DownloadProtectionServiceTest::CheckClientDownloadReportCorruptZip( |
profile_->GetPrefs()->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, |
is_extended_reporting); |
content::MockDownloadItem item; |
- PrepareBasicDownloadItem( |
- &item, |
- {"http://www.evil.com/a.zip"}, // url_chain |
- "http://www.google.com/", // referrer |
- FILE_PATH_LITERAL("a.tmp"), // tmp_path |
- FILE_PATH_LITERAL("a.zip")); // final_path |
+ if (type == ZIP) { |
+ PrepareBasicDownloadItem(&item, {"http://www.evil.com/a.zip"}, // url_chain |
+ "http://www.google.com/", // referrer |
+ FILE_PATH_LITERAL("a.tmp"), // tmp_path |
+ FILE_PATH_LITERAL("a.zip")); // final_path |
+ } else if (type == DMG) { |
+ PrepareBasicDownloadItem(&item, {"http://www.evil.com/a.dmg"}, // url_chain |
+ "http://www.google.com/", // referrer |
+ FILE_PATH_LITERAL("a.tmp"), // tmp_path |
+ FILE_PATH_LITERAL("a.dmg")); // final_path |
+ } |
if (is_incognito) { |
EXPECT_CALL(item, GetBrowserContext()) |
@@ -572,7 +579,7 @@ void DownloadProtectionServiceTest::CheckClientDownloadReportCorruptZip( |
.WillRepeatedly(Return(profile_.get())); |
} |
- std::string file_contents = "corrupt zip file"; |
+ std::string file_contents = "corrupt archive file"; |
ASSERT_EQ(static_cast<int>(file_contents.size()), base::WriteFile( |
tmp_path_, file_contents.data(), file_contents.size())); |
@@ -582,14 +589,17 @@ void DownloadProtectionServiceTest::CheckClientDownloadReportCorruptZip( |
base::Unretained(this))); |
MessageLoop::current()->Run(); |
- const bool expect_request = is_extended_reporting && !is_incognito; |
+ const bool expect_request = |
+ type == ZIP ? is_extended_reporting && !is_incognito : true; |
if (expect_request) { |
ASSERT_TRUE(HasClientDownloadRequest()); |
EXPECT_EQ(0, GetClientDownloadRequest()->archived_binary_size()); |
EXPECT_TRUE(GetClientDownloadRequest()->has_download_type()); |
- EXPECT_EQ(ClientDownloadRequest_DownloadType_INVALID_ZIP, |
- GetClientDownloadRequest()->download_type()); |
+ ClientDownloadRequest::DownloadType expected_type = |
+ type == ZIP ? ClientDownloadRequest_DownloadType_INVALID_ZIP |
+ : ClientDownloadRequest_DownloadType_INVALID_MAC_ARCHIVE; |
+ EXPECT_EQ(expected_type, GetClientDownloadRequest()->download_type()); |
ClearClientDownloadRequest(); |
} else { |
EXPECT_TRUE(IsResult(DownloadProtectionService::UNKNOWN)); |
@@ -600,7 +610,6 @@ void DownloadProtectionServiceTest::CheckClientDownloadReportCorruptZip( |
Mock::VerifyAndClearExpectations(binary_feature_extractor_.get()); |
} |
- |
TEST_F(DownloadProtectionServiceTest, CheckClientDownloadInvalidUrl) { |
content::MockDownloadItem item; |
PrepareBasicDownloadItem( |
@@ -1330,20 +1339,40 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadZip) { |
TEST_F(DownloadProtectionServiceTest, |
CheckClientDownloadReportCorruptZipNormal) { |
// !is_extended_reporting && !is_incognito |
- CheckClientDownloadReportCorruptZip(false, false); |
+ CheckClientDownloadReportCorruptArchive(ZIP, false, false); |
} |
TEST_F(DownloadProtectionServiceTest, |
CheckClientDownloadReportCorruptZipExtended) { |
// !is_extended_reporting && !is_incognito |
- CheckClientDownloadReportCorruptZip(true, false); |
+ CheckClientDownloadReportCorruptArchive(ZIP, true, false); |
} |
TEST_F(DownloadProtectionServiceTest, |
CheckClientDownloadReportCorruptZipIncognito) { |
// is_extended_reporting && is_incognito |
- CheckClientDownloadReportCorruptZip(true, true); |
+ CheckClientDownloadReportCorruptArchive(ZIP, true, true); |
+} |
+ |
+#if defined(OS_MACOSX) |
+TEST_F(DownloadProtectionServiceTest, |
+ CheckClientDownloadReportCorruptDmgNormal) { |
+ // !is_extended_reporting && !is_incognito |
+ CheckClientDownloadReportCorruptArchive(DMG, false, false); |
+} |
+ |
+TEST_F(DownloadProtectionServiceTest, |
+ CheckClientDownloadReportCorruptDmgExtended) { |
+ // !is_extended_reporting && !is_incognito |
+ CheckClientDownloadReportCorruptArchive(DMG, true, false); |
+} |
+ |
+TEST_F(DownloadProtectionServiceTest, |
+ CheckClientDownloadReportCorruptDmgIncognito) { |
+ // is_extended_reporting && is_incognito |
+ CheckClientDownloadReportCorruptArchive(DMG, true, true); |
} |
+#endif |
TEST_F(DownloadProtectionServiceTest, CheckClientCrxDownloadSuccess) { |
// Even if the server verdict is dangerous we should return SAFE because |