| OLD | NEW |
| 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 // Wait for the task queue for the specified thread to empty. | 63 // Wait for the task queue for the specified thread to empty. |
| 64 void WaitOnThread(const content::BrowserThread::ID& thread) { | 64 void WaitOnThread(const content::BrowserThread::ID& thread) { |
| 65 BrowserThread::PostTaskAndReply( | 65 BrowserThread::PostTaskAndReply( |
| 66 thread, | 66 thread, |
| 67 FROM_HERE, | 67 FROM_HERE, |
| 68 base::Bind(&base::DoNothing), | 68 base::Bind(&base::DoNothing), |
| 69 base::MessageLoop::current()->QuitClosure()); | 69 base::MessageLoop::current()->QuitClosure()); |
| 70 base::MessageLoop::current()->Run(); | 70 base::MessageLoop::current()->Run(); |
| 71 } | 71 } |
| 72 | 72 |
| 73 // A helper function to call ReadData on a policy object and wait for the | 73 // A wrapper function for CheckReadFilteredData, so that we don't need to |
| 74 // results to be processed. | 74 // enter empty string values for parameters we don't care about. |
| 75 void CheckReadData( | 75 void CheckReadData( |
| 76 ActivityLogPolicy* policy, | 76 ActivityLogPolicy* policy, |
| 77 const std::string& extension_id, | 77 const std::string& extension_id, |
| 78 int day, | 78 int day, |
| 79 const base::Callback<void(scoped_ptr<Action::ActionVector>)>& checker) { | 79 const base::Callback<void(scoped_ptr<Action::ActionVector>)>& checker) { |
| 80 // Submit a request to the policy to read back some data, and call the | 80 CheckReadFilteredData( |
| 81 // checker function when results are available. This will happen on the | 81 policy, extension_id, Action::ACTION_ANY, "", "", "", day, checker); |
| 82 // database thread. | |
| 83 policy->ReadData( | |
| 84 extension_id, | |
| 85 day, | |
| 86 base::Bind(&CountingPolicyTest::CheckWrapper, | |
| 87 checker, | |
| 88 base::MessageLoop::current()->QuitClosure())); | |
| 89 | |
| 90 // Set up a timeout that will trigger after 5 seconds; if we haven't | |
| 91 // received any results by then assume that the test is broken. | |
| 92 base::CancelableClosure timeout( | |
| 93 base::Bind(&CountingPolicyTest::TimeoutCallback)); | |
| 94 base::MessageLoop::current()->PostDelayedTask( | |
| 95 FROM_HERE, timeout.callback(), base::TimeDelta::FromSeconds(5)); | |
| 96 | |
| 97 // Wait for results; either the checker or the timeout callbacks should | |
| 98 // cause the main loop to exit. | |
| 99 base::MessageLoop::current()->Run(); | |
| 100 | |
| 101 timeout.Cancel(); | |
| 102 } | 82 } |
| 103 | 83 |
| 104 // A helper function to call ReadFilteredData on a policy object and wait for | 84 // A helper function to call ReadFilteredData on a policy object and wait for |
| 105 // the results to be processed. | 85 // the results to be processed. |
| 106 void CheckReadFilteredData( | 86 void CheckReadFilteredData( |
| 107 ActivityLogPolicy* policy, | 87 ActivityLogPolicy* policy, |
| 108 const std::string& extension_id, | 88 const std::string& extension_id, |
| 109 const Action::ActionType type, | 89 const Action::ActionType type, |
| 110 const std::string& api_name, | 90 const std::string& api_name, |
| 111 const std::string& page_url, | 91 const std::string& page_url, |
| 112 const std::string& arg_url, | 92 const std::string& arg_url, |
| 93 int day, |
| 113 const base::Callback<void(scoped_ptr<Action::ActionVector>)>& checker) { | 94 const base::Callback<void(scoped_ptr<Action::ActionVector>)>& checker) { |
| 114 // Submit a request to the policy to read back some data, and call the | 95 // Submit a request to the policy to read back some data, and call the |
| 115 // checker function when results are available. This will happen on the | 96 // checker function when results are available. This will happen on the |
| 116 // database thread. | 97 // database thread. |
| 117 policy->ReadFilteredData( | 98 policy->ReadFilteredData( |
| 118 extension_id, | 99 extension_id, |
| 119 type, | 100 type, |
| 120 api_name, | 101 api_name, |
| 121 page_url, | 102 page_url, |
| 122 arg_url, | 103 arg_url, |
| 104 day, |
| 123 base::Bind(&CountingPolicyTest::CheckWrapper, | 105 base::Bind(&CountingPolicyTest::CheckWrapper, |
| 124 checker, | 106 checker, |
| 125 base::MessageLoop::current()->QuitClosure())); | 107 base::MessageLoop::current()->QuitClosure())); |
| 126 | 108 |
| 127 // Set up a timeout that will trigger after 5 seconds; if we haven't | 109 // Set up a timeout that will trigger after 5 seconds; if we haven't |
| 128 // received any results by then assume that the test is broken. | 110 // received any results by then assume that the test is broken. |
| 129 base::CancelableClosure timeout( | 111 base::CancelableClosure timeout( |
| 130 base::Bind(&CountingPolicyTest::TimeoutCallback)); | 112 base::Bind(&CountingPolicyTest::TimeoutCallback)); |
| 131 base::MessageLoop::current()->PostDelayedTask( | 113 base::MessageLoop::current()->PostDelayedTask( |
| 132 FROM_HERE, timeout.callback(), base::TimeDelta::FromSeconds(5)); | 114 FROM_HERE, timeout.callback(), base::TimeDelta::FromSeconds(5)); |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 action_dom->set_page_url(gurl); | 483 action_dom->set_page_url(gurl); |
| 502 policy->ProcessAction(action_dom); | 484 policy->ProcessAction(action_dom); |
| 503 | 485 |
| 504 CheckReadFilteredData( | 486 CheckReadFilteredData( |
| 505 policy, | 487 policy, |
| 506 extension->id(), | 488 extension->id(), |
| 507 Action::ACTION_API_CALL, | 489 Action::ACTION_API_CALL, |
| 508 "tabs.testMethod", | 490 "tabs.testMethod", |
| 509 "", | 491 "", |
| 510 "", | 492 "", |
| 493 -1, |
| 511 base::Bind( | 494 base::Bind( |
| 512 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); | 495 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); |
| 513 | 496 |
| 514 CheckReadFilteredData( | 497 CheckReadFilteredData( |
| 515 policy, | 498 policy, |
| 516 "", | 499 "", |
| 517 Action::ACTION_DOM_ACCESS, | 500 Action::ACTION_DOM_ACCESS, |
| 518 "", | 501 "", |
| 519 "", | 502 "", |
| 520 "", | 503 "", |
| 504 -1, |
| 521 base::Bind( | 505 base::Bind( |
| 522 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); | 506 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); |
| 523 | 507 |
| 524 CheckReadFilteredData( | 508 CheckReadFilteredData( |
| 525 policy, | 509 policy, |
| 526 "", | 510 "", |
| 527 Action::ACTION_DOM_ACCESS, | 511 Action::ACTION_DOM_ACCESS, |
| 528 "", | 512 "", |
| 529 "http://www.google.com/", | 513 "http://www.google.com/", |
| 530 "", | 514 "", |
| 515 -1, |
| 531 base::Bind( | 516 base::Bind( |
| 532 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); | 517 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); |
| 533 | 518 |
| 534 CheckReadFilteredData( | 519 CheckReadFilteredData( |
| 535 policy, | 520 policy, |
| 536 "", | 521 "", |
| 537 Action::ACTION_DOM_ACCESS, | 522 Action::ACTION_DOM_ACCESS, |
| 538 "", | 523 "", |
| 539 "http://www.google.com", | 524 "http://www.google.com", |
| 540 "", | 525 "", |
| 526 -1, |
| 541 base::Bind( | 527 base::Bind( |
| 542 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); | 528 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); |
| 543 | 529 |
| 544 CheckReadFilteredData( | 530 CheckReadFilteredData( |
| 545 policy, | 531 policy, |
| 546 "", | 532 "", |
| 547 Action::ACTION_DOM_ACCESS, | 533 Action::ACTION_DOM_ACCESS, |
| 548 "", | 534 "", |
| 549 "http://www.goo", | 535 "http://www.goo", |
| 550 "", | 536 "", |
| 537 -1, |
| 551 base::Bind( | 538 base::Bind( |
| 552 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); | 539 &CountingPolicyTest::RetrieveActions_FetchFilteredActions1)); |
| 553 | 540 |
| 554 CheckReadFilteredData( | 541 CheckReadFilteredData( |
| 555 policy, | 542 policy, |
| 556 extension->id(), | 543 extension->id(), |
| 557 Action::ACTION_ANY, | 544 Action::ACTION_ANY, |
| 558 "", | 545 "", |
| 559 "", | 546 "", |
| 560 "", | 547 "", |
| 548 -1, |
| 561 base::Bind( | 549 base::Bind( |
| 562 &CountingPolicyTest::RetrieveActions_FetchFilteredActions2)); | 550 &CountingPolicyTest::RetrieveActions_FetchFilteredActions2)); |
| 563 | 551 |
| 564 policy->Close(); | 552 policy->Close(); |
| 565 } | 553 } |
| 566 | 554 |
| 567 // Check that merging of actions only occurs within the same day, not across | 555 // Check that merging of actions only occurs within the same day, not across |
| 568 // days, and that old data can be expired from the database. | 556 // days, and that old data can be expired from the database. |
| 569 TEST_F(CountingPolicyTest, MergingAndExpiring) { | 557 TEST_F(CountingPolicyTest, MergingAndExpiring) { |
| 570 CountingPolicy* policy = new CountingPolicy(profile_.get()); | 558 CountingPolicy* policy = new CountingPolicy(profile_.get()); |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 893 | 881 |
| 894 CheckReadData( | 882 CheckReadData( |
| 895 policy, | 883 policy, |
| 896 "punky", | 884 "punky", |
| 897 0, | 885 0, |
| 898 base::Bind(&CountingPolicyTest::SomeURLsRemoved)); | 886 base::Bind(&CountingPolicyTest::SomeURLsRemoved)); |
| 899 policy->Close(); | 887 policy->Close(); |
| 900 } | 888 } |
| 901 | 889 |
| 902 } // namespace extensions | 890 } // namespace extensions |
| OLD | NEW |