| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_PROFILES_PROFILE_OBSERVER_H_ |
| #define CHROME_BROWSER_PROFILES_PROFILE_OBSERVER_H_ |
| |
| #include "base/observer_list_types.h" |
| |
| class Profile; |
| |
| class ProfileObserver : public base::CheckedObserver { |
| public: |
| // The observed profile has spawned a new off the record profile (whether |
| // owned or independent). This is called just before ownership of the new |
| // OTR profile is taken by the original profile or the |
| // IndependentOTRProfileManager, so |original_profile->GetOffRecordProfile()| |
| // should not be called, but |off_the_record->GetOriginalProfile()| will |
| // return |original_profile|. |
| virtual void OnOffTheRecordProfileCreated(Profile* off_the_record) {} |
| |
| // The observed profile will be destroyed soon. All KeyedServices are still |
| // valid. The shutdown sequence for a profile is: |
| // 1. Profile destruction is scheduled via ProfileDestroyer |
| // 2. OnProfileWillBeDestroyed called for |profile| |
| // 3. If there are dangling RPHs, wait for them to be deleted. This has a |
| // 1-2s timeout depending on the platform. |
| // 4. OTR profile (if any) goes through shutdown in same sequence, skipping |
| // step 3 |
| // 5. KeyedServices are shut down for |profile| |
| virtual void OnProfileWillBeDestroyed(Profile* profile) {} |
| |
| // The observed profile has now finished being initialized. This is called |
| // after notifying any delegate that profile initialization is completed, and |
| // thus assuming the profile is valid, will be triggered after |
| // ProfileManagerObserver::OnProfileAdded, and is not called for off the |
| // record profiles. |
| virtual void OnProfileInitializationComplete(Profile* profile) {} |
| }; |
| |
| #endif // CHROME_BROWSER_PROFILES_PROFILE_OBSERVER_H_ |