net_pref_observer.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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#include "chrome/browser/net/net_pref_observer.h"
6
7#include "base/bind.h"
8#include "base/logging.h"
9#include "base/prefs/pref_service.h"
10#include "chrome/common/pref_names.h"
11#include "components/pref_registry/pref_registry_syncable.h"
12#include "content/public/browser/browser_thread.h"
13#include "net/http/http_stream_factory.h"
14
15using content::BrowserThread;
16
17NetPrefObserver::NetPrefObserver(PrefService* prefs) {
18  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
19  DCHECK(prefs);
20
21  base::Closure prefs_callback = base::Bind(&NetPrefObserver::ApplySettings,
22                                            base::Unretained(this));
23  spdy_disabled_.Init(prefs::kDisableSpdy, prefs, prefs_callback);
24
25  ApplySettings();
26}
27
28NetPrefObserver::~NetPrefObserver() {
29  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
30}
31
32void NetPrefObserver::ApplySettings() {
33  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
34
35  if (spdy_disabled_.IsManaged())
36    net::HttpStreamFactory::set_spdy_enabled(!*spdy_disabled_);
37}
38
39// static
40void NetPrefObserver::RegisterProfilePrefs(
41    user_prefs::PrefRegistrySyncable* registry) {
42  registry->RegisterBooleanPref(
43      prefs::kNetworkPredictionEnabled,
44      true,
45      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
46  registry->RegisterBooleanPref(
47      prefs::kDisableSpdy,
48      false,
49      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
50}
51