1 // Copyright (c) 2012 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_NET_PREF_OBSERVER_H_ 6 #define CHROME_BROWSER_NET_NET_PREF_OBSERVER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/prefs/pref_member.h" 10 11 class PrefService; 12 13 namespace chrome_browser_net { 14 class Predictor; 15 } 16 17 namespace prerender { 18 class PrerenderManager; 19 } 20 21 namespace user_prefs { 22 class PrefRegistrySyncable; 23 } 24 25 // Monitors network-related preferences for changes and applies them. 26 // The supplied PrefService must outlive this NetPrefObserver. 27 // Must be used only on the UI thread. 28 class NetPrefObserver { 29 public: 30 // |prefs| must be non-NULL and |*prefs| must outlive this. 31 // |prerender_manager| may be NULL. If not, |*prerender_manager| must 32 // outlive this. 33 NetPrefObserver(PrefService* prefs, 34 prerender::PrerenderManager* prerender_manager, 35 chrome_browser_net::Predictor* predictor); 36 virtual ~NetPrefObserver(); 37 38 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 39 40 private: 41 void ApplySettings(); 42 43 BooleanPrefMember network_prediction_enabled_; 44 BooleanPrefMember spdy_disabled_; 45 prerender::PrerenderManager* prerender_manager_; 46 chrome_browser_net::Predictor* predictor_; 47 48 DISALLOW_COPY_AND_ASSIGN(NetPrefObserver); 49 }; 50 51 #endif // CHROME_BROWSER_NET_NET_PREF_OBSERVER_H_ 52