1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_FACTORY_H_ 6 #define CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_FACTORY_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/memory/singleton.h" 10 #include "chrome/browser/profiles/profile_keyed_service_factory.h" 11 12 class DesktopNotificationService; 13 class Profile; 14 15 // Singleton that owns all DesktopNotificationServices and associates them with 16 // Profiles. Listens for the Profile's destruction notification and cleans up 17 // the associated DesktopNotificationService. 18 class DesktopNotificationServiceFactory : public ProfileKeyedServiceFactory { 19 public: 20 // Returns the DesktopNotificationService that provides desktop notifications 21 // for |profile|. 22 static DesktopNotificationService* GetForProfile(Profile* profile); 23 24 static DesktopNotificationServiceFactory* GetInstance(); 25 26 private: 27 friend struct DefaultSingletonTraits<DesktopNotificationServiceFactory>; 28 29 DesktopNotificationServiceFactory(); 30 virtual ~DesktopNotificationServiceFactory(); 31 32 // ProfileKeyedServiceFactory: 33 virtual ProfileKeyedService* BuildServiceInstanceFor( 34 Profile* profile) const OVERRIDE; 35 // Use a separate desktop notification service for incognito. 36 virtual bool ServiceHasOwnInstanceInIncognito() OVERRIDE; 37 }; 38 39 #endif // CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_FACTORY_H_ 40