Commit 56ba0875 authored by Patrick Noland's avatar Patrick Noland Committed by Commit Bot

[Omnibox] Fix pre-rendering

Preconnection, the lighter weight alternative to
pre-rendering, was un-implemented for Clank, so this CL implements it.

Change-Id: Ib48ec3569a0422762d1c4b41d4e2db4b85b2cbd6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1808165
Commit-Queue: Patrick Noland <pnoland@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarEgor Pasko <pasko@chromium.org>
Reviewed-by: default avatarTarun Bansal <tbansal@chromium.org>
Cr-Commit-Position: refs/heads/master@{#697373}
parent a5fb02ed
......@@ -10,6 +10,8 @@
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/predictors/autocomplete_action_predictor.h"
#include "chrome/browser/predictors/autocomplete_action_predictor_factory.h"
#include "chrome/browser/predictors/loading_predictor.h"
#include "chrome/browser/predictors/loading_predictor_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_android.h"
#include "components/omnibox/browser/autocomplete_match.h"
......@@ -98,19 +100,17 @@ void OmniboxPrerender::PrerenderMaybe(
action_predictor->RecommendAction(url_string, *default_match);
GURL current_url = GURL(current_url_string);
switch (recommended_action) {
case AutocompleteActionPredictor::ACTION_PRERENDER:
// Ask for prerendering if the destination URL is different than the
// current URL.
if (default_match->destination_url != current_url) {
DoPrerender(
*default_match,
profile,
web_contents);
}
if (default_match->destination_url == current_url)
return;
switch (recommended_action) {
case AutocompleteActionPredictor::ACTION_PRERENDER:
DoPrerender(*default_match, profile, web_contents);
break;
case AutocompleteActionPredictor::ACTION_PRECONNECT:
// TODO (apiccion) add preconnect logic
DoPreconnect(*default_match, profile);
break;
case AutocompleteActionPredictor::ACTION_NONE:
break;
......@@ -136,3 +136,14 @@ void OmniboxPrerender::DoPrerender(const AutocompleteMatch& match,
web_contents->GetController().GetDefaultSessionStorageNamespace(),
container_bounds.size());
}
void OmniboxPrerender::DoPreconnect(const AutocompleteMatch& match,
Profile* profile) {
auto* loading_predictor =
predictors::LoadingPredictorFactory::GetForProfile(profile);
if (loading_predictor) {
loading_predictor->PrepareForPageLoad(
match.destination_url, predictors::HintOrigin::OMNIBOX,
predictors::AutocompleteActionPredictor::IsPreconnectable(match));
}
}
......@@ -63,6 +63,7 @@ class OmniboxPrerender {
void DoPrerender(const AutocompleteMatch& match,
Profile* profile,
content::WebContents* web_contents);
void DoPreconnect(const AutocompleteMatch& match, Profile* profile);
JavaObjectWeakGlobalRef weak_java_omnibox_;
DISALLOW_COPY_AND_ASSIGN(OmniboxPrerender);
......
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