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

Unified Diff: components/scheduler/renderer/renderer_scheduler_impl.cc

Issue 1832673002: Add testRunner.runIdleTasks() to force idle tasks to run. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: rebase Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler_impl.h ('k') | components/scheduler/scheduler.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/scheduler/renderer/renderer_scheduler_impl.cc
diff --git a/components/scheduler/renderer/renderer_scheduler_impl.cc b/components/scheduler/renderer/renderer_scheduler_impl.cc
index 306c45cc0a783df4c849963c17ec761c1dc2a490..9f3d9b6ef21a16711e52ff193531d3459aed5064 100644
--- a/components/scheduler/renderer/renderer_scheduler_impl.cc
+++ b/components/scheduler/renderer/renderer_scheduler_impl.cc
@@ -126,7 +126,8 @@ RendererSchedulerImpl::MainThreadOnly::MainThreadOnly(
have_reported_blocking_intervention_since_navigation(false),
has_visible_render_widget_with_touch_handler(false),
begin_frame_not_expected_soon(false),
- expensive_task_blocking_allowed(true) {}
+ expensive_task_blocking_allowed(true),
+ in_idle_period_for_testing(false) {}
RendererSchedulerImpl::MainThreadOnly::~MainThreadOnly() {}
@@ -383,12 +384,22 @@ void RendererSchedulerImpl::OnRendererForegrounded() {
}
void RendererSchedulerImpl::EndIdlePeriod() {
+ if (MainThreadOnly().in_idle_period_for_testing)
+ return;
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
"RendererSchedulerImpl::EndIdlePeriod");
helper_.CheckOnValidThread();
idle_helper_.EndIdlePeriod();
}
+void RendererSchedulerImpl::EndIdlePeriodForTesting(
+ const base::Closure& callback,
+ base::TimeTicks time_remaining) {
+ MainThreadOnly().in_idle_period_for_testing = false;
+ EndIdlePeriod();
+ callback.Run();
+}
+
// static
bool RendererSchedulerImpl::ShouldPrioritizeInputEvent(
const blink::WebInputEvent& web_input_event) {
@@ -574,6 +585,16 @@ base::TimeTicks RendererSchedulerImpl::CurrentIdleTaskDeadlineForTesting()
return idle_helper_.CurrentIdleTaskDeadline();
}
+void RendererSchedulerImpl::RunIdleTasksForTesting(
+ const base::Closure& callback) {
+ MainThreadOnly().in_idle_period_for_testing = true;
+ IdleTaskRunner()->PostIdleTask(
+ FROM_HERE,
+ base::Bind(&RendererSchedulerImpl::EndIdlePeriodForTesting,
+ weak_factory_.GetWeakPtr(), callback));
+ idle_helper_.EnableLongIdlePeriod();
+}
+
void RendererSchedulerImpl::MaybeUpdatePolicy() {
helper_.CheckOnValidThread();
if (policy_may_need_update_.IsSet()) {
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler_impl.h ('k') | components/scheduler/scheduler.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698