blob: b856144102d48efd21a4b85695fddf8ad47d8aee [file] [log] [blame]
// Copyright 2022 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_ORIGIN_TRIALS_TEST_TEST_PERSISTENCE_PROVIDER_H_
#define COMPONENTS_ORIGIN_TRIALS_TEST_TEST_PERSISTENCE_PROVIDER_H_
#include <map>
#include <string>
#include "base/containers/flat_set.h"
#include "components/origin_trials/common/origin_trials_persistence_provider.h"
#include "components/origin_trials/common/persisted_trial_token.h"
#include "url/origin.h"
namespace origin_trials::test {
// Class that provides in-memory implementation of
// OriginTrialsPersistenceProvider to be used for testing.
class TestPersistenceProvider : public OriginTrialsPersistenceProvider {
public:
TestPersistenceProvider();
TestPersistenceProvider(const TestPersistenceProvider&) = delete;
TestPersistenceProvider(const TestPersistenceProvider&&) = delete;
~TestPersistenceProvider() override;
// OriginTrialsPersistenceProvider
base::flat_set<origin_trials::PersistedTrialToken> GetPersistentTrialTokens(
const url::Origin& origin) override;
SiteOriginTrialTokens GetPotentialPersistentTrialTokens(
const url::Origin& origin) override;
void SavePersistentTrialTokens(
const url::Origin& origin,
const base::flat_set<origin_trials::PersistedTrialToken>& tokens)
override;
void ClearPersistedTokens() override;
private:
std::map<url::Origin, base::flat_set<origin_trials::PersistedTrialToken>>
storage_;
std::map<SiteKey, base::flat_set<url::Origin>> sitekey_map_;
void UpdateSiteToOriginsMap(const url::Origin& origin, bool insert);
};
} // namespace origin_trials::test
#endif // COMPONENTS_ORIGIN_TRIALS_TEST_TEST_PERSISTENCE_PROVIDER_H_