Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5558)

Unified Diff: chrome/browser/safe_browsing/incident_reporting_service_unittest.cc

Issue 411793004: More fine-grained pruning in safe browsing incident reporting service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: extract incident-specific code into its own file Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.
+ 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

Powered by Google App Engine
This is Rietveld 408576698