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

Unified Diff: chrome/browser/extensions/activity_log/counting_policy_unittest.cc

Issue 18878009: Add functions to clean URLs from the activity log (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Return after errors Created 7 years, 4 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/extensions/activity_log/counting_policy_unittest.cc
diff --git a/chrome/browser/extensions/activity_log/counting_policy_unittest.cc b/chrome/browser/extensions/activity_log/counting_policy_unittest.cc
index 4763adb995a421a2ea4cc942e2af9f38354483b7..d709726b5ac8d98192a7aad9031813281a98c1e1 100644
--- a/chrome/browser/extensions/activity_log/counting_policy_unittest.cc
+++ b/chrome/browser/extensions/activity_log/counting_policy_unittest.cc
@@ -249,6 +249,37 @@ class CountingPolicyTest : public testing::Test {
}
}
+ static void AllURLsRemoved(scoped_ptr<Action::ActionVector> actions) {
+ std::string action_urls_cleared =
+ "ID=punky CATEGORY=dom_access API=lets ARGS=[\"vamoose\"] COUNT=1";
+ ASSERT_EQ(2, static_cast<int>(actions->size()));
+ ASSERT_EQ(action_urls_cleared, actions->at(0)->PrintForDebug());
felt 2013/08/27 23:16:55 I'm trying to make a rule that new tests should di
karenlees 2013/08/27 23:26:55 Sure, if you already have the new rule can you poi
felt 2013/08/27 23:32:47 Np, I sort of originally imagined I would get to t
+ ASSERT_EQ(action_urls_cleared, actions->at(1)->PrintForDebug());
+ }
+
+ static void SomeURLsRemoved(scoped_ptr<Action::ActionVector> actions) {
+ std::string action_nothing_cleared =
+ "ID=punky CATEGORY=dom_access API=lets ARGS=[\"vamoose\"] "
+ "PAGE_URL=http://www.google.com/ PAGE_TITLE=\"Google\" "
+ "ARG_URL=http://www.arg-urls.com/ COUNT=1";
+ std::string action_has_page_url =
+ "ID=punky CATEGORY=dom_access API=lets ARGS=[\"vamoose\"] "
+ "PAGE_URL=http://www.google.com/ PAGE_TITLE=\"Google\" COUNT=1";
+ std::string action_has_arg_url =
+ "ID=punky CATEGORY=dom_access API=lets ARGS=[\"vamoose\"] "
+ "ARG_URL=http://www.google.com/ COUNT=1";
+ std::string action_no_url_info =
+ "ID=punky CATEGORY=dom_access API=lets ARGS=[\"vamoose\"] COUNT=1";
+
+ ASSERT_EQ(5, static_cast<int>(actions->size()));
+ // These should be in reverse time order.
+ ASSERT_EQ(action_nothing_cleared, actions->at(0)->PrintForDebug());
+ ASSERT_EQ(action_has_page_url, actions->at(1)->PrintForDebug());
+ ASSERT_EQ(action_no_url_info, actions->at(2)->PrintForDebug());
+ ASSERT_EQ(action_has_arg_url, actions->at(3)->PrintForDebug());
+ ASSERT_EQ(action_no_url_info, actions->at(4)->PrintForDebug());
+ }
+
protected:
ExtensionService* extension_service_;
scoped_ptr<TestingProfile> profile_;
@@ -738,4 +769,121 @@ TEST_F(CountingPolicyTest, EarlyFlush) {
policy->Close();
}
+TEST_F(CountingPolicyTest, RemoveAllURLs) {
+ ActivityLogPolicy* policy = new CountingPolicy(profile_.get());
+
+ // Use a mock clock to ensure that events are not recorded on the wrong day
+ // when the test is run close to local midnight.
+ base::SimpleTestClock* mock_clock = new base::SimpleTestClock();
+ mock_clock->SetNow(base::Time::Now().LocalMidnight() +
+ base::TimeDelta::FromHours(12));
+ policy->SetClockForTesting(scoped_ptr<base::Clock>(mock_clock));
+
+ // Record some actions
+ scoped_refptr<Action> action =
+ new Action("punky", mock_clock->Now(),
+ Action::ACTION_DOM_ACCESS, "lets");
+ action->mutable_args()->AppendString("vamoose");
+ action->set_page_url(GURL("http://www.google.com"));
+ action->set_page_title("Google");
+ action->set_arg_url(GURL("http://www.google.com"));
+ policy->ProcessAction(action);
+
+ mock_clock->Advance(base::TimeDelta::FromSeconds(1));
+ action = new Action(
+ "punky", mock_clock->Now(), Action::ACTION_DOM_ACCESS, "lets");
+ action->mutable_args()->AppendString("vamoose");
+ action->set_page_url(GURL("http://www.google2.com"));
+ action->set_page_title("Google");
+ // Deliberately no arg url set to make sure it stills works if there is no arg
+ // url.
+ policy->ProcessAction(action);
+
+ // Clean all the URLs.
+ std::vector<GURL> no_url_restrictions;
+ policy->RemoveURLs(no_url_restrictions);
+
+ CheckReadData(
+ policy,
+ "punky",
+ 0,
+ base::Bind(&CountingPolicyTest::AllURLsRemoved));
+ policy->Close();
+}
+
+TEST_F(CountingPolicyTest, RemoveSpecificURLs) {
+ ActivityLogPolicy* policy = new CountingPolicy(profile_.get());
+
+ // Use a mock clock to ensure that events are not recorded on the wrong day
+ // when the test is run close to local midnight.
+ base::SimpleTestClock* mock_clock = new base::SimpleTestClock();
+ mock_clock->SetNow(base::Time::Now().LocalMidnight() +
+ base::TimeDelta::FromHours(12));
+ policy->SetClockForTesting(scoped_ptr<base::Clock>(mock_clock));
+
+ // Record some actions
+ // This should have the page url and args url cleared.
+ scoped_refptr<Action> action = new Action("punky", mock_clock->Now(),
+ Action::ACTION_DOM_ACCESS, "lets");
+ action->mutable_args()->AppendString("vamoose");
+ action->set_page_url(GURL("http://www.google1.com"));
+ action->set_page_title("Google");
+ action->set_arg_url(GURL("http://www.google1.com"));
+ policy->ProcessAction(action);
+
+ // This should have the page url cleared but not args url.
+ mock_clock->Advance(base::TimeDelta::FromSeconds(1));
+ action = new Action(
+ "punky", mock_clock->Now(), Action::ACTION_DOM_ACCESS, "lets");
+ action->mutable_args()->AppendString("vamoose");
+ action->set_page_url(GURL("http://www.google1.com"));
+ action->set_page_title("Google");
+ action->set_arg_url(GURL("http://www.google.com"));
+ policy->ProcessAction(action);
+
+ // This should have the page url cleared. The args url is deliberately not
+ // set to make sure this doesn't cause any issues.
+ mock_clock->Advance(base::TimeDelta::FromSeconds(1));
+ action = new Action(
+ "punky", mock_clock->Now(), Action::ACTION_DOM_ACCESS, "lets");
+ action->mutable_args()->AppendString("vamoose");
+ action->set_page_url(GURL("http://www.google2.com"));
+ action->set_page_title("Google");
+ policy->ProcessAction(action);
+
+ // This should have the args url cleared but not the page url or page title.
+ mock_clock->Advance(base::TimeDelta::FromSeconds(1));
+ action = new Action(
+ "punky", mock_clock->Now(), Action::ACTION_DOM_ACCESS, "lets");
+ action->mutable_args()->AppendString("vamoose");
+ action->set_page_url(GURL("http://www.google.com"));
+ action->set_page_title("Google");
+ action->set_arg_url(GURL("http://www.google1.com"));
+ policy->ProcessAction(action);
+
+ // This should have neither cleared.
+ mock_clock->Advance(base::TimeDelta::FromSeconds(1));
+ action = new Action(
+ "punky", mock_clock->Now(), Action::ACTION_DOM_ACCESS, "lets");
+ action->mutable_args()->AppendString("vamoose");
+ action->set_page_url(GURL("http://www.google.com"));
+ action->set_page_title("Google");
+ action->set_arg_url(GURL("http://www.arg-urls.com"));
+ policy->ProcessAction(action);
+
+ // Clean some URLs.
+ std::vector<GURL> urls;
+ urls.push_back(GURL("http://www.google1.com"));
+ urls.push_back(GURL("http://www.google2.com"));
+ urls.push_back(GURL("http://www.url_not_in_db.com"));
+ policy->RemoveURLs(urls);
+
+ CheckReadData(
+ policy,
+ "punky",
+ 0,
+ base::Bind(&CountingPolicyTest::SomeURLsRemoved));
+ policy->Close();
+}
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698