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

Side by Side Diff: chrome/browser/engagement/site_engagement_eviction_policy.cc

Issue 1343273003: Integrate SiteEngagementEvictionPolicy with QuotaManager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add_eviction_policy
Patch Set: address_comments Created 5 years, 2 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/barrier_closure.h"
6 #include "chrome/browser/browser_process.h" 5 #include "chrome/browser/browser_process.h"
7 #include "chrome/browser/engagement/site_engagement_eviction_policy.h" 6 #include "chrome/browser/engagement/site_engagement_eviction_policy.h"
8 #include "chrome/browser/engagement/site_engagement_service.h" 7 #include "chrome/browser/engagement/site_engagement_service.h"
9 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/profiles/profile_manager.h" 9 #include "chrome/browser/profiles/profile_manager.h"
11 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
12 11
13 namespace { 12 namespace {
14 13
14 base::Callback<SiteEngagementScoreProvider*(content::BrowserContext*)>*
15 g_test_score_provider_callback = nullptr;
16
15 const int kExpectedEngagementSites = 200; 17 const int kExpectedEngagementSites = 200;
16 18
17 // Gets the quota that an origin deserves based on its site engagement. 19 // Gets the quota that an origin deserves based on its site engagement.
18 int64 GetSoftQuotaForOrigin(const GURL& origin, 20 int64 GetSoftQuotaForOrigin(const GURL& origin,
19 int score, 21 int score,
20 int total_engagement_points, 22 int total_engagement_points,
21 int64 global_quota) { 23 int64 global_quota) {
22 double quota_per_point = 24 double quota_per_point =
23 global_quota / 25 global_quota /
24 std::max(kExpectedEngagementSites * SiteEngagementScore::kMaxPoints, 26 std::max(kExpectedEngagementSites * SiteEngagementScore::kMaxPoints,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 59
58 // |overuse| can be negative if the soft quota exceeds the usage. 60 // |overuse| can be negative if the soft quota exceeds the usage.
59 int64 overuse = usage.second - GetSoftQuotaForOrigin( 61 int64 overuse = usage.second - GetSoftQuotaForOrigin(
60 origin, score_provider->GetScore(origin), 62 origin, score_provider->GetScore(origin),
61 total_engagement_points, global_quota); 63 total_engagement_points, global_quota);
62 if (overuse > max_overuse) { 64 if (overuse > max_overuse) {
63 max_overuse = overuse; 65 max_overuse = overuse;
64 origin_to_evict = origin; 66 origin_to_evict = origin;
65 } 67 }
66 } 68 }
69
67 return origin_to_evict; 70 return origin_to_evict;
68 } 71 }
69 72
70 GURL GetSiteEngagementEvictionOriginOnUIThread( 73 GURL GetSiteEngagementEvictionOriginOnUIThread(
71 const scoped_refptr<storage::SpecialStoragePolicy>& special_storage_policy, 74 const scoped_refptr<storage::SpecialStoragePolicy>& special_storage_policy,
72 content::BrowserContext* browser_context, 75 content::BrowserContext* browser_context,
73 const std::map<GURL, int64>& usage_map, 76 const std::map<GURL, int64>& usage_map,
74 int64 global_quota) { 77 int64 global_quota) {
75 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 78 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
76 Profile* profile = Profile::FromBrowserContext(browser_context); 79
77 SiteEngagementService* service = 80 SiteEngagementScoreProvider* score_provider = nullptr;
78 g_browser_process->profile_manager()->IsValidProfile(profile) 81 if (g_test_score_provider_callback) {
79 ? SiteEngagementService::Get(profile) 82 score_provider = g_test_score_provider_callback->Run(browser_context);
80 : nullptr; 83 } else {
81 if (!service) 84 Profile* profile = Profile::FromBrowserContext(browser_context);
85 score_provider =
86 g_browser_process->profile_manager()->IsValidProfile(profile)
87 ? SiteEngagementService::Get(profile)
88 : nullptr;
89 }
90
91 if (!score_provider)
82 return GURL(); 92 return GURL();
83 93
84 return DoCalculateEvictionOrigin(special_storage_policy, service, usage_map, 94 return DoCalculateEvictionOrigin(special_storage_policy, score_provider,
85 global_quota); 95 usage_map, global_quota);
86 } 96 }
87 97
88 } // namespace 98 } // namespace
89 99
90 SiteEngagementEvictionPolicy::SiteEngagementEvictionPolicy( 100 SiteEngagementEvictionPolicy::SiteEngagementEvictionPolicy(
91 content::BrowserContext* browser_context) 101 content::BrowserContext* browser_context)
92 : browser_context_(browser_context) {} 102 : browser_context_(browser_context) {}
93 103
94 SiteEngagementEvictionPolicy::~SiteEngagementEvictionPolicy() {} 104 SiteEngagementEvictionPolicy::~SiteEngagementEvictionPolicy() {}
95 105
96 void SiteEngagementEvictionPolicy::GetEvictionOrigin( 106 void SiteEngagementEvictionPolicy::GetEvictionOrigin(
97 const scoped_refptr<storage::SpecialStoragePolicy>& special_storage_policy, 107 const scoped_refptr<storage::SpecialStoragePolicy>& special_storage_policy,
98 const std::map<GURL, int64>& usage_map, 108 const std::map<GURL, int64>& usage_map,
99 int64 global_quota, 109 int64 global_quota,
100 const storage::GetOriginCallback& callback) { 110 const storage::GetOriginCallback& callback) {
111 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
112
101 content::BrowserThread::PostTaskAndReplyWithResult( 113 content::BrowserThread::PostTaskAndReplyWithResult(
102 content::BrowserThread::UI, FROM_HERE, 114 content::BrowserThread::UI, FROM_HERE,
103 base::Bind(&GetSiteEngagementEvictionOriginOnUIThread, 115 base::Bind(&GetSiteEngagementEvictionOriginOnUIThread,
104 special_storage_policy, browser_context_, usage_map, 116 special_storage_policy, browser_context_, usage_map,
105 global_quota), 117 global_quota),
106 callback); 118 callback);
107 } 119 }
108 120
109 // static 121 // static
110 GURL SiteEngagementEvictionPolicy::CalculateEvictionOrigin( 122 void SiteEngagementEvictionPolicy::
123 SetSiteEngagementScoreProviderCallbackForTests(
124 base::Callback<SiteEngagementScoreProvider*(content::BrowserContext*)>*
125 callback) {
126 g_test_score_provider_callback = callback;
127 }
128
129 // static
130 GURL SiteEngagementEvictionPolicy::CalculateEvictionOriginForTests(
111 const scoped_refptr<storage::SpecialStoragePolicy>& special_storage_policy, 131 const scoped_refptr<storage::SpecialStoragePolicy>& special_storage_policy,
112 SiteEngagementScoreProvider* score_provider, 132 SiteEngagementScoreProvider* score_provider,
113 const std::map<GURL, int64>& usage_map, 133 const std::map<GURL, int64>& usage_map,
114 int64 global_quota) { 134 int64 global_quota) {
115 return DoCalculateEvictionOrigin(special_storage_policy, score_provider, 135 return DoCalculateEvictionOrigin(special_storage_policy, score_provider,
116 usage_map, global_quota); 136 usage_map, global_quota);
117 } 137 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698