| 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 04a46573a2ad35d65bcd0a3de01236e51615f577..5c4056492a65bdabdd33eb75347814f0295b3e0c 100644
|
| --- a/chrome/browser/safe_browsing/download_protection_service_unittest.cc
|
| +++ b/chrome/browser/safe_browsing/download_protection_service_unittest.cc
|
| @@ -395,9 +395,11 @@ class DownloadProtectionServiceTest : public testing::Test {
|
| void PrepareResponse(net::FakeURLFetcherFactory* factory,
|
| ClientDownloadResponse::Verdict verdict,
|
| net::HttpStatusCode response_code,
|
| - net::URLRequestStatus::Status status) {
|
| + net::URLRequestStatus::Status status,
|
| + bool upload_requested = false) {
|
| ClientDownloadResponse response;
|
| response.set_verdict(verdict);
|
| + response.set_upload(upload_requested);
|
| factory->SetFakeResponse(
|
| DownloadProtectionService::GetDownloadRequestUrl(),
|
| response.SerializeAsString(),
|
| @@ -1041,11 +1043,11 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSuccess) {
|
| MatchDownloadWhitelistUrl(_))
|
| .WillRepeatedly(Return(false));
|
| EXPECT_CALL(*binary_feature_extractor_.get(), CheckSignature(tmp_path_, _))
|
| - .Times(7);
|
| + .Times(8);
|
| EXPECT_CALL(*binary_feature_extractor_.get(),
|
| ExtractImageFeatures(
|
| tmp_path_, BinaryFeatureExtractor::kDefaultOptions, _, _))
|
| - .Times(7);
|
| + .Times(8);
|
| std::string feedback_ping;
|
| std::string feedback_response;
|
| ClientDownloadResponse expected_response;
|
| @@ -1079,9 +1081,10 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSuccess) {
|
| }
|
| {
|
| // If the response is dangerous the result should also be marked as
|
| - // dangerous.
|
| + // dangerous, and should not upload if not requested.
|
| PrepareResponse(&factory, ClientDownloadResponse::DANGEROUS, net::HTTP_OK,
|
| - net::URLRequestStatus::SUCCESS);
|
| + net::URLRequestStatus::SUCCESS,
|
| + false /* upload_requested */);
|
| RunLoop run_loop;
|
| download_service_->CheckClientDownload(
|
| &item, base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback,
|
| @@ -1094,9 +1097,27 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSuccess) {
|
| ClearClientDownloadRequest();
|
| }
|
| {
|
| + // If the response is dangerous and the server requests an upload,
|
| + // we should upload.
|
| + PrepareResponse(&factory, ClientDownloadResponse::DANGEROUS, net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS,
|
| + true /* upload_requested */);
|
| + RunLoop run_loop;
|
| + download_service_->CheckClientDownload(
|
| + &item, base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback,
|
| + base::Unretained(this), run_loop.QuitClosure()));
|
| + run_loop.Run();
|
| + EXPECT_TRUE(DownloadFeedbackService::GetPingsForDownloadForTesting(
|
| + item, &feedback_ping, &feedback_response));
|
| + EXPECT_TRUE(IsResult(DownloadProtectionService::DANGEROUS));
|
| + EXPECT_TRUE(HasClientDownloadRequest());
|
| + ClearClientDownloadRequest();
|
| + }
|
| + {
|
| // If the response is uncommon the result should also be marked as uncommon.
|
| PrepareResponse(&factory, ClientDownloadResponse::UNCOMMON, net::HTTP_OK,
|
| - net::URLRequestStatus::SUCCESS);
|
| + net::URLRequestStatus::SUCCESS,
|
| + true /* upload_requested */);
|
| RunLoop run_loop;
|
| download_service_->CheckClientDownload(
|
| &item, base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback,
|
| @@ -1109,6 +1130,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSuccess) {
|
| EXPECT_TRUE(decoded_request.ParseFromString(feedback_ping));
|
| EXPECT_EQ(url_chain_.back().spec(), decoded_request.url());
|
| expected_response.set_verdict(ClientDownloadResponse::UNCOMMON);
|
| + expected_response.set_upload(true);
|
| EXPECT_EQ(expected_response.SerializeAsString(), feedback_response);
|
| EXPECT_TRUE(HasClientDownloadRequest());
|
| ClearClientDownloadRequest();
|
| @@ -1117,7 +1139,8 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSuccess) {
|
| // If the response is dangerous_host the result should also be marked as
|
| // dangerous_host.
|
| PrepareResponse(&factory, ClientDownloadResponse::DANGEROUS_HOST,
|
| - net::HTTP_OK, net::URLRequestStatus::SUCCESS);
|
| + net::HTTP_OK, net::URLRequestStatus::SUCCESS,
|
| + true /* upload_requested */);
|
| RunLoop run_loop;
|
| download_service_->CheckClientDownload(
|
| &item, base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback,
|
| @@ -1127,6 +1150,7 @@ TEST_F(DownloadProtectionServiceTest, CheckClientDownloadSuccess) {
|
| EXPECT_TRUE(DownloadFeedbackService::GetPingsForDownloadForTesting(
|
| item, &feedback_ping, &feedback_response));
|
| expected_response.set_verdict(ClientDownloadResponse::DANGEROUS_HOST);
|
| + expected_response.set_upload(true);
|
| EXPECT_EQ(expected_response.SerializeAsString(), feedback_response);
|
| EXPECT_TRUE(HasClientDownloadRequest());
|
| ClearClientDownloadRequest();
|
|
|