blob: f8fdb8f91d8b0ab17832f710421b06e8b6141c7e [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.
#include "chrome/common/privacy_budget/privacy_budget_settings_provider.h"
#include <memory>
#include "base/containers/contains.h"
#include "base/ranges/algorithm.h"
#include "chrome/common/privacy_budget/field_trial_param_conversions.h"
#include "chrome/common/privacy_budget/privacy_budget_features.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
PrivacyBudgetSettingsProvider::PrivacyBudgetSettingsProvider()
: blocked_surfaces_(
DecodeIdentifiabilityFieldTrialParam<IdentifiableSurfaceSet>(
features::kIdentifiabilityStudyBlockedMetrics.Get())),
blocked_types_(
DecodeIdentifiabilityFieldTrialParam<IdentifiableSurfaceTypeSet>(
features::kIdentifiabilityStudyBlockedTypes.Get())),
enabled_(base::FeatureList::IsEnabled(features::kIdentifiabilityStudy)) {}
PrivacyBudgetSettingsProvider::PrivacyBudgetSettingsProvider(
const PrivacyBudgetSettingsProvider&) = default;
PrivacyBudgetSettingsProvider::PrivacyBudgetSettingsProvider(
PrivacyBudgetSettingsProvider&&) = default;
PrivacyBudgetSettingsProvider::~PrivacyBudgetSettingsProvider() = default;
bool PrivacyBudgetSettingsProvider::IsActive() const {
return enabled_;
}
bool PrivacyBudgetSettingsProvider::IsAnyTypeOrSurfaceBlocked() const {
return !blocked_surfaces_.empty() || !blocked_types_.empty();
}
bool PrivacyBudgetSettingsProvider::IsSurfaceAllowed(
blink::IdentifiableSurface surface) const {
return !base::Contains(blocked_surfaces_, surface) &&
IsTypeAllowed(surface.GetType());
}
bool PrivacyBudgetSettingsProvider::IsTypeAllowed(
blink::IdentifiableSurface::Type type) const {
return !base::Contains(blocked_types_, type);
}