#ifndef SERVICES_NETWORK_TRUST_TOKENS_TRUST_TOKEN_QUERY_ANSWERER_H_
#define SERVICES_NETWORK_TRUST_TOKENS_TRUST_TOKEN_QUERY_ANSWERER_H_
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "services/network/public/mojom/trust_tokens.mojom.h"
#include "services/network/trust_tokens/pending_trust_token_store.h"
#include "services/network/trust_tokens/suitable_trust_token_origin.h"
#include "services/network/trust_tokens/trust_token_store.h"
#include "url/origin.h"
namespace network {
class SynchronousTrustTokenKeyCommitmentGetter;
class TrustTokenQueryAnswerer : public mojom::TrustTokenQueryAnswerer {
public:
TrustTokenQueryAnswerer(
SuitableTrustTokenOrigin top_frame_origin,
PendingTrustTokenStore* pending_trust_token_store,
const SynchronousTrustTokenKeyCommitmentGetter* key_commitment_getter);
~TrustTokenQueryAnswerer() override;
TrustTokenQueryAnswerer(const TrustTokenQueryAnswerer&) = delete;
TrustTokenQueryAnswerer& operator=(const TrustTokenQueryAnswerer&) = delete;
void HasTrustTokens(const url::Origin& issuer,
HasTrustTokensCallback callback) override;
void HasRedemptionRecord(const url::Origin& issuer,
HasRedemptionRecordCallback callback) override;
private:
void AnswerTokenQueryWithStore(const SuitableTrustTokenOrigin& issuer,
HasTrustTokensCallback callback,
TrustTokenStore* trust_token_store) const;
void AnswerRedemptionQueryWithStore(const SuitableTrustTokenOrigin& issuer,
HasRedemptionRecordCallback callback,
TrustTokenStore* trust_token_store) const;
const SuitableTrustTokenOrigin top_frame_origin_;
raw_ptr<PendingTrustTokenStore> pending_trust_token_store_;
raw_ptr<const SynchronousTrustTokenKeyCommitmentGetter> const
key_commitment_getter_;
base::WeakPtrFactory<TrustTokenQueryAnswerer> weak_factory_{this};
};
}
#endif