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 16 namespace invalidation { 17 18 TiclProfileSettingsProvider::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 31 TiclProfileSettingsProvider::~TiclProfileSettingsProvider() { 32 } 33 34 bool 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