Home | History | Annotate | Download | only in invalidation
      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