1 // Copyright 2014 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.
5 #ifndef COMPONENTS_KEYED_SERVICE_CORE_KEYED_SERVICE_H_
6 #define COMPONENTS_KEYED_SERVICE_CORE_KEYED_SERVICE_H_
8 #include "components/keyed_service/core/keyed_service_export.h"
10 // Interface for keyed services that support two-phase destruction order.
12 // Two-phase shutdown allows keyed services to have a first pass shutdown phase
13 // where they drop references. Not all services will need this, so there's a
14 // default implementation. Only once every service has been given a chance to
15 // drop references are services deleted.
16 class KEYED_SERVICE_EXPORT KeyedService
{
18 // The first pass is to call Shutdown on a KeyedService.
19 virtual void Shutdown() {}
21 // The second pass is the actual deletion of each object.
22 virtual ~KeyedService() {}
25 #endif // COMPONENTS_KEYED_SERVICE_CORE_KEYED_SERVICE_H_