1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/drive/drive_notification_manager_factory.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/logging.h" 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/drive/drive_notification_manager.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/invalidation/profile_invalidation_provider_factory.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/sync/profile_sync_service.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/sync/profile_sync_service_factory.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/invalidation/profile_invalidation_provider.h" 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace drive { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// static 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)DriveNotificationManager* 20e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochDriveNotificationManagerFactory::FindForBrowserContext( 21e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch content::BrowserContext* context) { 22e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch return static_cast<DriveNotificationManager*>( 23e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch GetInstance()->GetServiceForBrowserContext(context, false)); 24e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 25e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 26e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// static 27e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochDriveNotificationManager* 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)DriveNotificationManagerFactory::GetForBrowserContext( 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) content::BrowserContext* context) { 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!ProfileSyncService::IsSyncEnabled()) 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return NULL; 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (!invalidation::ProfileInvalidationProviderFactory::GetForProfile( 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Profile::FromBrowserContext(context))) { 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Do not create a DriveNotificationManager for |context|s that do not 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // support invalidation. 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return NULL; 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return static_cast<DriveNotificationManager*>( 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GetInstance()->GetServiceForBrowserContext(context, true)); 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// static 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)DriveNotificationManagerFactory* 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)DriveNotificationManagerFactory::GetInstance() { 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Singleton<DriveNotificationManagerFactory>::get(); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)DriveNotificationManagerFactory::DriveNotificationManagerFactory() 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : BrowserContextKeyedServiceFactory( 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "DriveNotificationManager", 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowserContextDependencyManager::GetInstance()) { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DependsOn(ProfileSyncServiceFactory::GetInstance()); 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DependsOn(invalidation::ProfileInvalidationProviderFactory::GetInstance()); 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)DriveNotificationManagerFactory::~DriveNotificationManagerFactory() {} 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* DriveNotificationManagerFactory::BuildServiceInstanceFor( 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) content::BrowserContext* context) const { 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) invalidation::ProfileInvalidationProvider* invalidation_provider = 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) invalidation::ProfileInvalidationProviderFactory::GetForProfile( 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Profile::FromBrowserContext(context)); 64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DCHECK(invalidation_provider); 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DCHECK(invalidation_provider->GetInvalidationService()); 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return new DriveNotificationManager( 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) invalidation_provider->GetInvalidationService()); 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace drive 71