15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/invalidation/ticl_profile_settings_provider.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/bind.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/bind_helpers.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/command_line.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/prefs/pref_service.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/profiles/profile.h" 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/services/gcm/gcm_profile_service.h" 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/common/chrome_switches.h" 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/common/pref_names.h" 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace invalidation { 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTiclProfileSettingsProvider::TiclProfileSettingsProvider(Profile* profile) 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu : profile_(profile) { 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu registrar_.Init(profile->GetPrefs()); 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu registrar_.Add( 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu prefs::kInvalidationServiceUseGCMChannel, 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Bind(&TiclProfileSettingsProvider::FireOnUseGCMChannelChanged, 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Unretained(this))); 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu registrar_.Add( 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu prefs::kGCMChannelEnabled, 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Bind(&TiclProfileSettingsProvider::FireOnUseGCMChannelChanged, 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Unretained(this))); 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTiclProfileSettingsProvider::~TiclProfileSettingsProvider() { 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liubool TiclProfileSettingsProvider::UseGCMChannel() const { 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (!gcm::GCMProfileService::IsGCMEnabled(profile_)) { 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Do not try to use GCM channel if GCM is disabled. 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return false; 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (profile_->GetPrefs()->GetBoolean( 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu prefs::kInvalidationServiceUseGCMChannel)) { 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Use GCM channel if it was enabled via prefs. 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return true; 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (CommandLine::ForCurrentProcess()->HasSwitch( 475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu switches::kInvalidationUseGCMChannel)) { 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Use GCM channel if it was enabled via a command-line switch. 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return true; 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // By default, do not use GCM channel. 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return false; 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace invalidation 57