prediction_options.h revision 116680a4aac90f2aa7413d9095a592090648e557
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.
20// TODO(bnc): implement as per crbug.com/334602.
21// NETWORK_PREDICTION_UNSET means that the old preferences,
22// kNetworkPredictionEnabled and kAllowPrerender, should be observed.
23enum NetworkPredictionOptions {
24  NETWORK_PREDICTION_ALWAYS,
25  NETWORK_PREDICTION_WIFI_ONLY,
26  NETWORK_PREDICTION_NEVER,
27  NETWORK_PREDICTION_UNSET,
28};
29
30void RegisterPredictionOptionsProfilePrefs(
31    user_prefs::PrefRegistrySyncable* registry);
32
33// The following two global functions determine whether predictive network
34// actions are enabled, based on preferences and network type.
35
36// To be executed on the IO thread only.
37bool CanPredictNetworkActionsIO(ProfileIOData* profile_io_data);
38
39// To be executed on the UI thread only.
40bool CanPredictNetworkActionsUI(PrefService* prefs);
41
42}  // namespace chrome_browser_net
43
44#endif  // CHROME_BROWSER_NET_PREDICTION_OPTIONS_H_
45