| Index: chrome/browser/budget_service/budget_database_unittest.cc
|
| diff --git a/chrome/browser/budget_service/budget_database_unittest.cc b/chrome/browser/budget_service/budget_database_unittest.cc
|
| index 09a5728b2bbf48f919dc54714e15106dc814aab0..984dfe865304f0f3f47337180cb83534397c14bb 100644
|
| --- a/chrome/browser/budget_service/budget_database_unittest.cc
|
| +++ b/chrome/browser/budget_service/budget_database_unittest.cc
|
| @@ -19,6 +19,8 @@
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| #include "mojo/public/cpp/bindings/array.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "url/gurl.h"
|
| +#include "url/origin.h"
|
|
|
| namespace {
|
|
|
| @@ -35,7 +37,8 @@ class BudgetDatabaseTest : public ::testing::Test {
|
| : success_(false),
|
| db_(&profile_,
|
| profile_.GetPath().Append(FILE_PATH_LITERAL("BudgetDatabase")),
|
| - base::ThreadTaskRunnerHandle::Get()) {}
|
| + base::ThreadTaskRunnerHandle::Get()),
|
| + origin_(url::Origin(GURL(kTestOrigin))) {}
|
|
|
| void WriteBudgetComplete(base::Closure run_loop_closure, bool success) {
|
| success_ = success;
|
| @@ -43,9 +46,9 @@ class BudgetDatabaseTest : public ::testing::Test {
|
| }
|
|
|
| // Spend budget for the origin.
|
| - bool SpendBudget(const GURL& origin, double amount) {
|
| + bool SpendBudget(double amount) {
|
| base::RunLoop run_loop;
|
| - db_.SpendBudget(origin, amount,
|
| + db_.SpendBudget(origin(), amount,
|
| base::Bind(&BudgetDatabaseTest::WriteBudgetComplete,
|
| base::Unretained(this), run_loop.QuitClosure()));
|
| run_loop.Run();
|
| @@ -65,13 +68,13 @@ class BudgetDatabaseTest : public ::testing::Test {
|
| void GetBudgetDetails() {
|
| base::RunLoop run_loop;
|
| db_.GetBudgetDetails(
|
| - GURL(kTestOrigin),
|
| - base::Bind(&BudgetDatabaseTest::GetBudgetDetailsComplete,
|
| - base::Unretained(this), run_loop.QuitClosure()));
|
| + origin(), base::Bind(&BudgetDatabaseTest::GetBudgetDetailsComplete,
|
| + base::Unretained(this), run_loop.QuitClosure()));
|
| run_loop.Run();
|
| }
|
|
|
| Profile* profile() { return &profile_; }
|
| + const url::Origin& origin() const { return origin_; }
|
|
|
| // Setup a test clock so that the tests can control time.
|
| base::SimpleTestClock* SetClockForTesting() {
|
| @@ -80,9 +83,9 @@ class BudgetDatabaseTest : public ::testing::Test {
|
| return clock;
|
| }
|
|
|
| - void SetSiteEngagementScore(const GURL& url, double score) {
|
| + void SetSiteEngagementScore(double score) {
|
| SiteEngagementService* service = SiteEngagementService::Get(&profile_);
|
| - service->ResetScoreForURL(url, score);
|
| + service->ResetScoreForURL(GURL(kTestOrigin), score);
|
| }
|
|
|
| protected:
|
| @@ -96,10 +99,10 @@ class BudgetDatabaseTest : public ::testing::Test {
|
| TestingProfile profile_;
|
| BudgetDatabase db_;
|
| base::HistogramTester histogram_tester_;
|
| + const url::Origin origin_;
|
| };
|
|
|
| TEST_F(BudgetDatabaseTest, GetBudgetNoBudgetOrSES) {
|
| - const GURL origin(kTestOrigin);
|
| GetBudgetDetails();
|
| ASSERT_TRUE(success_);
|
| ASSERT_EQ(2U, prediction_.size());
|
| @@ -107,13 +110,12 @@ TEST_F(BudgetDatabaseTest, GetBudgetNoBudgetOrSES) {
|
| }
|
|
|
| TEST_F(BudgetDatabaseTest, AddEngagementBudgetTest) {
|
| - const GURL origin(kTestOrigin);
|
| base::SimpleTestClock* clock = SetClockForTesting();
|
| base::Time expiration_time =
|
| clock->Now() + base::TimeDelta::FromHours(kDefaultExpirationInHours);
|
|
|
| // Set the default site engagement.
|
| - SetSiteEngagementScore(origin, kDefaultEngagement);
|
| + SetSiteEngagementScore(kDefaultEngagement);
|
|
|
| // The budget should include a full share of the engagement.
|
| GetBudgetDetails();
|
| @@ -152,11 +154,10 @@ TEST_F(BudgetDatabaseTest, AddEngagementBudgetTest) {
|
| }
|
|
|
| TEST_F(BudgetDatabaseTest, SpendBudgetTest) {
|
| - const GURL origin(kTestOrigin);
|
| base::SimpleTestClock* clock = SetClockForTesting();
|
|
|
| // Set the default site engagement.
|
| - SetSiteEngagementScore(origin, kDefaultEngagement);
|
| + SetSiteEngagementScore(kDefaultEngagement);
|
|
|
| // Intialize the budget with several chunks.
|
| GetBudgetDetails();
|
| @@ -166,7 +167,7 @@ TEST_F(BudgetDatabaseTest, SpendBudgetTest) {
|
| GetBudgetDetails();
|
|
|
| // Spend an amount of budget less than kDefaultEngagement.
|
| - ASSERT_TRUE(SpendBudget(origin, 1));
|
| + ASSERT_TRUE(SpendBudget(1));
|
| GetBudgetDetails();
|
|
|
| // There should still be three chunks of budget of size kDefaultEngagement-1,
|
| @@ -181,14 +182,14 @@ TEST_F(BudgetDatabaseTest, SpendBudgetTest) {
|
|
|
| // Now spend enough that it will use up the rest of the first chunk and all of
|
| // the second chunk, but not all of the third chunk.
|
| - ASSERT_TRUE(SpendBudget(origin, kDefaultEngagement + daily_budget));
|
| + ASSERT_TRUE(SpendBudget(kDefaultEngagement + daily_budget));
|
| GetBudgetDetails();
|
| ASSERT_EQ(2U, prediction_.size());
|
| ASSERT_DOUBLE_EQ(daily_budget - 1, prediction_[0]->budget_at);
|
|
|
| // Validate that the code returns false if SpendBudget tries to spend more
|
| // budget than the origin has.
|
| - EXPECT_FALSE(SpendBudget(origin, kDefaultEngagement));
|
| + EXPECT_FALSE(SpendBudget(kDefaultEngagement));
|
| GetBudgetDetails();
|
| ASSERT_EQ(2U, prediction_.size());
|
| ASSERT_DOUBLE_EQ(daily_budget - 1, prediction_[0]->budget_at);
|
| @@ -196,7 +197,7 @@ TEST_F(BudgetDatabaseTest, SpendBudgetTest) {
|
| // Advance time until the last remaining chunk should be expired, then query
|
| // for the full engagement worth of budget.
|
| clock->Advance(base::TimeDelta::FromHours(kDefaultExpirationInHours + 1));
|
| - EXPECT_TRUE(SpendBudget(origin, kDefaultEngagement));
|
| + EXPECT_TRUE(SpendBudget(kDefaultEngagement));
|
| }
|
|
|
| // There are times when a device's clock could move backwards in time, either
|
| @@ -204,11 +205,10 @@ TEST_F(BudgetDatabaseTest, SpendBudgetTest) {
|
| // time goes backwards and then forwards again, the origin isn't granted extra
|
| // budget.
|
| TEST_F(BudgetDatabaseTest, GetBudgetNegativeTime) {
|
| - const GURL origin(kTestOrigin);
|
| base::SimpleTestClock* clock = SetClockForTesting();
|
|
|
| // Set the default site engagement.
|
| - SetSiteEngagementScore(origin, kDefaultEngagement);
|
| + SetSiteEngagementScore(kDefaultEngagement);
|
|
|
| // Initialize the budget with two chunks.
|
| GetBudgetDetails();
|
| @@ -236,11 +236,10 @@ TEST_F(BudgetDatabaseTest, GetBudgetNegativeTime) {
|
| }
|
|
|
| TEST_F(BudgetDatabaseTest, CheckBackgroundBudgetHistogram) {
|
| - const GURL origin(kTestOrigin);
|
| base::SimpleTestClock* clock = SetClockForTesting();
|
|
|
| // Set the default site engagement.
|
| - SetSiteEngagementScore(origin, kDefaultEngagement);
|
| + SetSiteEngagementScore(kDefaultEngagement);
|
|
|
| // Initialize the budget with some interesting chunks: 30 budget, 3 budget,
|
| // 0 budget, and then after the first two expire, another 30 budget.
|
| @@ -266,13 +265,12 @@ TEST_F(BudgetDatabaseTest, CheckBackgroundBudgetHistogram) {
|
| }
|
|
|
| TEST_F(BudgetDatabaseTest, CheckEngagementHistograms) {
|
| - const GURL origin(kTestOrigin);
|
| base::SimpleTestClock* clock = SetClockForTesting();
|
|
|
| // Set the engagement to twice the cost of an action.
|
| double cost = 2;
|
| double engagement = cost * 2;
|
| - SetSiteEngagementScore(origin, engagement);
|
| + SetSiteEngagementScore(engagement);
|
|
|
| // Get the budget, which will award a chunk of budget equal to engagement.
|
| GetBudgetDetails();
|
| @@ -280,19 +278,19 @@ TEST_F(BudgetDatabaseTest, CheckEngagementHistograms) {
|
| // Now spend the budget to trigger the UMA recording the SES score. The first
|
| // call shouldn't write any UMA. The second should write a lowSES entry, and
|
| // the third should write a noSES entry.
|
| - ASSERT_TRUE(SpendBudget(origin, cost));
|
| - ASSERT_TRUE(SpendBudget(origin, cost));
|
| - ASSERT_FALSE(SpendBudget(origin, cost));
|
| + ASSERT_TRUE(SpendBudget(cost));
|
| + ASSERT_TRUE(SpendBudget(cost));
|
| + ASSERT_FALSE(SpendBudget(cost));
|
|
|
| // Advance the clock by 12 days (to guarantee a full new engagement grant)
|
| // then change the SES score to get a different UMA entry, then spend the
|
| // budget again.
|
| clock->Advance(base::TimeDelta::FromDays(12));
|
| GetBudgetDetails();
|
| - SetSiteEngagementScore(origin, engagement * 2);
|
| - ASSERT_TRUE(SpendBudget(origin, cost));
|
| - ASSERT_TRUE(SpendBudget(origin, cost));
|
| - ASSERT_FALSE(SpendBudget(origin, cost));
|
| + SetSiteEngagementScore(engagement * 2);
|
| + ASSERT_TRUE(SpendBudget(cost));
|
| + ASSERT_TRUE(SpendBudget(cost));
|
| + ASSERT_FALSE(SpendBudget(cost));
|
|
|
| // Now check the UMA. Both UMA should have 2 buckets with 1 entry each.
|
| std::vector<base::Bucket> no_budget_buckets =
|
|
|