chromium/chrome/browser/lacros/identity_manager_lacros.h

// Copyright 2021 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_LACROS_IDENTITY_MANAGER_LACROS_H_
#define CHROME_BROWSER_LACROS_IDENTITY_MANAGER_LACROS_H_

#include "chromeos/crosapi/mojom/identity_manager.mojom.h"

#include "base/memory/weak_ptr.h"
#include "ui/gfx/image/image.h"

// This class can be used by lacros to access the identity manager crosapi.
// This API can be used to access properties of the identity manager which lives
// in ash, e.g. to access the name of an account that is not yet known by
// lacros.
class IdentityManagerLacros {
 public:
  IdentityManagerLacros();
  IdentityManagerLacros(const IdentityManagerLacros&) = delete;
  IdentityManagerLacros& operator=(const IdentityManagerLacros&) = delete;
  virtual ~IdentityManagerLacros();

  // Returns a piece of account information of the account with `gaia_id`.
  // If no such account is found, returns an empty value.
  virtual void GetAccountFullName(
      const std::string& gaia_id,
      crosapi::mojom::IdentityManager::GetAccountFullNameCallback callback);
  virtual void GetAccountImage(
      const std::string& gaia_id,
      crosapi::mojom::IdentityManager::GetAccountImageCallback callback);
  virtual void GetAccountEmail(
      const std::string& gaia_id,
      crosapi::mojom::IdentityManager::GetAccountEmailCallback callback);
  virtual void HasAccountWithPersistentError(
      const std::string& gaia_id,
      crosapi::mojom::IdentityManager::HasAccountWithPersistentErrorCallback
          callback);

 private:
  void RunFullNameCallback(
      crosapi::mojom::IdentityManager::GetAccountFullNameCallback callback,
      const std::string& name);
  void RunImageCallback(
      crosapi::mojom::IdentityManager::GetAccountImageCallback callback,
      const gfx::ImageSkia& image);
  void RunEmailCallback(
      crosapi::mojom::IdentityManager::GetAccountEmailCallback callback,
      const std::string& email);
  void RunPersistentErrorCallback(
      crosapi::mojom::IdentityManager::HasAccountWithPersistentErrorCallback
          callback,
      bool persistent_error);

  base::WeakPtrFactory<class IdentityManagerLacros> weak_ptr_factory_{this};
};

#endif  // CHROME_BROWSER_LACROS_IDENTITY_MANAGER_LACROS_H_