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#include "chrome/browser/invalidation/ticl_profile_settings_provider.h" 6 7#include "base/bind.h" 8#include "base/bind_helpers.h" 9#include "base/command_line.h" 10#include "base/prefs/pref_service.h" 11#include "chrome/browser/profiles/profile.h" 12#include "chrome/browser/services/gcm/gcm_profile_service.h" 13#include "chrome/common/chrome_switches.h" 14#include "chrome/common/pref_names.h" 15 16namespace invalidation { 17 18TiclProfileSettingsProvider::TiclProfileSettingsProvider(Profile* profile) 19 : profile_(profile) { 20 registrar_.Init(profile->GetPrefs()); 21 registrar_.Add( 22 prefs::kInvalidationServiceUseGCMChannel, 23 base::Bind(&TiclProfileSettingsProvider::FireOnUseGCMChannelChanged, 24 base::Unretained(this))); 25 registrar_.Add( 26 prefs::kGCMChannelEnabled, 27 base::Bind(&TiclProfileSettingsProvider::FireOnUseGCMChannelChanged, 28 base::Unretained(this))); 29} 30 31TiclProfileSettingsProvider::~TiclProfileSettingsProvider() { 32} 33 34bool TiclProfileSettingsProvider::UseGCMChannel() const { 35 if (!gcm::GCMProfileService::IsGCMEnabled(profile_)) { 36 // Do not try to use GCM channel if GCM is disabled. 37 return false; 38 } 39 40 if (profile_->GetPrefs()->GetBoolean( 41 prefs::kInvalidationServiceUseGCMChannel)) { 42 // Use GCM channel if it was enabled via prefs. 43 return true; 44 } 45 46 if (CommandLine::ForCurrentProcess()->HasSwitch( 47 switches::kInvalidationUseGCMChannel)) { 48 // Use GCM channel if it was enabled via a command-line switch. 49 return true; 50 } 51 52 // By default, do not use GCM channel. 53 return false; 54} 55 56} // namespace invalidation 57