blob: 586c9702e762123756d4d33d3f80732c4a63199b [file] [log] [blame]
// 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.
#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_SCOPED_SWITCH_SAMPLE_COLLECTOR_H_
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_SCOPED_SWITCH_SAMPLE_COLLECTOR_H_
#include "base/component_export.h"
#include "third_party/blink/public/common/common_export.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_sample_collector.h"
namespace blink {
namespace test {
// ***NOTE ***
// If you are looking for an intropspectable `IdentifiabilitySampleCollector`
// for testing, you are probably looking for
// `ScopedIdentifiabilityTestSampleCollector` instead.
//
// `IdentifiabilitySampleCollector` is a per-process singleton meant to be
// accessible from anywhere and from any thread. For testing purposes, however,
// it would be convenient to swap out the default collector and instead use
// a test stand-in.
//
// `ScopedSwitchSampleCollector` sets the default sample collector to
// a replacement object for the duration of the `ScopedSwitchSampleCollector`'s
// lifetime.
//
// Example usage:
//
// TEST(MyTest, Something) {
// MyFakeSampleCollector collector;
// ScopedSwitchSampleCollector scoped_default(&collector);
// ...
// }
//
// `ScopedSwitchSampleCollector` does not nest. Instantiating a new object while
// there's an active `ScopedSwitchSampleCollector` isn't allowed and will
// `DCHECK` on debug builds.
class COMPONENT_EXPORT(PRIVACY_BUDGET_TEST_SUPPORT)
ScopedSwitchSampleCollector {
public:
// Sets `replacement` as the default `IdentifiabilitySampleCollector` for the
// duration of this object's lifetime. `replacement` must outlive this object.
explicit ScopedSwitchSampleCollector(
IdentifiabilitySampleCollector* replacement);
~ScopedSwitchSampleCollector();
};
} // namespace test
} // namespace blink
#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_SCOPED_SWITCH_SAMPLE_COLLECTOR_H_