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