| Index: chrome/browser/safe_browsing/client_side_detection_service_unittest.cc
|
| diff --git a/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc b/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc
|
| index 41b1bca5ea61554aedb0aecebf4684d708d9c449..b5f64d5eb348415588d83fa4d98107cf7127c53d 100644
|
| --- a/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc
|
| +++ b/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc
|
| @@ -107,28 +107,28 @@ class ClientSideDetectionServiceTest : public testing::Test {
|
| }
|
|
|
| void SetModelFetchResponse(std::string response_data,
|
| - net::HttpStatusCode response_code) {
|
| + net::HttpStatusCode response_code,
|
| + net::URLRequestStatus::Status status) {
|
| factory_->SetFakeResponse(GURL(ClientSideDetectionService::kClientModelUrl),
|
| - response_data,
|
| - response_code);
|
| + response_data, response_code, status);
|
| }
|
|
|
| void SetClientReportPhishingResponse(std::string response_data,
|
| - net::HttpStatusCode response_code) {
|
| + net::HttpStatusCode response_code,
|
| + net::URLRequestStatus::Status status) {
|
| factory_->SetFakeResponse(
|
| ClientSideDetectionService::GetClientReportUrl(
|
| ClientSideDetectionService::kClientReportPhishingUrl),
|
| - response_data,
|
| - response_code);
|
| + response_data, response_code, status);
|
| }
|
|
|
| void SetClientReportMalwareResponse(std::string response_data,
|
| - net::HttpStatusCode response_code) {
|
| + net::HttpStatusCode response_code,
|
| + net::URLRequestStatus::Status status) {
|
| factory_->SetFakeResponse(
|
| ClientSideDetectionService::GetClientReportUrl(
|
| ClientSideDetectionService::kClientReportMalwareUrl),
|
| - response_data,
|
| - response_code);
|
| + response_data, response_code, status);
|
| }
|
|
|
| int GetNumReports(std::queue<base::Time>* report_times) {
|
| @@ -260,7 +260,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
| service.SetEnabledAndRefreshState(true);
|
|
|
| // The model fetch failed.
|
| - SetModelFetchResponse("blamodel", net::HTTP_INTERNAL_SERVER_ERROR);
|
| + SetModelFetchResponse("blamodel", net::HTTP_INTERNAL_SERVER_ERROR,
|
| + net::URLRequestStatus::FAILED);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_FETCH_FAILED))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -269,7 +270,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
| Mock::VerifyAndClearExpectations(&service);
|
|
|
| // Empty model file.
|
| - SetModelFetchResponse(std::string(), net::HTTP_OK);
|
| + SetModelFetchResponse(std::string(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(ClientSideDetectionService::MODEL_EMPTY))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| service.StartFetchModel();
|
| @@ -279,7 +281,7 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
| // Model is too large.
|
| SetModelFetchResponse(
|
| std::string(ClientSideDetectionService::kMaxModelSizeBytes + 1, 'x'),
|
| - net::HTTP_OK);
|
| + net::HTTP_OK, net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_TOO_LARGE))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -288,7 +290,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
| Mock::VerifyAndClearExpectations(&service);
|
|
|
| // Unable to parse the model file.
|
| - SetModelFetchResponse("Invalid model file", net::HTTP_OK);
|
| + SetModelFetchResponse("Invalid model file", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_PARSE_ERROR))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -299,7 +302,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
| // Model that is missing some required fields (missing the version field).
|
| ClientSideModel model;
|
| model.set_max_words_per_term(4);
|
| - SetModelFetchResponse(model.SerializePartialAsString(), net::HTTP_OK);
|
| + SetModelFetchResponse(model.SerializePartialAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_MISSING_FIELDS))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -311,7 +315,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
| model.set_version(10);
|
| model.add_hashes("bla");
|
| model.add_page_term(1); // Should be 0 instead of 1.
|
| - SetModelFetchResponse(model.SerializePartialAsString(), net::HTTP_OK);
|
| + SetModelFetchResponse(model.SerializePartialAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_BAD_HASH_IDS))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -322,7 +327,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
|
|
| // Model version number is wrong.
|
| model.set_version(-1);
|
| - SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK);
|
| + SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_INVALID_VERSION_NUMBER))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -332,7 +338,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
|
|
| // Normal model.
|
| model.set_version(10);
|
| - SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK);
|
| + SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_SUCCESS))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -344,7 +351,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
| // model that is currently loaded in the service object to 11.
|
| service.model_.reset(new ClientSideModel(model));
|
| service.model_->set_version(11);
|
| - SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK);
|
| + SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_INVALID_VERSION_NUMBER))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -354,7 +362,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
|
|
| // Model version hasn't changed since the last reload.
|
| service.model_->set_version(10);
|
| - SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK);
|
| + SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(service, EndFetchModel(
|
| ClientSideDetectionService::MODEL_NOT_CHANGED))
|
| .WillOnce(QuitCurrentMessageLoop());
|
| @@ -364,7 +373,8 @@ TEST_F(ClientSideDetectionServiceTest, FetchModelTest) {
|
| }
|
|
|
| TEST_F(ClientSideDetectionServiceTest, ServiceObjectDeletedBeforeCallbackDone) {
|
| - SetModelFetchResponse("bogus model", net::HTTP_OK);
|
| + SetModelFetchResponse("bogus model", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| csd_service_.reset(ClientSideDetectionService::Create(NULL));
|
| csd_service_->SetEnabledAndRefreshState(true);
|
| EXPECT_TRUE(csd_service_.get() != NULL);
|
| @@ -377,7 +387,8 @@ TEST_F(ClientSideDetectionServiceTest, ServiceObjectDeletedBeforeCallbackDone) {
|
| }
|
|
|
| TEST_F(ClientSideDetectionServiceTest, SendClientReportPhishingRequest) {
|
| - SetModelFetchResponse("bogus model", net::HTTP_OK);
|
| + SetModelFetchResponse("bogus model", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| csd_service_.reset(ClientSideDetectionService::Create(NULL));
|
| csd_service_->SetEnabledAndRefreshState(true);
|
|
|
| @@ -387,21 +398,23 @@ TEST_F(ClientSideDetectionServiceTest, SendClientReportPhishingRequest) {
|
| base::Time before = base::Time::Now();
|
|
|
| // Invalid response body from the server.
|
| - SetClientReportPhishingResponse("invalid proto response", net::HTTP_OK);
|
| + SetClientReportPhishingResponse("invalid proto response", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_FALSE(SendClientReportPhishingRequest(url, score));
|
|
|
| // Normal behavior.
|
| ClientPhishingResponse response;
|
| response.set_phishy(true);
|
| - SetClientReportPhishingResponse(response.SerializeAsString(),
|
| - net::HTTP_OK);
|
| + SetClientReportPhishingResponse(response.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_TRUE(SendClientReportPhishingRequest(url, score));
|
|
|
| // This request will fail
|
| GURL second_url("http://b.com/");
|
| response.set_phishy(false);
|
| SetClientReportPhishingResponse(response.SerializeAsString(),
|
| - net::HTTP_INTERNAL_SERVER_ERROR);
|
| + net::HTTP_INTERNAL_SERVER_ERROR,
|
| + net::URLRequestStatus::FAILED);
|
| EXPECT_FALSE(SendClientReportPhishingRequest(second_url, score));
|
|
|
| base::Time after = base::Time::Now();
|
| @@ -425,38 +438,44 @@ TEST_F(ClientSideDetectionServiceTest, SendClientReportPhishingRequest) {
|
| }
|
|
|
| TEST_F(ClientSideDetectionServiceTest, SendClientReportMalwareRequest) {
|
| - SetModelFetchResponse("bogus model", net::HTTP_OK);
|
| + SetModelFetchResponse("bogus model", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| csd_service_.reset(ClientSideDetectionService::Create(NULL));
|
| csd_service_->SetEnabledAndRefreshState(true);
|
| GURL url("http://a.com/");
|
|
|
| base::Time before = base::Time::Now();
|
| // Invalid response body from the server.
|
| - SetClientReportMalwareResponse("invalid proto response", net::HTTP_OK);
|
| + SetClientReportMalwareResponse("invalid proto response", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_FALSE(SendClientReportMalwareRequest(url));
|
|
|
| // Missing bad_url.
|
| ClientMalwareResponse response;
|
| response.set_blacklist(true);
|
| - SetClientReportMalwareResponse(response.SerializeAsString(), net::HTTP_OK);
|
| + SetClientReportMalwareResponse(response.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_FALSE(SendClientReportMalwareRequest(url));
|
|
|
| // Normal behavior.
|
| response.set_blacklist(true);
|
| response.set_bad_url("http://response-bad.com/");
|
| - SetClientReportMalwareResponse(response.SerializeAsString(), net::HTTP_OK);
|
| + SetClientReportMalwareResponse(response.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_TRUE(SendClientReportMalwareRequest(url));
|
| CheckConfirmedMalwareUrl(GURL("http://response-bad.com/"));
|
|
|
| // This request will fail
|
| response.set_blacklist(false);
|
| SetClientReportMalwareResponse(response.SerializeAsString(),
|
| - net::HTTP_INTERNAL_SERVER_ERROR);
|
| + net::HTTP_INTERNAL_SERVER_ERROR,
|
| + net::URLRequestStatus::FAILED);
|
| EXPECT_FALSE(SendClientReportMalwareRequest(url));
|
|
|
| // server blacklist decision is false, and response is succesful
|
| response.set_blacklist(false);
|
| - SetClientReportMalwareResponse(response.SerializeAsString(), net::HTTP_OK);
|
| + SetClientReportMalwareResponse(response.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_FALSE(SendClientReportMalwareRequest(url));
|
|
|
| // Check that we have recorded all 4 requests within the correct time range.
|
| @@ -466,7 +485,8 @@ TEST_F(ClientSideDetectionServiceTest, SendClientReportMalwareRequest) {
|
|
|
| // Another normal behavior will fail because of the limit is hit
|
| response.set_blacklist(true);
|
| - SetClientReportMalwareResponse(response.SerializeAsString(), net::HTTP_OK);
|
| + SetClientReportMalwareResponse(response.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_FALSE(SendClientReportMalwareRequest(url));
|
|
|
| report_times = GetMalwareReportTimes();
|
| @@ -480,7 +500,8 @@ TEST_F(ClientSideDetectionServiceTest, SendClientReportMalwareRequest) {
|
| }
|
|
|
| TEST_F(ClientSideDetectionServiceTest, GetNumReportTest) {
|
| - SetModelFetchResponse("bogus model", net::HTTP_OK);
|
| + SetModelFetchResponse("bogus model", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| csd_service_.reset(ClientSideDetectionService::Create(NULL));
|
|
|
| std::queue<base::Time>& report_times = GetPhishingReportTimes();
|
| @@ -495,14 +516,16 @@ TEST_F(ClientSideDetectionServiceTest, GetNumReportTest) {
|
| }
|
|
|
| TEST_F(ClientSideDetectionServiceTest, CacheTest) {
|
| - SetModelFetchResponse("bogus model", net::HTTP_OK);
|
| + SetModelFetchResponse("bogus model", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| csd_service_.reset(ClientSideDetectionService::Create(NULL));
|
|
|
| TestCache();
|
| }
|
|
|
| TEST_F(ClientSideDetectionServiceTest, IsPrivateIPAddress) {
|
| - SetModelFetchResponse("bogus model", net::HTTP_OK);
|
| + SetModelFetchResponse("bogus model", net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| csd_service_.reset(ClientSideDetectionService::Create(NULL));
|
|
|
| EXPECT_TRUE(csd_service_->IsPrivateIPAddress("10.1.2.3"));
|
| @@ -633,7 +656,8 @@ TEST_F(ClientSideDetectionServiceTest, SetEnabledAndRefreshState) {
|
| ClientSideModel model;
|
| model.set_version(10);
|
| model.set_max_words_per_term(4);
|
| - SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK);
|
| + SetModelFetchResponse(model.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_CALL(*service, ScheduleFetchModel(_))
|
| .WillOnce(Invoke(service, &MockClientSideDetectionService::Schedule));
|
| EXPECT_CALL(*service, EndFetchModel(
|
| @@ -665,8 +689,8 @@ TEST_F(ClientSideDetectionServiceTest, SetEnabledAndRefreshState) {
|
| // Requests always return false when the service is disabled.
|
| ClientPhishingResponse response;
|
| response.set_phishy(true);
|
| - SetClientReportPhishingResponse(response.SerializeAsString(),
|
| - net::HTTP_OK);
|
| + SetClientReportPhishingResponse(response.SerializeAsString(), net::HTTP_OK,
|
| + net::URLRequestStatus::SUCCESS);
|
| EXPECT_FALSE(SendClientReportPhishingRequest(GURL("http://a.com/"), 0.4f));
|
|
|
| // Pending requests also return false if the service is disabled before they
|
|
|