// 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_ANDROID_PROFILE_KEY_STARTUP_ACCESSOR_H_
#define CHROME_BROWSER_ANDROID_PROFILE_KEY_STARTUP_ACCESSOR_H_

#include "base/memory/raw_ptr.h"

class ProfileKey;

// The ProfileKeyStartupAccessor is a singleton class that exposes the
// pointer of the ProfileKey of the associated Profile in the ServiceManager
// only mode on Android. On Android, there is only one Profile, thus it is
// possible to use this accessor to get the associated ProfileKey in the reduced
// mode.
//
// Note: after the Profile is created, the ProfileKey should be obtained from
// Profile.
class ProfileKeyStartupAccessor {
 public:
  ProfileKeyStartupAccessor();

  static ProfileKeyStartupAccessor* GetInstance();

  // The |key_| should NOT be used after Profile is created.
  ProfileKey* profile_key() { return key_; }
  void SetProfileKey(ProfileKey* key);

  // Resets the |key_| when the Profile is created.
  void Reset();

 private:
  raw_ptr<ProfileKey> key_;
};

#endif  // CHROME_BROWSER_ANDROID_PROFILE_KEY_STARTUP_ACCESSOR_H_
