1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_NET_PREDICTION_OPTIONS_H_ 6#define CHROME_BROWSER_NET_PREDICTION_OPTIONS_H_ 7 8namespace user_prefs { 9class PrefRegistrySyncable; 10} 11 12class PrefService; 13class ProfileIOData; 14 15namespace chrome_browser_net { 16 17// Enum describing when to allow network predictions based on connection type. 18// The numerical value is stored in the prefs file, therefore the same enum 19// with the same order must be used by the platform-dependent components. 20enum NetworkPredictionOptions { 21 NETWORK_PREDICTION_ALWAYS, 22 NETWORK_PREDICTION_WIFI_ONLY, 23 NETWORK_PREDICTION_NEVER, 24 NETWORK_PREDICTION_DEFAULT = NETWORK_PREDICTION_WIFI_ONLY, 25}; 26 27void RegisterPredictionOptionsProfilePrefs( 28 user_prefs::PrefRegistrySyncable* registry); 29 30// Migrate prefs::kNetworkPredictionEnabled user setting (if exists) to 31// prefs::kNetworkPredictionOptions (if does not have user setting). 32void MigrateNetworkPredictionUserPrefs(PrefService* pref_service); 33 34// The following two global functions determine whether prefetching 35// and prerendering are enabled, based on preferences and network type. 36 37// To be executed on the IO thread only. 38bool CanPrefetchAndPrerenderIO(ProfileIOData* profile_io_data); 39 40// To be executed on the UI thread only. 41bool CanPrefetchAndPrerenderUI(PrefService* prefs); 42 43// The following two global functions determine whether TCP preconnect 44// and DNS preresolution are enabled, based on preferences. 45 46// To be executed on the IO thread only. 47bool CanPreresolveAndPreconnectIO(ProfileIOData* profile_io_data); 48 49// To be executed on the UI thread only. 50bool CanPreresolveAndPreconnectUI(PrefService* prefs); 51 52} // namespace chrome_browser_net 53 54#endif // CHROME_BROWSER_NET_PREDICTION_OPTIONS_H_ 55