blob: 9188d7de89aca2f254334a27ab2c9c391c76d22d [file] [log] [blame]
// 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_PRIVACY_BUDGET_INSPECTABLE_IDENTIFIABILITY_STUDY_STATE_H_
#define CHROME_BROWSER_PRIVACY_BUDGET_INSPECTABLE_IDENTIFIABILITY_STUDY_STATE_H_
#include "base/containers/flat_set.h"
#include "chrome/browser/privacy_budget/identifiability_study_group_settings.h"
#include "chrome/browser/privacy_budget/identifiability_study_state.h"
#include "chrome/browser/privacy_budget/representative_surface_set.h"
#include "chrome/browser/privacy_budget/surface_set_valuation.h"
#include "chrome/common/privacy_budget/types.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
namespace test_utils {
// This class is a friend of IdentifiabilityStudyState and can reach into the
// internals.
class InspectableIdentifiabilityStudyState : public IdentifiabilityStudyState {
public:
explicit InspectableIdentifiabilityStudyState(PrefService* pref_service);
const SurfaceSetValuation& valuation() const { return valuation_; }
const SurfaceSetWithValuation& active_surfaces() const {
return active_surfaces_;
}
const OrderPreservingSet<blink::IdentifiableSurface>& seen_surfaces() const {
return seen_surfaces_;
}
const base::flat_set<OffsetType>& selected_offsets() const {
return selected_offsets_;
}
int active_surface_budget() const { return active_surface_budget_; }
int selected_block_offset() const { return selected_block_offset_; }
const IdentifiabilityStudyGroupSettings& group_settings() const {
return settings_;
}
bool meta_experiment_active() const { return meta_experiment_active_; }
void SelectAllOffsetsForTesting();
// These are exposed for testing.
using IdentifiabilityStudyState::AdjustForDroppedOffsets;
using IdentifiabilityStudyState::kMaxSelectedSurfaceOffset;
using IdentifiabilityStudyState::StripDisallowedSurfaces;
};
} // namespace test_utils
#endif // CHROME_BROWSER_PRIVACY_BUDGET_INSPECTABLE_IDENTIFIABILITY_STUDY_STATE_H_