blob: 9bcc820b9f413d2c75cb4c1ded9e914dc50de6f0 [file] [log] [blame]
// 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_