browser_profile_type.cc 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2021 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. #include "components/profile_metrics/browser_profile_type.h"
  5. namespace {
  6. class ProfileTypeUserData : public base::SupportsUserData::Data {
  7. public:
  8. explicit ProfileTypeUserData(
  9. profile_metrics::BrowserProfileType browser_context_type)
  10. : browser_context_type_(browser_context_type) {}
  11. ProfileTypeUserData(const ProfileTypeUserData&) = delete;
  12. ProfileTypeUserData& operator=(const ProfileTypeUserData&) = delete;
  13. static const void* const kKey;
  14. profile_metrics::BrowserProfileType browser_context_type() const {
  15. return browser_context_type_;
  16. }
  17. private:
  18. const profile_metrics::BrowserProfileType browser_context_type_;
  19. };
  20. const void* const ProfileTypeUserData::kKey = &ProfileTypeUserData::kKey;
  21. } // namespace
  22. namespace profile_metrics {
  23. void SetBrowserProfileType(base::SupportsUserData* browser_context,
  24. BrowserProfileType type) {
  25. browser_context->SetUserData(ProfileTypeUserData::kKey,
  26. std::make_unique<ProfileTypeUserData>(type));
  27. }
  28. BrowserProfileType GetBrowserProfileType(
  29. const base::SupportsUserData* browser_context) {
  30. base::SupportsUserData::Data* data =
  31. browser_context->GetUserData(ProfileTypeUserData::kKey);
  32. return static_cast<ProfileTypeUserData*>(data)->browser_context_type();
  33. }
  34. } // namespace profile_metrics