| Index: chrome/browser/net/predictor.h
|
| diff --git a/chrome/browser/net/predictor.h b/chrome/browser/net/predictor.h
|
| index bac4ca9e6e0a6615cdef3bdc4f582a1117077b96..4fea68aa825730df5375585109c07e0753fd630e 100644
|
| --- a/chrome/browser/net/predictor.h
|
| +++ b/chrome/browser/net/predictor.h
|
| @@ -28,6 +28,7 @@
|
| #include "base/gtest_prod_util.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "chrome/browser/net/prediction_options.h"
|
| #include "chrome/browser/net/referrer.h"
|
| #include "chrome/browser/net/spdyproxy/proxy_advisor.h"
|
| #include "chrome/browser/net/timed_cache.h"
|
| @@ -38,6 +39,7 @@
|
| class IOThread;
|
| class PrefService;
|
| class Profile;
|
| +class ProfileIOData;
|
|
|
| namespace base {
|
| class ListValue;
|
| @@ -115,13 +117,14 @@ class Predictor {
|
|
|
| // |max_concurrent| specifies how many concurrent (parallel) prefetches will
|
| // be performed. Host lookups will be issued through |host_resolver|.
|
| - explicit Predictor(bool preconnect_enabled);
|
| + explicit Predictor(bool preconnect_enabled, bool predictor_enabled);
|
|
|
| virtual ~Predictor();
|
|
|
| // This function is used to create a predictor. For testing, we can create
|
| // a version which does a simpler shutdown.
|
| static Predictor* CreatePredictor(bool preconnect_enabled,
|
| + bool predictor_enabled,
|
| bool simple_shutdown);
|
|
|
| static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
|
| @@ -131,7 +134,8 @@ class Predictor {
|
| virtual void InitNetworkPredictor(PrefService* user_prefs,
|
| PrefService* local_state,
|
| IOThread* io_thread,
|
| - net::URLRequestContextGetter* getter);
|
| + net::URLRequestContextGetter* getter,
|
| + ProfileIOData* profile_io_data);
|
|
|
| // The Omnibox has proposed a given url to the user, and if it is a search
|
| // URL, then it also indicates that this is preconnectable (i.e., we could
|
| @@ -212,7 +216,7 @@ class Predictor {
|
| const std::vector<GURL>& urls_to_prefetch,
|
| base::ListValue* referral_list,
|
| IOThread* io_thread,
|
| - bool predictor_enabled);
|
| + ProfileIOData* profile_io_data);
|
|
|
| // During startup, we learn what the first N urls visited are, and then
|
| // resolve the associated hosts ASAP during our next startup.
|
| @@ -229,7 +233,7 @@ class Predictor {
|
|
|
| // May be called from either the IO or UI thread and will PostTask
|
| // to the IO thread if necessary.
|
| - void SaveStateForNextStartupAndTrim(PrefService* prefs);
|
| + void SaveStateForNextStartupAndTrim();
|
|
|
| void SaveDnsPrefetchStateForNextStartupAndTrim(
|
| base::ListValue* startup_list,
|
| @@ -238,12 +242,6 @@ class Predictor {
|
|
|
| // May be called from either the IO or UI thread and will PostTask
|
| // to the IO thread if necessary.
|
| - void EnablePredictor(bool enable);
|
| -
|
| - void EnablePredictorOnIOThread(bool enable);
|
| -
|
| - // May be called from either the IO or UI thread and will PostTask
|
| - // to the IO thread if necessary.
|
| void PreconnectUrl(const GURL& url, const GURL& first_party_for_cookies,
|
| UrlInfo::ResolutionMotivation motivation, int count);
|
|
|
| @@ -295,12 +293,14 @@ class Predictor {
|
| observer_ = observer;
|
| }
|
|
|
| - // Flag setting to use preconnection instead of just DNS pre-fetching.
|
| + ProfileIOData* profile_io_data() const {
|
| + return profile_io_data_;
|
| + }
|
| +
|
| bool preconnect_enabled() const {
|
| return preconnect_enabled_;
|
| }
|
|
|
| - // Flag setting for whether we are prefetching dns lookups.
|
| bool predictor_enabled() const {
|
| return predictor_enabled_;
|
| }
|
| @@ -435,6 +435,11 @@ class Predictor {
|
| UrlInfo::ResolutionMotivation motivation,
|
| bool is_preconnect);
|
|
|
| + // There two members call the corresponding global functions in
|
| + // prediction_options.cc.
|
| + virtual bool CanPredictNetworkActionsUI();
|
| + virtual bool CanPredictNetworkActionsIO();
|
| +
|
| // ------------- Start IO thread methods.
|
|
|
| // Perform actual resolution or preconnection to subresources now. This is
|
| @@ -508,8 +513,16 @@ class Predictor {
|
| scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
|
|
|
| // Status of speculative DNS resolution and speculative TCP/IP connection
|
| - // feature.
|
| - bool predictor_enabled_;
|
| + // feature. This is false if and only if disabled by a command line switch.
|
| + const bool predictor_enabled_;
|
| +
|
| + // This is set by InitNetworkPredictor and used for calling
|
| + // chrome_browser_net::CanPredictNetworkActionsUI.
|
| + PrefService* user_prefs_;
|
| +
|
| + // This is set by InitNetworkPredictor and used for calling
|
| + // chrome_browser_net::CanPredictNetworkActionsIO.
|
| + ProfileIOData* profile_io_data_;
|
|
|
| // work_queue_ holds a list of names we need to look up.
|
| HostNameQueue work_queue_;
|
| @@ -547,7 +560,8 @@ class Predictor {
|
|
|
| // Are we currently using preconnection, rather than just DNS resolution, for
|
| // subresources and omni-box search URLs.
|
| - bool preconnect_enabled_;
|
| + // This is false if and only if disabled by a command line switch.
|
| + const bool preconnect_enabled_;
|
|
|
| // Most recent suggestion from Omnibox provided via AnticipateOmniboxUrl().
|
| std::string last_omnibox_host_;
|
| @@ -588,15 +602,20 @@ class Predictor {
|
| // This version of the predictor is used for testing.
|
| class SimplePredictor : public Predictor {
|
| public:
|
| - explicit SimplePredictor(bool preconnect_enabled)
|
| - : Predictor(preconnect_enabled) {}
|
| + explicit SimplePredictor(bool preconnect_enabled, bool predictor_enabled)
|
| + : Predictor(preconnect_enabled, predictor_enabled) {}
|
| virtual ~SimplePredictor() {}
|
| virtual void InitNetworkPredictor(
|
| PrefService* user_prefs,
|
| PrefService* local_state,
|
| IOThread* io_thread,
|
| - net::URLRequestContextGetter* getter) OVERRIDE;
|
| + net::URLRequestContextGetter* getter,
|
| + ProfileIOData* profile_io_data) OVERRIDE;
|
| virtual void ShutdownOnUIThread() OVERRIDE;
|
| + private:
|
| + // There member functions return True for unittests.
|
| + virtual bool CanPredictNetworkActionsUI() OVERRIDE;
|
| + virtual bool CanPredictNetworkActionsIO() OVERRIDE;
|
| };
|
|
|
| } // namespace chrome_browser_net
|
|
|