1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Use of this source code is governed by a BSD-style license that can be
3731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// found in the LICENSE file.
4731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
5731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#ifndef CHROME_BROWSER_NET_NET_PREF_OBSERVER_H_
6731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#define CHROME_BROWSER_NET_NET_PREF_OBSERVER_H_
7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#pragma once
8731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <string>
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/basictypes.h"
12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/prefs/pref_member.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_observer.h"
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Profile;
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace prerender {
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass PrerenderManager;
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Monitors network-related preferences for changes and applies them.
22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// The supplied PrefService must outlive this NetPrefObserver.
23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Must be used only on the UI thread.
24731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass NetPrefObserver : public NotificationObserver {
25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick public:
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // |prefs| must outlive this NetPrefObserver. A reference is
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // held to |prerender_manager| if it is non-NULL.
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  NetPrefObserver(PrefService* prefs,
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                  prerender::PrerenderManager* prerender_manager);
30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ~NetPrefObserver();
31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // NotificationObserver
33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  virtual void Observe(NotificationType type,
34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                       const NotificationSource& source,
35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                       const NotificationDetails& details);
36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  static void RegisterPrefs(PrefService* prefs);
38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick private:
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // If |pref_name| is NULL, all monitored preferences will be applied.
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void ApplySettings(const std::string* pref_name);
42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  BooleanPrefMember network_prediction_enabled_;
44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  BooleanPrefMember spdy_disabled_;
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  BooleanPrefMember http_throttling_enabled_;
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  scoped_refptr<prerender::PrerenderManager> prerender_manager_;
47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  DISALLOW_COPY_AND_ASSIGN(NetPrefObserver);
49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick};
50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif  // CHROME_BROWSER_NET_NET_PREF_OBSERVER_H_
52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
53