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 @@ ...@@ -10,6 +10,8 @@
#include "chrome/browser/android/tab_android.h" #include "chrome/browser/android/tab_android.h"
#include "chrome/browser/predictors/autocomplete_action_predictor.h" #include "chrome/browser/predictors/autocomplete_action_predictor.h"
#include "chrome/browser/predictors/autocomplete_action_predictor_factory.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.h"
#include "chrome/browser/profiles/profile_android.h" #include "chrome/browser/profiles/profile_android.h"
#include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/autocomplete_match.h"
...@@ -98,19 +100,17 @@ void OmniboxPrerender::PrerenderMaybe( ...@@ -98,19 +100,17 @@ void OmniboxPrerender::PrerenderMaybe(
action_predictor->RecommendAction(url_string, *default_match); action_predictor->RecommendAction(url_string, *default_match);
GURL current_url = GURL(current_url_string); 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 // Ask for prerendering if the destination URL is different than the
// current URL. // current URL.
if (default_match->destination_url != current_url) { if (default_match->destination_url == current_url)
DoPrerender( return;
*default_match,
profile, switch (recommended_action) {
web_contents); case AutocompleteActionPredictor::ACTION_PRERENDER:
} DoPrerender(*default_match, profile, web_contents);
break; break;
case AutocompleteActionPredictor::ACTION_PRECONNECT: case AutocompleteActionPredictor::ACTION_PRECONNECT:
// TODO (apiccion) add preconnect logic DoPreconnect(*default_match, profile);
break; break;
case AutocompleteActionPredictor::ACTION_NONE: case AutocompleteActionPredictor::ACTION_NONE:
break; break;
...@@ -136,3 +136,14 @@ void OmniboxPrerender::DoPrerender(const AutocompleteMatch& match, ...@@ -136,3 +136,14 @@ void OmniboxPrerender::DoPrerender(const AutocompleteMatch& match,
web_contents->GetController().GetDefaultSessionStorageNamespace(), web_contents->GetController().GetDefaultSessionStorageNamespace(),
container_bounds.size()); 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 { ...@@ -63,6 +63,7 @@ class OmniboxPrerender {
void DoPrerender(const AutocompleteMatch& match, void DoPrerender(const AutocompleteMatch& match,
Profile* profile, Profile* profile,
content::WebContents* web_contents); content::WebContents* web_contents);
void DoPreconnect(const AutocompleteMatch& match, Profile* profile);
JavaObjectWeakGlobalRef weak_java_omnibox_; JavaObjectWeakGlobalRef weak_java_omnibox_;
DISALLOW_COPY_AND_ASSIGN(OmniboxPrerender); 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