blob: 21b5480f750435bee9d4e54a61a9c2d15ce9aa55 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_TRUSTED_VAULT_TRUSTED_VAULT_ACCESS_TOKEN_FETCHER_IMPL_H_
#define COMPONENTS_TRUSTED_VAULT_TRUSTED_VAULT_ACCESS_TOKEN_FETCHER_IMPL_H_
#include <memory>
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "components/trusted_vault/trusted_vault_access_token_fetcher.h"
namespace base {
class SequencedTaskRunner;
} // namespace base
namespace trusted_vault {
class TrustedVaultAccessTokenFetcherFrontend;
// Must be created on the UI thread, but can be used (and cloned) on any
// sequence.
class TrustedVaultAccessTokenFetcherImpl
: public TrustedVaultAccessTokenFetcher {
public:
explicit TrustedVaultAccessTokenFetcherImpl(
base::WeakPtr<TrustedVaultAccessTokenFetcherFrontend> frontend);
TrustedVaultAccessTokenFetcherImpl(
const TrustedVaultAccessTokenFetcherImpl& other) = delete;
TrustedVaultAccessTokenFetcherImpl& operator=(
const TrustedVaultAccessTokenFetcherImpl& other) = delete;
~TrustedVaultAccessTokenFetcherImpl() override;
// TrustedVaultAccessTokenFetcher implementation.
void FetchAccessToken(const CoreAccountId& account_id,
TokenCallback callback) override;
std::unique_ptr<TrustedVaultAccessTokenFetcher> Clone() override;
private:
TrustedVaultAccessTokenFetcherImpl(
base::WeakPtr<TrustedVaultAccessTokenFetcherFrontend> frontend,
scoped_refptr<base::SequencedTaskRunner> ui_thread_task_runner);
base::WeakPtr<TrustedVaultAccessTokenFetcherFrontend> frontend_;
scoped_refptr<base::SequencedTaskRunner> ui_thread_task_runner_;
};
} // namespace trusted_vault
#endif // COMPONENTS_TRUSTED_VAULT_TRUSTED_VAULT_ACCESS_TOKEN_FETCHER_IMPL_H_