blob: d20a6c02fba933405837779f74c836d7f48a782f [file] [log] [blame]
// Copyright 2022 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_ENTERPRISE_IDENTIFIERS_PROFILE_ID_DELEGATE_IMPL_H_
#define CHROME_BROWSER_ENTERPRISE_IDENTIFIERS_PROFILE_ID_DELEGATE_IMPL_H_
#include <string>
#include "base/memory/raw_ptr.h"
#include "base/supports_user_data.h"
#include "components/enterprise/browser/identifiers/profile_id_delegate.h"
class Profile;
namespace enterprise {
// This class manages the collection of data needed for profile management,
// before the new profile is fully initialized. For now this class only contains
// the preset profile GUID for a newly created profile.
class PresetProfileManagementData : public base::SupportsUserData::Data {
public:
explicit PresetProfileManagementData(std::string preset_guid);
PresetProfileManagementData(const PresetProfileManagementData&) = delete;
PresetProfileManagementData& operator=(const PresetProfileManagementData&) =
delete;
~PresetProfileManagementData() override;
static PresetProfileManagementData* Get(Profile* profile);
void SetGuid(std::string guid);
void ClearGuid();
// The preset GUID will be used instead of a new random GUID when a profile is
// first created. This does not overwrite if a GUID has already been set for a
// profile.
const std::string& guid() const { return guid_; }
private:
std::string guid_;
};
// Implementation of the profile Id delegate.
class ProfileIdDelegateImpl : public ProfileIdDelegate {
public:
explicit ProfileIdDelegateImpl(Profile* profile);
ProfileIdDelegateImpl(const ProfileIdDelegateImpl&) = delete;
ProfileIdDelegateImpl& operator=(const ProfileIdDelegateImpl&) = delete;
~ProfileIdDelegateImpl() override;
// ProfileIdDelegate
std::string GetDeviceId() override;
static std::string GetId();
private:
const raw_ptr<Profile> profile_;
};
} // namespace enterprise
#endif // CHROME_BROWSER_ENTERPRISE_IDENTIFIERS_PROFILE_ID_DELEGATE_IMPL_H_