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_PROFILES_PROFILE_KEYED_SERVICE_H_ 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_PROFILES_PROFILE_KEYED_SERVICE_H_ 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Base class for all ProfileKeyedServices to allow for correct destruction 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// order. 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Many services that hang off Profile have a two-pass shutdown. Many 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// subsystems need a first pass shutdown phase where they drop references. Not 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// all services will need this, so there's a default implementation. Only once 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// every system has been given a chance to drop references do we start deleting 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// objects. 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ProfileKeyedService { 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The first pass is to call Shutdown on a ProfileKeyedService. 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void Shutdown() {} 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The second pass is the actual deletion of each object. 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~ProfileKeyedService() {} 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // CHROME_BROWSER_PROFILES_PROFILE_KEYED_SERVICE_H_ 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 27