| Index: chrome/browser/engagement/site_engagement_eviction_policy_unittest.cc
|
| diff --git a/chrome/browser/engagement/site_engagement_eviction_policy_unittest.cc b/chrome/browser/engagement/site_engagement_eviction_policy_unittest.cc
|
| deleted file mode 100644
|
| index edfb8e1e129a260b15179f2b8ce57a133faff562..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/engagement/site_engagement_eviction_policy_unittest.cc
|
| +++ /dev/null
|
| @@ -1,173 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/engagement/site_engagement_eviction_policy.h"
|
| -
|
| -#include <stdint.h>
|
| -
|
| -#include <memory>
|
| -
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "chrome/browser/engagement/site_engagement_service.h"
|
| -#include "content/public/test/mock_special_storage_policy.h"
|
| -#include "content/public/test/mock_storage_client.h"
|
| -#include "content/public/test/test_browser_thread_bundle.h"
|
| -#include "storage/browser/quota/quota_manager.h"
|
| -#include "storage/browser/quota/quota_manager_proxy.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -const int64_t kGlobalQuota = 25 * 1024;
|
| -
|
| -} // namespace
|
| -
|
| -class TestSiteEngagementScoreProvider : public SiteEngagementScoreProvider {
|
| - public:
|
| - TestSiteEngagementScoreProvider() {}
|
| -
|
| - virtual ~TestSiteEngagementScoreProvider() {}
|
| -
|
| - double GetScore(const GURL& url) const override {
|
| - const auto& it = engagement_score_map_.find(url);
|
| - if (it != engagement_score_map_.end())
|
| - return it->second;
|
| - return 0.0;
|
| - }
|
| -
|
| - double GetTotalEngagementPoints() const override {
|
| - double total = 0;
|
| - for (const auto& site : engagement_score_map_)
|
| - total += site.second;
|
| - return total;
|
| - }
|
| -
|
| - void SetScore(const GURL& origin, double score) {
|
| - engagement_score_map_[origin] = score;
|
| - }
|
| -
|
| - private:
|
| - std::map<GURL, double> engagement_score_map_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestSiteEngagementScoreProvider);
|
| -};
|
| -
|
| -class SiteEngagementEvictionPolicyTest : public testing::Test {
|
| - public:
|
| - SiteEngagementEvictionPolicyTest()
|
| - : score_provider_(new TestSiteEngagementScoreProvider()),
|
| - storage_policy_(new content::MockSpecialStoragePolicy()) {}
|
| -
|
| - ~SiteEngagementEvictionPolicyTest() override {}
|
| -
|
| - GURL CalculateEvictionOriginWithExceptions(
|
| - const std::map<GURL, int64_t>& usage,
|
| - const std::set<GURL>& exceptions) {
|
| - return SiteEngagementEvictionPolicy::CalculateEvictionOriginForTests(
|
| - storage_policy_, score_provider_.get(), exceptions, usage,
|
| - kGlobalQuota);
|
| - }
|
| -
|
| - GURL CalculateEvictionOrigin(const std::map<GURL, int64_t>& usage) {
|
| - return CalculateEvictionOriginWithExceptions(usage, std::set<GURL>());
|
| - }
|
| -
|
| - TestSiteEngagementScoreProvider* score_provider() {
|
| - return score_provider_.get();
|
| - }
|
| -
|
| - content::MockSpecialStoragePolicy* storage_policy() {
|
| - return storage_policy_.get();
|
| - }
|
| -
|
| - private:
|
| - std::unique_ptr<TestSiteEngagementScoreProvider> score_provider_;
|
| - scoped_refptr<content::MockSpecialStoragePolicy> storage_policy_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SiteEngagementEvictionPolicyTest);
|
| -};
|
| -
|
| -TEST_F(SiteEngagementEvictionPolicyTest, GetEvictionOrigin) {
|
| - GURL url1("http://www.google.com");
|
| - GURL url2("http://www.example.com");
|
| - GURL url3("http://www.spam.me");
|
| -
|
| - std::map<GURL, int64_t> usage;
|
| - usage[url1] = 10 * 1024;
|
| - usage[url2] = 10 * 1024;
|
| - usage[url3] = 10 * 1024;
|
| -
|
| - score_provider()->SetScore(url1, 50);
|
| - score_provider()->SetScore(url2, 25);
|
| -
|
| - // When 3 sites have equal usage, evict the site with the least engagement.
|
| - EXPECT_EQ(url3, CalculateEvictionOrigin(usage));
|
| -
|
| - usage[url2] = usage[url3] + 10;
|
| -
|
| - // Now |url2| has the most usage but |url3| has the least engagement score so
|
| - // one of them should be evicted. In this case the heuristic chooses |url3|.
|
| - EXPECT_EQ(url3, CalculateEvictionOrigin(usage));
|
| -
|
| - // But exceeding allocated usage too much will still result in being evicted
|
| - // even though the engagement with |url2| is higher.
|
| - usage[url2] = 15 * 1024;
|
| - EXPECT_EQ(url2, CalculateEvictionOrigin(usage));
|
| -
|
| - // When all origins have the same engagement, the origin with the highest
|
| - // usage is evicted.
|
| - score_provider()->SetScore(url1, 50);
|
| - score_provider()->SetScore(url2, 50);
|
| - score_provider()->SetScore(url3, 50);
|
| -
|
| - usage[url2] = 10 * 1024;
|
| - usage[url3] = 20 * 1024;
|
| - EXPECT_EQ(url3, CalculateEvictionOrigin(usage));
|
| -}
|
| -
|
| -// Test that durable and unlimited storage origins are exempt from eviction.
|
| -TEST_F(SiteEngagementEvictionPolicyTest, SpecialStoragePolicy) {
|
| - GURL url1("http://www.google.com");
|
| - GURL url2("http://www.example.com");
|
| -
|
| - std::map<GURL, int64_t> usage;
|
| - usage[url1] = 10 * 1024;
|
| - usage[url2] = 10 * 1024;
|
| -
|
| - score_provider()->SetScore(url1, 50);
|
| - score_provider()->SetScore(url2, 25);
|
| -
|
| - EXPECT_EQ(url2, CalculateEvictionOrigin(usage));
|
| -
|
| - // Durable storage doesn't get evicted.
|
| - storage_policy()->AddDurable(url2);
|
| - EXPECT_EQ(url1, CalculateEvictionOrigin(usage));
|
| -
|
| - // Unlimited storage doesn't get evicted.
|
| - storage_policy()->AddUnlimited(url1);
|
| - EXPECT_EQ(GURL(), CalculateEvictionOrigin(usage));
|
| -}
|
| -
|
| -TEST_F(SiteEngagementEvictionPolicyTest, Exceptions) {
|
| - GURL url1("http://www.google.com");
|
| - GURL url2("http://www.example.com");
|
| -
|
| - std::map<GURL, int64_t> usage;
|
| - usage[url1] = 10 * 1024;
|
| - usage[url2] = 10 * 1024;
|
| -
|
| - score_provider()->SetScore(url1, 50);
|
| - score_provider()->SetScore(url2, 25);
|
| -
|
| - EXPECT_EQ(url2, CalculateEvictionOrigin(usage));
|
| -
|
| - // The policy should respect exceptions.
|
| - std::set<GURL> exceptions;
|
| - exceptions.insert(url2);
|
| - EXPECT_EQ(url1, CalculateEvictionOriginWithExceptions(usage, exceptions));
|
| -}
|
|
|