Chromium Code Reviews| Index: chrome/browser/safe_browsing/incident_reporting_service_unittest.cc |
| diff --git a/chrome/browser/safe_browsing/incident_reporting_service_unittest.cc b/chrome/browser/safe_browsing/incident_reporting_service_unittest.cc |
| index a727792c836d44dc113baf19bae3192cd748c355..d3dcc190d1fa72737cd0d23ae684293c0e715d50 100644 |
| --- a/chrome/browser/safe_browsing/incident_reporting_service_unittest.cc |
| +++ b/chrome/browser/safe_browsing/incident_reporting_service_unittest.cc |
| @@ -135,6 +135,7 @@ class IncidentReportingServiceTest : public testing::Test { |
| static const int64 kIncidentTimeMsec; |
| static const char kFakeOsName[]; |
| static const char kFakeDownloadToken[]; |
| + static const char kTestTrackedPrefPath[]; |
| IncidentReportingServiceTest() |
| : task_runner_(new base::TestSimpleTaskRunner), |
| @@ -212,7 +213,9 @@ class IncidentReportingServiceTest : public testing::Test { |
| scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident( |
| new safe_browsing::ClientIncidentReport_IncidentData()); |
| incident->set_incident_time_msec(kIncidentTimeMsec); |
| - incident->mutable_tracked_preference(); |
| + safe_browsing::ClientIncidentReport_IncidentData_TrackedPreferenceIncident* |
| + tp_incident = incident->mutable_tracked_preference(); |
| + tp_incident->set_path(kTestTrackedPrefPath); |
| return incident.Pass(); |
| } |
| @@ -230,6 +233,11 @@ class IncidentReportingServiceTest : public testing::Test { |
| ASSERT_TRUE(uploaded_report_->incident(i).has_incident_time_msec()); |
| ASSERT_EQ(kIncidentTimeMsec, |
| uploaded_report_->incident(i).incident_time_msec()); |
| + ASSERT_TRUE(uploaded_report_->incident(i).has_tracked_preference()); |
| + ASSERT_TRUE( |
| + uploaded_report_->incident(i).tracked_preference().has_path()); |
| + ASSERT_EQ(std::string(kTestTrackedPrefPath), |
| + uploaded_report_->incident(i).tracked_preference().path()); |
| } |
| ASSERT_TRUE(uploaded_report_->has_environment()); |
| ASSERT_TRUE(uploaded_report_->environment().has_os()); |
| @@ -440,6 +448,7 @@ base::LazyInstance<base::ThreadLocalPointer< |
| const int64 IncidentReportingServiceTest::kIncidentTimeMsec = 47LL; |
| const char IncidentReportingServiceTest::kFakeOsName[] = "fakedows"; |
| const char IncidentReportingServiceTest::kFakeDownloadToken[] = "fakedlt"; |
| +const char IncidentReportingServiceTest::kTestTrackedPrefPath[] = "some_pref"; |
| // Tests that an incident added during profile initialization when safe browsing |
| // is on is uploaded. |
| @@ -543,8 +552,8 @@ TEST_F(IncidentReportingServiceTest, NoProfilesNoUpload) { |
| EXPECT_FALSE(DownloadFinderDestroyed()); |
| } |
| -// Tests that an incident added after upload is not uploaded again. |
| -TEST_F(IncidentReportingServiceTest, OnlyOneUpload) { |
| +// Tests that an identical incident added after upload is not uploaded again. |
| +TEST_F(IncidentReportingServiceTest, OneIncidentOneUpload) { |
| // Create the profile, thereby causing the test to begin. |
| Profile* profile = CreateProfile( |
| "profile1", SAFE_BROWSING_OPT_IN, ON_PROFILE_ADDITION_ADD_INCIDENT); |
| @@ -566,6 +575,33 @@ TEST_F(IncidentReportingServiceTest, OnlyOneUpload) { |
| AssertNoUpload(); |
| } |
| +// Tests that two incidents of the same type with different payloads lead to two |
| +// uploads. |
| +TEST_F(IncidentReportingServiceTest, TwoIncidentsTwoUploads) { |
| + // Create the profile, thereby causing the test to begin. |
| + Profile* profile = CreateProfile( |
| + "profile1", SAFE_BROWSING_OPT_IN, ON_PROFILE_ADDITION_ADD_INCIDENT); |
| + |
| + // Let all tasks run. |
| + task_runner_->RunUntilIdle(); |
| + |
| + // Verify that report upload took place and contained the incident and |
| + // environment data. |
| + ExpectTestIncidentUploaded(1); |
| + |
| + // Add a variation on the incident to the service. |
| + scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident( |
| + MakeTestIncident()); |
| + incident->mutable_tracked_preference()->set_atomic_value("leeches"); |
| + instance_->GetAddIncidentCallback(profile).Run(incident.Pass()); |
| + |
| + // Let all tasks run. |
| + task_runner_->RunUntilIdle(); |
| + |
| + // Verify that an additional report upload took place. |
| + ExpectTestIncidentUploaded(1); |
| +} |
| + |
| // Tests that the same incident added for two different profiles in sequence |
| // results in two uploads. |
| TEST_F(IncidentReportingServiceTest, TwoProfilesTwoUploads) { |
| @@ -613,6 +649,37 @@ TEST_F(IncidentReportingServiceTest, ProfileDestroyedDuringUpload) { |
| // the service while handling the upload response. |
| } |
| +// Tests that no upload takes place if the old pref was present. |
| +TEST_F(IncidentReportingServiceTest, MigrateOldPref) { |
| + Profile* profile = CreateProfile( |
| + "profile1", SAFE_BROWSING_OPT_IN, ON_PROFILE_ADDITION_NO_ACTION); |
| + |
| + // This is a legacy profile. |
| + profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingIncidentReportSent, true); |
| + |
| + // Add the test incident. |
| + AddTestIncident(profile); |
| + |
| + // Let all tasks run. |
| + task_runner_->RunUntilIdle(); |
| + |
| + // No upload should have taken place. |
| + AssertNoUpload(); |
| + |
| + // The legacy pref should have been cleared. |
| + ASSERT_FALSE( |
| + profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingIncidentReportSent)); |
| + |
| + // Adding the same incident again should still result in no upload. |
|
gab
2014/07/23 13:58:11
But adding another one should result in an upload,
grt (UTC plus 2)
2014/07/23 14:45:18
i don't think that's needed. since this test valid
gab
2014/07/23 15:00:23
Good point, not worth it indeed, given you verify
|
| + AddTestIncident(profile); |
| + |
| + // Let all tasks run. |
| + task_runner_->RunUntilIdle(); |
| + |
| + // No upload should have taken place. |
| + AssertNoUpload(); |
| +} |
| + |
| // Parallel uploads |
| // Shutdown during processing |
| // environment colection taking longer than incident delay timer |