// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_ANDROID_OMNIBOX_OMNIBOX_PRERENDER_H_ #define CHROME_BROWSER_ANDROID_OMNIBOX_OMNIBOX_PRERENDER_H_ #include "base/android/jni_helper.h" #include "base/memory/scoped_ptr.h" #include "base/strings/string16.h" class AutocompleteResult; class ProfielAndroid; class Profile; class TabAndroid; struct AutocompleteMatch; namespace content { class WebContents; } // This class is responsible for taking the user's omnibox input text, // AutocompleteResults and navigation actions and then feeding them to the // AutocompleteActionPredictor. The predictor uses it to update its // database and returns predictions on what page, if any, to pre-render // or pre-connect. This class then takes the corresponding action. class OmniboxPrerender { public: OmniboxPrerender(JNIEnv* env, jobject obj); virtual ~OmniboxPrerender(); // Clears the transitional matches. This should be called when the user // stops typing into the omnibox (e.g. when navigating away, closing the // keyboard or changing tabs). void Clear(JNIEnv* env, jobject obj, jobject j_profile_android); // Initializes the underlying action predictor for a given profile instance. // This should be called as soon as possible as the predictor must register // for certain notifications to properly initialize before providing // predictions and updated its learning database. void InitializeForProfile(JNIEnv* env, jobject obj, jobject j_profile_android); // Potentailly invokes a pre-render or pre-connect given the url typed into // the omnibox and a corresponding autocomplete result. This should be // invoked everytime the omnibox changes (e.g. As the user types characters // this method should be invoked at least once per character). void PrerenderMaybe(JNIEnv* env, jobject obj, jstring j_url, jstring j_current_url, jint jsource_match, jobject j_profile_android, jobject j_tab); private: // Prerenders a given AutocompleteMatch's url. void DoPrerender(const AutocompleteMatch& match, Profile* profile, content::WebContents* web_contents); JavaObjectWeakGlobalRef weak_java_omnibox_; DISALLOW_COPY_AND_ASSIGN(OmniboxPrerender); }; bool RegisterOmniboxPrerender(JNIEnv* env); #endif // CHROME_BROWSER_ANDROID_OMNIBOX_OMNIBOX_PRERENDER_H_