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

Unified Diff: third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc

Issue 2505693002: [scheduler] Initial budget for time-based throttling. (Closed)
Patch Set: Renamed SetTimeBudget to SetTimeBudgetRecoveryRate Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
index bbb5b6aceccf291dfd5e84304ec5267fa32ca154..f7c4ef2b566e2641a9f9904111a7402f417c4925 100644
--- a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
@@ -28,13 +28,15 @@ constexpr base::TimeDelta kDefaultMaxBackgroundBudgetLevel =
base::TimeDelta::FromSeconds(3);
constexpr base::TimeDelta kDefaultMaxBackgroundThrottlingDelay =
base::TimeDelta::FromMinutes(1);
+constexpr base::TimeDelta kDefaultInitialBackgroundBudget =
+ base::TimeDelta::FromSeconds(1);
// Values coming from WebViewSchedulerSettings are interpreted as follows:
// -1 is "not set". Scheduler should use a reasonable default.
// 0 is "none". base::nullopt will be used if value is optional.
// other values are left without changes.
-double GetBackgroundBudget(
+double GetBackgroundBudgetRecoveryRate(
WebViewScheduler::WebViewSchedulerSettings* settings) {
if (!settings)
return kBackgroundBudgetAsCPUFraction;
@@ -68,6 +70,17 @@ base::Optional<base::TimeDelta> GetMaxThrottlingDelay(
return base::TimeDelta::FromSecondsD(max_delay);
}
+base::TimeDelta GetInitialBudget(
+ WebViewSchedulerImpl::WebViewSchedulerSettings* settings) {
+ if (!settings)
+ return kDefaultInitialBackgroundBudget;
+ double initial_budget =
+ settings->expensiveBackgroundThrottlingInitialBudget();
+ if (initial_budget == -1.0)
+ return kDefaultMaxBackgroundBudgetLevel;
+ return base::TimeDelta::FromSecondsD(initial_budget);
+}
+
} // namespace
WebViewSchedulerImpl::WebViewSchedulerImpl(
@@ -265,8 +278,11 @@ void WebViewSchedulerImpl::MaybeInitializeBackgroundTimeBudgetPool() {
background_time_budget_pool_->EnableThrottling(&lazy_now);
}
- background_time_budget_pool_->SetTimeBudget(lazy_now.Now(),
- GetBackgroundBudget(settings_));
+ background_time_budget_pool_->SetTimeBudgetRecoveryRate(
+ lazy_now.Now(), GetBackgroundBudgetRecoveryRate(settings_));
+
+ background_time_budget_pool_->GrantAdditionalBudget(
+ lazy_now.Now(), GetInitialBudget(settings_));
}
void WebViewSchedulerImpl::OnThrottlingReported(
« no previous file with comments | « third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698