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