Home | History | Annotate | Download | only in browser_context_keyed_service
      1 // Copyright (c) 2012 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.
      4 
      5 #ifndef COMPONENTS_BROWSER_CONTEXT_KEYED_SERVICE_BROWSER_CONTEXT_KEYED_SERVICE_H_
      6 #define COMPONENTS_BROWSER_CONTEXT_KEYED_SERVICE_BROWSER_CONTEXT_KEYED_SERVICE_H_
      7 
      8 #include "components/browser_context_keyed_service/browser_context_keyed_service_export.h"
      9 
     10 class BrowserContextKeyedServiceFactory;
     11 
     12 // Base class for all BrowserContextKeyedServices to allow for correct
     13 // destruction order.
     14 //
     15 // Many services that hang off BrowserContext have a two-pass shutdown. Many
     16 // subsystems need a first pass shutdown phase where they drop references. Not
     17 // all services will need this, so there's a default implementation. Only once
     18 // every system has been given a chance to drop references do we start deleting
     19 // objects.
     20 class BROWSER_CONTEXT_KEYED_SERVICE_EXPORT BrowserContextKeyedService {
     21  public:
     22   // The first pass is to call Shutdown on a BrowserContextKeyedService.
     23   virtual void Shutdown() {}
     24 
     25  protected:
     26   friend class BrowserContextKeyedServiceFactory;
     27 
     28   // The second pass is the actual deletion of each object.
     29   virtual ~BrowserContextKeyedService() {}
     30 };
     31 
     32 #endif  // COMPONENTS_BROWSER_CONTEXT_KEYED_SERVICE_BROWSER_CONTEXT_KEYED_SERVICE_H_
     33