Commit a5cee9f8 authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Add PostTask to starting spare renderer

Adds a configurable delay as well, but by default is zero so that the
spare renderer request happens in the next message loop.

Bug: 1115259
Change-Id: I787cd9cf60c517ea9ac83d28d0484928355007e0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2392766Reviewed-by: default avatarTarun Bansal <tbansal@chromium.org>
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804430}
parent e88e36c3
......@@ -7,13 +7,17 @@
#include <algorithm>
#include <vector>
#include "base/bind.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "base/system/sys_info.h"
#include "base/task/post_task.h"
#include "base/time/default_tick_clock.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "components/search_engines/template_url_service.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
#include "url/gurl.h"
#include "url/origin.h"
......@@ -58,7 +62,12 @@ NavigationPredictorRendererWarmupClient::
base::GetFieldTrialParamByFeatureAsInt(
kNavigationPredictorRendererWarmup,
"cooldown_duration_ms",
60 * 1000))) {
60 * 1000))),
renderer_warmup_delay_(base::TimeDelta::FromMilliseconds(
base::GetFieldTrialParamByFeatureAsInt(
kNavigationPredictorRendererWarmup,
"renderer_warmup_delay_ms",
0))) {
if (clock) {
tick_clock_ = clock;
} else {
......@@ -197,5 +206,10 @@ void NavigationPredictorRendererWarmupClient::RecordMetricsAndMaybeDoWarmup() {
return;
}
DoRendererWarmpup();
content::GetUIThreadTaskRunner({})->PostDelayedTask(
FROM_HERE,
base::BindOnce(
&NavigationPredictorRendererWarmupClient::DoRendererWarmpup,
weak_factory_.GetWeakPtr()),
renderer_warmup_delay_);
}
......@@ -6,6 +6,7 @@
#define CHROME_BROWSER_NAVIGATION_PREDICTOR_NAVIGATION_PREDICTOR_RENDERER_WARMUP_CLIENT_H_
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "base/optional.h"
#include "base/time/tick_clock.h"
#include "base/time/time.h"
......@@ -88,6 +89,12 @@ class NavigationPredictorRendererWarmupClient
// The amount of time to wait in-between doing a renderer warmup.
const base::TimeDelta cooldown_duration_;
// The amount of time to delay starting a spare renderer.
const base::TimeDelta renderer_warmup_delay_;
base::WeakPtrFactory<NavigationPredictorRendererWarmupClient> weak_factory_{
this};
DISALLOW_COPY_AND_ASSIGN(NavigationPredictorRendererWarmupClient);
};
......
......@@ -42,7 +42,10 @@ class TestNavigationPredictorRendererWarmupClient
: NavigationPredictorRendererWarmupClient(profile, clock) {}
~TestNavigationPredictorRendererWarmupClient() override = default;
bool DidDoRendererWarmup() const { return did_renderer_warmup_; }
bool DidDoRendererWarmup() const {
base::RunLoop().RunUntilIdle();
return did_renderer_warmup_;
}
void Reset() { did_renderer_warmup_ = false; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment