blob: b075e8d4dff284a3541a45f2a4fd08a14c4fce7b [file]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/commerce/core/feature_utils.h"
#include "base/feature_list.h"
#include "components/commerce/core/account_checker.h"
#include "components/commerce/core/commerce_feature_list.h"
#include "components/commerce/core/pref_names.h"
#include "components/optimization_guide/core/feature_registry/feature_registration.h"
#include "components/optimization_guide/core/optimization_guide_features.h"
#include "components/prefs/pref_service.h"
#include "components/sync/base/data_type.h"
#include "components/sync/base/user_selectable_type.h"
namespace commerce {
bool IsShoppingListEligible(AccountChecker* account_checker) {
if (!commerce::IsRegionLockedFeatureEnabled(kShoppingList,
account_checker->GetCountry(),
account_checker->GetLocale())) {
return false;
}
if (!account_checker->GetPrefs() ||
!IsShoppingListAllowedForEnterprise(account_checker->GetPrefs())) {
return false;
}
// Make sure the user allows subscriptions to be made and that we can fetch
// store data.
if (!account_checker || !account_checker->IsSignedIn() ||
!account_checker->IsSyncTypeEnabled(
syncer::UserSelectableType::kBookmarks) ||
!account_checker->IsAnonymizedUrlDataCollectionEnabled() ||
account_checker->IsSubjectToParentalControls()) {
return false;
}
return true;
}
bool IsPriceInsightsApiEnabled(AccountChecker* account_checker) {
return account_checker && commerce::IsRegionLockedFeatureEnabled(
kPriceInsights, account_checker->GetCountry(),
account_checker->GetLocale());
}
bool IsPriceInsightsEligible(AccountChecker* account_checker) {
return IsPriceInsightsApiEnabled(account_checker) &&
account_checker->IsAnonymizedUrlDataCollectionEnabled();
}
bool IsSubscriptionsApiEnabled(AccountChecker* account_checker) {
return IsRegionLockedFeatureEnabled(kSubscriptionsApi,
account_checker->GetCountry(),
account_checker->GetLocale());
}
bool IsPriceAnnotationsEnabled(AccountChecker* account_checker) {
return account_checker &&
commerce::IsRegionLockedFeatureEnabled(kPriceAnnotations,
account_checker->GetCountry(),
account_checker->GetLocale());
}
bool IsDiscountInfoApiEnabled(AccountChecker* account_checker) {
return account_checker &&
commerce::IsRegionLockedFeatureEnabled(kEnableDiscountInfoApi,
account_checker->GetCountry(),
account_checker->GetLocale());
}
bool IsDiscountEligibleToShowOnNavigation(AccountChecker* account_checker) {
return IsDiscountInfoApiEnabled(account_checker) &&
account_checker->IsSignedIn() &&
account_checker->IsAnonymizedUrlDataCollectionEnabled();
}
bool IsMerchantViewerEnabled(AccountChecker* account_checker) {
return account_checker &&
commerce::IsRegionLockedFeatureEnabled(kCommerceMerchantViewer,
account_checker->GetCountry(),
account_checker->GetLocale());
}
bool IsShoppingPageTypesApiEnabled(AccountChecker* account_checker) {
return account_checker &&
commerce::IsRegionLockedFeatureEnabled(kShoppingPageTypes,
account_checker->GetCountry(),
account_checker->GetLocale());
}
bool IsDiscountAutofillEnabled(AccountChecker* account_checker) {
return account_checker && account_checker->IsSignedIn() &&
account_checker->IsAnonymizedUrlDataCollectionEnabled() &&
commerce::IsRegionLockedFeatureEnabled(kDiscountAutofill,
account_checker->GetCountry(),
account_checker->GetLocale());
}
} // namespace commerce