blob: ff98c9bba8f7603c198332cde2df833c11887678 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_KEYED_SERVICE_CORE_KEYED_SERVICE_H_
#define COMPONENTS_KEYED_SERVICE_CORE_KEYED_SERVICE_H_
#include "base/macros.h"
#include "components/keyed_service/core/keyed_service_export.h"
// Interface for keyed services that support two-phase destruction order.
//
// Two-phase shutdown allows keyed services to have a first pass shutdown phase
// where they drop references. Not all services will need this, so there's a
// default implementation. Only once every service has been given a chance to
// drop references are services deleted.
class KEYED_SERVICE_EXPORT KeyedService {
public:
KeyedService();
// The second pass is the actual deletion of each object.
virtual ~KeyedService();
// The first pass is to call Shutdown on a KeyedService.
virtual void Shutdown();
private:
DISALLOW_COPY_AND_ASSIGN(KeyedService);
};
#endif // COMPONENTS_KEYED_SERVICE_CORE_KEYED_SERVICE_H_