net_pref_observer.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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 "chrome/browser/net/predictor.h" 8#include "chrome/browser/prefs/pref_service.h" 9#include "chrome/browser/prerender/prerender_manager.h" 10#include "chrome/common/chrome_notification_types.h" 11#include "chrome/common/pref_names.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 prerender::PrerenderManager* prerender_manager, 19 chrome_browser_net::Predictor* predictor) 20 : prerender_manager_(prerender_manager), 21 predictor_(predictor) { 22 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 23 DCHECK(prefs); 24 DCHECK(predictor); 25 26 network_prediction_enabled_.Init(prefs::kNetworkPredictionEnabled, prefs, 27 this); 28 spdy_disabled_.Init(prefs::kDisableSpdy, prefs, this); 29 30 ApplySettings(); 31} 32 33NetPrefObserver::~NetPrefObserver() { 34 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 35} 36 37void NetPrefObserver::OnPreferenceChanged(PrefServiceBase* service, 38 const std::string& pref_name) { 39 ApplySettings(); 40} 41 42void NetPrefObserver::ApplySettings() { 43 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 44 45 predictor_->EnablePredictor(*network_prediction_enabled_); 46 if (prerender_manager_) 47 prerender_manager_->set_enabled(*network_prediction_enabled_); 48 if (spdy_disabled_.IsManaged()) 49 net::HttpStreamFactory::set_spdy_enabled(!*spdy_disabled_); 50} 51 52// static 53void NetPrefObserver::RegisterPrefs(PrefService* prefs) { 54 prefs->RegisterBooleanPref(prefs::kNetworkPredictionEnabled, 55 true, 56 PrefService::SYNCABLE_PREF); 57 prefs->RegisterBooleanPref(prefs::kDisableSpdy, 58 false, 59 PrefService::UNSYNCABLE_PREF); 60} 61