| 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 94c4c68c7ee07ff81c243dc07754f1e08c14fcad..9ff55689d257064ac8fd35e42e5b7a0928852a8b 100644
|
| --- a/chrome/browser/safe_browsing/download_protection_service_unittest.cc
|
| +++ b/chrome/browser/safe_browsing/download_protection_service_unittest.cc
|
| @@ -66,6 +66,7 @@ using ::testing::DoAll;
|
| using ::testing::ElementsAre;
|
| using ::testing::Invoke;
|
| using ::testing::Mock;
|
| +using ::testing::NiceMock;
|
| using ::testing::NotNull;
|
| using ::testing::Return;
|
| using ::testing::ReturnRef;
|
| @@ -193,6 +194,8 @@ class TestURLFetcherWatcher : public net::TestURLFetcherDelegateForTests {
|
| RunLoop run_loop_;
|
| };
|
|
|
| +using NiceMockDownloadItem = NiceMock<content::MockDownloadItem>;
|
| +
|
| } // namespace
|
|
|
| ACTION_P(SetCertificateContents, contents) {
|
| @@ -406,7 +409,7 @@ class DownloadProtectionServiceTest : public testing::Test {
|
| }
|
|
|
| void PrepareBasicDownloadItem(
|
| - content::MockDownloadItem* item,
|
| + NiceMockDownloadItem* item,
|
| const std::vector<std::string> url_chain_items,
|
| const std::string& referrer_url,
|
| const base::FilePath::StringType& tmp_path_literal,
|
| @@ -419,7 +422,7 @@ class DownloadProtectionServiceTest : public testing::Test {
|
| }
|
|
|
| void PrepareBasicDownloadItemWithFullPaths(
|
| - content::MockDownloadItem* item,
|
| + NiceMockDownloadItem* item,
|
| const std::vector<std::string> url_chain_items,
|
| const std::string& referrer_url,
|
| const base::FilePath& tmp_full_path,
|
| @@ -427,17 +430,14 @@ class DownloadProtectionServiceTest : public testing::Test {
|
| url_chain_.clear();
|
| for (std::string item: url_chain_items)
|
| url_chain_.push_back(GURL(item));
|
| + if (url_chain_.empty())
|
| + url_chain_.push_back(GURL());
|
| referrer_ = GURL(referrer_url);
|
| tmp_path_ = tmp_full_path;
|
| final_path_ = final_full_path;
|
| hash_ = "hash";
|
|
|
| - if (url_chain_.size() > 0) {
|
| - EXPECT_CALL(*item, GetURL()).WillRepeatedly(ReturnRef(url_chain_.back()));
|
| - } else{
|
| - GURL empty_url;
|
| - EXPECT_CALL(*item, GetURL()).WillRepeatedly(ReturnRef(empty_url));
|
| - }
|
| + EXPECT_CALL(*item, GetURL()).WillRepeatedly(ReturnRef(url_chain_.back()));
|
| EXPECT_CALL(*item, GetFullPath()).WillRepeatedly(ReturnRef(tmp_path_));
|
| EXPECT_CALL(*item, GetTargetFilePath())
|
| .WillRepeatedly(ReturnRef(final_path_));
|
| @@ -551,7 +551,8 @@ class DownloadProtectionServiceTest : public testing::Test {
|
| base::ScopedTempDir profile_dir_;
|
| std::unique_ptr<TestingProfile> profile_;
|
| // The following 5 fields are used by PrepareBasicDownloadItem() function to
|
| - // store attributes of the last download item.
|
| + // store attributes of the last download item. They can be modified
|
| + // afterwards and the *item will return the new values.
|
| std::vector<GURL> url_chain_;
|
| GURL referrer_;
|
| base::FilePath tmp_path_;
|
| @@ -567,7 +568,7 @@ void DownloadProtectionServiceTest::CheckClientDownloadReportCorruptArchive(
|
| &factory, ClientDownloadResponse::SAFE, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| if (type == ZIP) {
|
| PrepareBasicDownloadItem(&item, {"http://www.evil.com/a.zip"}, // url_chain
|
| "http://www.google.com/", // referrer
|
| @@ -605,7 +606,7 @@ void DownloadProtectionServiceTest::CheckClientDownloadReportCorruptArchive(
|
| }
|
|
|
| TEST_F(DownloadProtectionServiceTest, CheckClientDownloadInvalidUrl) {
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| {
|
| PrepareBasicDownloadItem(&item,
|
| std::vector<std::string>(), // empty url_chain
|
| @@ -638,7 +639,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadInvalidUrl) {
|
| }
|
|
|
| TEST_F(DownloadProtectionServiceTest, CheckClientDownloadNotABinary) {
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| std::vector<std::string>(), // empty url_chain
|
| @@ -662,7 +663,7 @@ TEST_F(DownloadProtectionServiceTest,
|
| &factory, ClientDownloadResponse::DANGEROUS, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| std::vector<std::string>(), // empty url_chain
|
| @@ -758,7 +759,7 @@ TEST_F(DownloadProtectionServiceTest,
|
| &factory, ClientDownloadResponse::SAFE, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| std::vector<std::string>(), // empty url_chain
|
| @@ -908,20 +909,21 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSampledFile) {
|
| &factory, ClientDownloadResponse::DANGEROUS, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| - &item,
|
| - std::vector<std::string>(), // empty url_chain
|
| - "http://www.google.com/", // referrer
|
| - FILE_PATH_LITERAL("a.tmp"), // tmp_path
|
| - FILE_PATH_LITERAL("a.foobar_unknown_ype")); // final_path
|
| + &item,
|
| + // Add paths so we can check they are properly removed.
|
| + {"http://referrer.com/1/2", "http://referrer.com/3/4",
|
| + "http://download.com/path/a.foobar_unknown_type"},
|
| + "http://referrer.com/3/4", // Referrer
|
| + FILE_PATH_LITERAL("a.tmp"), // tmp_path
|
| + FILE_PATH_LITERAL("a.foobar_unknown_type")); // final_path
|
| EXPECT_CALL(*binary_feature_extractor_.get(), CheckSignature(tmp_path_, _))
|
| .Times(1);
|
| EXPECT_CALL(*binary_feature_extractor_.get(),
|
| ExtractImageFeatures(
|
| tmp_path_, BinaryFeatureExtractor::kDefaultOptions, _, _))
|
| .Times(1);
|
| - url_chain_.push_back(GURL("http://www.whitelist.com/a.foobar_unknown_type"));
|
|
|
| // Set ping sample rate to 1.00 so download_service_ will always send a
|
| // "light" ping for unknown types if allowed.
|
| @@ -953,8 +955,8 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSampledFile) {
|
| run_loop.Run();
|
| EXPECT_TRUE(IsResult(DownloadProtectionService::UNKNOWN));
|
| ASSERT_TRUE(HasClientDownloadRequest());
|
| - // Verify it's a "light" ping, check that URLs don't have paths, and
|
| - // and verify filename is just an extension.
|
| +
|
| + // Verify it's a "light" ping, check that URLs don't have paths.
|
| auto* req = GetClientDownloadRequest();
|
| EXPECT_EQ(ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE,
|
| req->download_type());
|
| @@ -964,7 +966,6 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSampledFile) {
|
| EXPECT_EQ(GURL(resource.referrer()).GetOrigin().spec(),
|
| resource.referrer());
|
| }
|
| - EXPECT_EQ('.', req->file_basename()[0]);
|
| ClearClientDownloadRequest();
|
| }
|
| {
|
| @@ -1003,7 +1004,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadFetchFailed) {
|
| &factory, ClientDownloadResponse::SAFE, net::HTTP_INTERNAL_SERVER_ERROR,
|
| net::URLRequestStatus::FAILED);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"http://www.evil.com/a.exe"}, // url_chain
|
| @@ -1032,7 +1033,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSuccess) {
|
| PrepareResponse(&factory, ClientDownloadResponse::SAFE, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(&item, {"http://www.evil.com/a.exe"}, // url_chain
|
| "http://www.google.com/", // referrer
|
| FILE_PATH_LITERAL("a.tmp"), // tmp_path
|
| @@ -1190,7 +1191,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadHTTPS) {
|
| &factory, ClientDownloadResponse::DANGEROUS, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(&item,
|
| {"http://www.evil.com/a.exe"}, // url_chain
|
| "http://www.google.com/", // referrer
|
| @@ -1223,7 +1224,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadBlob) {
|
| &factory, ClientDownloadResponse::DANGEROUS, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"blob:http://www.evil.com/50b85f60-71e4-11e4-82f8-0800200c9a66"},
|
| @@ -1257,7 +1258,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadData) {
|
| &factory, ClientDownloadResponse::DANGEROUS, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"data:text/html:base64,", "data:text/html:base64,blahblahblah",
|
| @@ -1315,7 +1316,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadZip) {
|
| &factory, ClientDownloadResponse::SAFE, net::HTTP_OK,
|
| net::URLRequestStatus::SUCCESS);
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"http://www.evil.com/a.zip"}, // url_chain
|
| @@ -1447,7 +1448,7 @@ TEST_F(DownloadProtectionServiceTest,
|
| TEST_F(DownloadProtectionServiceTest, CheckClientDownloadValidateRequest) {
|
| net::TestURLFetcherFactory factory;
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"http://www.google.com/",
|
| @@ -1521,7 +1522,7 @@ TEST_F(DownloadProtectionServiceTest,
|
| CheckClientDownloadValidateRequestNoSignature) {
|
| net::TestURLFetcherFactory factory;
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"http://www.google.com/",
|
| @@ -1581,7 +1582,7 @@ TEST_F(DownloadProtectionServiceTest,
|
| CheckClientDownloadValidateRequestTabHistory) {
|
| net::TestURLFetcherFactory factory;
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"http://www.google.com/",
|
| @@ -1746,7 +1747,7 @@ TEST_F(DownloadProtectionServiceTest, TestCheckDownloadUrl) {
|
| GURL referrer("http://www.google.com/");
|
| std::string hash = "hash";
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| EXPECT_CALL(item, GetURL()).WillRepeatedly(ReturnRef(url_chain.back()));
|
| EXPECT_CALL(item, GetUrlChain()).WillRepeatedly(ReturnRef(url_chain));
|
| EXPECT_CALL(item, GetReferrerUrl()).WillRepeatedly(ReturnRef(referrer));
|
| @@ -1810,7 +1811,7 @@ TEST_F(DownloadProtectionServiceTest, TestCheckDownloadUrl) {
|
| TEST_F(DownloadProtectionServiceTest, TestDownloadRequestTimeout) {
|
| net::TestURLFetcherFactory factory;
|
|
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"http://www.evil.com/bla.exe"}, // url_chain
|
| @@ -1843,7 +1844,7 @@ TEST_F(DownloadProtectionServiceTest, TestDownloadRequestTimeout) {
|
|
|
| TEST_F(DownloadProtectionServiceTest, TestDownloadItemDestroyed) {
|
| {
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"http://www.evil.com/bla.exe"}, // url_chain
|
| @@ -1875,8 +1876,7 @@ TEST_F(DownloadProtectionServiceTest, TestDownloadItemDestroyed) {
|
| TEST_F(DownloadProtectionServiceTest,
|
| TestDownloadItemDestroyedDuringWhitelistCheck) {
|
| net::TestURLFetcherFactory factory;
|
| - std::unique_ptr<content::MockDownloadItem> item(
|
| - new content::MockDownloadItem);
|
| + std::unique_ptr<NiceMockDownloadItem> item(new NiceMockDownloadItem);
|
| PrepareBasicDownloadItem(
|
| item.get(),
|
| {"http://www.evil.com/bla.exe"}, // url_chain
|
| @@ -2030,7 +2030,7 @@ TEST_F(DownloadProtectionServiceTest, ShowDetailsForDownloadHasContext) {
|
| }
|
|
|
| TEST_F(DownloadProtectionServiceTest, GetAndSetDownloadPingToken) {
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| EXPECT_TRUE(DownloadProtectionService::GetDownloadPingToken(&item).empty());
|
| std::string token = "download_ping_token";
|
| DownloadProtectionService::SetDownloadPingToken(&item, token);
|
| @@ -2296,7 +2296,7 @@ class DownloadProtectionServiceFlagTest : public DownloadProtectionServiceTest {
|
| };
|
|
|
| TEST_F(DownloadProtectionServiceFlagTest, CheckClientDownloadOverridenByFlag) {
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
| PrepareBasicDownloadItem(
|
| &item,
|
| {"http://www.evil.com/a.exe"}, // url_chain
|
| @@ -2327,7 +2327,7 @@ TEST_F(DownloadProtectionServiceFlagTest, CheckClientDownloadOverridenByFlag) {
|
| // blacklisted by hash.
|
| TEST_F(DownloadProtectionServiceFlagTest,
|
| CheckClientDownloadZipOverridenByFlag) {
|
| - content::MockDownloadItem item;
|
| + NiceMockDownloadItem item;
|
|
|
| PrepareBasicDownloadItemWithFullPaths(
|
| &item, {"http://www.evil.com/a.exe"}, // url_chain
|
|
|