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

Side by Side Diff: chrome/browser/extensions/activity_log/counting_policy_unittest.cc

Issue 154053004: Introducing the activityLogPrivate.deleteActivities() API call. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/cancelable_callback.h" 5 #include "base/cancelable_callback.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/string_split.h" 9 #include "base/strings/string_split.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 ASSERT_EQ(expected_api_name, action.api_name()); 282 ASSERT_EQ(expected_api_name, action.api_name());
283 ASSERT_EQ(expected_args_str, 283 ASSERT_EQ(expected_args_str,
284 ActivityLogPolicy::Util::Serialize(action.args())); 284 ActivityLogPolicy::Util::Serialize(action.args()));
285 ASSERT_EQ(expected_page_url, action.SerializePageUrl()); 285 ASSERT_EQ(expected_page_url, action.SerializePageUrl());
286 ASSERT_EQ(expected_page_title, action.page_title()); 286 ASSERT_EQ(expected_page_title, action.page_title());
287 ASSERT_EQ(expected_arg_url, action.SerializeArgUrl()); 287 ASSERT_EQ(expected_arg_url, action.SerializeArgUrl());
288 ASSERT_EQ(expected_count, action.count()); 288 ASSERT_EQ(expected_count, action.count());
289 ASSERT_NE(-1, action.action_id()); 289 ASSERT_NE(-1, action.action_id());
290 } 290 }
291 291
292 // A helper function initializes the policy with a number of actions, calls
293 // RemoveActions on a policy object and then checks the result of the
294 // deletion.
295 void CheckRemoveActions(
296 ActivityLogDatabasePolicy* policy,
297 const std::vector<int64>& action_ids,
298 const base::Callback<void(scoped_ptr<Action::ActionVector>)>& checker) {
299
300 // Record some actions
301 scoped_refptr<Action> action = new Action(
302 "punky1", base::Time::Now(), Action::ACTION_DOM_ACCESS, "lets1");
303 action->mutable_args()->AppendString("vamoose1");
304 action->set_page_url(GURL("http://www.google1.com"));
305 action->set_page_title("Google1");
306 action->set_arg_url(GURL("http://www.args-url1.com"));
307 policy->ProcessAction(action);
308 // Record the same action twice, so there are multiple entries in the
309 // database.
310 policy->ProcessAction(action);
311
312 action = new Action(
313 "punky2", base::Time::Now(), Action::ACTION_API_CALL, "lets2");
314 action->mutable_args()->AppendString("vamoose2");
315 action->set_page_url(GURL("http://www.google2.com"));
316 action->set_page_title("Google2");
317 action->set_arg_url(GURL("http://www.args-url2.com"));
318 policy->ProcessAction(action);
319 // Record the same action twice, so there are multiple entries in the
320 // database.
321 policy->ProcessAction(action);
322
323 // Submit a request to delete actions.
324 policy->RemoveActions(action_ids);
325
326 // Check the result of the deletion. The checker function gets all
327 // activities in the database.
328 CheckReadData(policy, "", -1, checker);
329
330 // Clean database.
331 policy->DeleteDatabase();
332 }
333
334 static void AllActionsDeleted(scoped_ptr<Action::ActionVector> actions) {
335 ASSERT_EQ(0, static_cast<int>(actions->size()));
336 }
337
338 static void NoActionsDeleted(scoped_ptr<Action::ActionVector> actions) {
339 // These will be in the vector in reverse time order.
340 ASSERT_EQ(2, static_cast<int>(actions->size()));
341 CheckAction(*actions->at(0),
342 "punky2",
343 Action::ACTION_API_CALL,
344 "lets2",
345 "",
346 "http://www.google2.com/",
347 "Google2",
348 "http://www.args-url2.com/",
349 2);
350 ASSERT_EQ(2, actions->at(0)->action_id());
351 CheckAction(*actions->at(1),
352 "punky1",
353 Action::ACTION_DOM_ACCESS,
354 "lets1",
355 "",
356 "http://www.google1.com/",
357 "Google1",
358 "http://www.args-url1.com/",
359 2);
360 ASSERT_EQ(1, actions->at(1)->action_id());
361 }
362
363 static void Action1Deleted(scoped_ptr<Action::ActionVector> actions) {
364 // These will be in the vector in reverse time order.
365 ASSERT_EQ(1, static_cast<int>(actions->size()));
366 CheckAction(*actions->at(0),
367 "punky2",
368 Action::ACTION_API_CALL,
369 "lets2",
370 "",
371 "http://www.google2.com/",
372 "Google2",
373 "http://www.args-url2.com/",
374 2);
375 ASSERT_EQ(2, actions->at(0)->action_id());
376 }
377
378 static void Action2Deleted(scoped_ptr<Action::ActionVector> actions) {
379 // These will be in the vector in reverse time order.
380 ASSERT_EQ(1, static_cast<int>(actions->size()));
381 CheckAction(*actions->at(0),
382 "punky1",
383 Action::ACTION_DOM_ACCESS,
384 "lets1",
385 "",
386 "http://www.google1.com/",
387 "Google1",
388 "http://www.args-url1.com/",
389 2);
390 ASSERT_EQ(1, actions->at(0)->action_id());
391 }
392
292 protected: 393 protected:
293 ExtensionService* extension_service_; 394 ExtensionService* extension_service_;
294 scoped_ptr<TestingProfile> profile_; 395 scoped_ptr<TestingProfile> profile_;
295 content::TestBrowserThreadBundle thread_bundle_; 396 content::TestBrowserThreadBundle thread_bundle_;
296 // Used to preserve a copy of the original command line. 397 // Used to preserve a copy of the original command line.
297 // The test framework will do this itself as well. However, by then, 398 // The test framework will do this itself as well. However, by then,
298 // it is too late to call ActivityLog::RecomputeLoggingIsEnabled() in 399 // it is too late to call ActivityLog::RecomputeLoggingIsEnabled() in
299 // TearDown(). 400 // TearDown().
300 CommandLine saved_cmdline_; 401 CommandLine saved_cmdline_;
301 402
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 Action::ACTION_ANY, 1095 Action::ACTION_ANY,
995 "", 1096 "",
996 "", 1097 "",
997 "", 1098 "",
998 -1, 1099 -1,
999 base::Bind( 1100 base::Bind(
1000 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); 1101 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1));
1001 policy->Close(); 1102 policy->Close();
1002 } 1103 }
1003 1104
1004 TEST_F(CountingPolicyTest, DeleteActions) { 1105 TEST_F(CountingPolicyTest, DeleteDatabase) {
1005 CountingPolicy* policy = new CountingPolicy(profile_.get()); 1106 CountingPolicy* policy = new CountingPolicy(profile_.get());
1006 policy->Init(); 1107 policy->Init();
1007 // Disable row expiration for this test by setting a time before any actions 1108 // Disable row expiration for this test by setting a time before any actions
1008 // we generate. 1109 // we generate.
1009 policy->set_retention_time(base::TimeDelta::FromDays(14)); 1110 policy->set_retention_time(base::TimeDelta::FromDays(14));
1010 1111
1011 // Use a mock clock to ensure that events are not recorded on the wrong day 1112 // Use a mock clock to ensure that events are not recorded on the wrong day
1012 // when the test is run close to local midnight. Note: Ownership is passed 1113 // when the test is run close to local midnight. Note: Ownership is passed
1013 // to the policy, but we still keep a pointer locally. The policy will take 1114 // to the policy, but we still keep a pointer locally. The policy will take
1014 // care of destruction; this is safe since the policy outlives all our 1115 // care of destruction; this is safe since the policy outlives all our
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 policy->ProcessAction(action); 1211 policy->ProcessAction(action);
1111 1212
1112 CheckReadData( 1213 CheckReadData(
1113 policy, 1214 policy,
1114 "punky", 1215 "punky",
1115 0, 1216 0,
1116 base::Bind(&CountingPolicyTest::CheckDuplicates)); 1217 base::Bind(&CountingPolicyTest::CheckDuplicates));
1117 policy->Close(); 1218 policy->Close();
1118 } 1219 }
1119 1220
1221 TEST_F(CountingPolicyTest, RemoveActions) {
1222 ActivityLogDatabasePolicy* policy = new CountingPolicy(profile_.get());
1223 policy->Init();
1224
1225 std::vector<int64> action_ids;
1226
1227 CheckRemoveActions(
1228 policy, action_ids, base::Bind(&CountingPolicyTest::NoActionsDeleted));
1229
1230 action_ids.push_back(-1);
1231 action_ids.push_back(-10);
1232 action_ids.push_back(0);
1233 action_ids.push_back(5);
1234 action_ids.push_back(10);
1235 CheckRemoveActions(
1236 policy, action_ids, base::Bind(&CountingPolicyTest::NoActionsDeleted));
1237 action_ids.clear();
1238
1239 // policy->RemoveActions() deletes actions in batches of 50 itemis. Test the
mvrable 2014/02/11 17:44:35 s/itemis/items/
pmarch 2014/02/12 18:19:04 Done.
1240 // batch size boundary.
1241 for (int i = 0; i < 50; i++) {
1242 action_ids.push_back(i + 3);
1243 }
1244 CheckRemoveActions(
1245 policy, action_ids, base::Bind(&CountingPolicyTest::NoActionsDeleted));
1246 action_ids.clear();
1247
1248 for (int i = 0; i < 51; i++) {
1249 action_ids.push_back(i + 3);
1250 }
1251 CheckRemoveActions(
1252 policy, action_ids, base::Bind(&CountingPolicyTest::NoActionsDeleted));
1253 action_ids.clear();
1254
1255 for (int i = 0; i < 110; i++) {
1256 action_ids.push_back(i + 3);
1257 }
1258 CheckRemoveActions(
1259 policy, action_ids, base::Bind(&CountingPolicyTest::NoActionsDeleted));
1260 action_ids.clear();
1261
1262 // CheckRemoveActions pushes two actions to the Activity Log database with IDs
1263 // 1 and 2.
1264 action_ids.push_back(1);
1265 action_ids.push_back(2);
1266 CheckRemoveActions(
1267 policy, action_ids, base::Bind(&CountingPolicyTest::AllActionsDeleted));
1268 action_ids.clear();
1269
1270 action_ids.push_back(1);
1271 CheckRemoveActions(
1272 policy, action_ids, base::Bind(&CountingPolicyTest::Action1Deleted));
1273 action_ids.clear();
1274
1275 action_ids.push_back(2);
1276 CheckRemoveActions(
1277 policy, action_ids, base::Bind(&CountingPolicyTest::Action2Deleted));
1278 action_ids.clear();
1279
1280 policy->Close();
1281 }
1282
1120 } // namespace extensions 1283 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698