1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_TABS_PINNED_TAB_SERVICE_FACTORY_H_ 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_TABS_PINNED_TAB_SERVICE_FACTORY_H_ 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/compiler_specific.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/singleton.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/profiles/profile_keyed_service_factory.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass PinnedTabService; 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Profile; 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Singleton that owns all PinnedTabServices and associates them with Profiles. 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Listens for the Profile's destruction notification and cleans up the 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// associated PinnedTabService. 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass PinnedTabServiceFactory : public ProfileKeyedServiceFactory { 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Returns the PinnedTabService that tracks pinning changes for |profile|. 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static PinnedTabService* GetForProfile(Profile* profile); 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static PinnedTabServiceFactory* GetInstance(); 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen friend struct DefaultSingletonTraits<PinnedTabServiceFactory>; 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PinnedTabServiceFactory(); 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~PinnedTabServiceFactory(); 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // ProfileKeyedServiceFactory: 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ProfileKeyedService* BuildServiceInstanceFor( 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Profile* profile) const OVERRIDE; 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // CHROME_BROWSER_TABS_PINNED_TAB_SERVICE_FACTORY_H_ 37