// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "services/network/trust_tokens/pending_trust_token_store.h" namespace network { PendingTrustTokenStore::PendingTrustTokenStore() = default; PendingTrustTokenStore::~PendingTrustTokenStore() = default; void PendingTrustTokenStore::OnStoreReady( std::unique_ptr store) { DCHECK(store); DCHECK(!store_); store_ = std::move(store); ExecuteAll(); } void PendingTrustTokenStore::ExecuteOrEnqueue( base::OnceCallback fn) { if (store_) { std::move(fn).Run(store_.get()); return; } queue_.push_back(std::move(fn)); } void PendingTrustTokenStore::ExecuteAll() { DCHECK(store_); while (!queue_.empty()) { std::move(queue_.front()).Run(store_.get()); queue_.pop_front(); } } } // namespace network