Merge pull request #20432 from brave/issues/did_override

Update Brave Ads did override feature switches
This commit is contained in:
Terry Mancey
2023-10-06 10:48:45 -05:00
committed by GitHub
2 changed files with 130 additions and 35 deletions
@@ -13,20 +13,33 @@
#include "base/containers/flat_set.h"
#include "base/ranges/algorithm.h"
#include "base/strings/string_split.h"
#include "brave/components/brave_ads/core/internal/account/confirmations/confirmations_feature.h"
#include "brave/components/brave_ads/core/internal/account/issuers/issuers_feature.h"
#include "brave/components/brave_ads/core/internal/account/statement/statement_feature.h"
#include "brave/components/brave_ads/core/internal/account/utility/redeem_payment_tokens/redeem_payment_tokens_feature.h"
#include "brave/components/brave_ads/core/internal/account/utility/tokens_feature.h"
#include "brave/components/brave_ads/core/internal/catalog/catalog_feature.h"
#include "brave/components/brave_ads/core/internal/common/subdivision/subdivision_feature.h"
#include "brave/components/brave_ads/core/internal/conversions/conversions_feature.h"
#include "brave/components/brave_ads/core/internal/history/history_feature.h"
#include "brave/components/brave_ads/core/internal/reminder/reminder_feature.h"
#include "brave/components/brave_ads/core/internal/serving/eligible_ads/eligible_ads_feature.h"
#include "brave/components/brave_ads/core/internal/serving/eligible_ads/exclusion_rules/exclusion_rule_feature.h"
#include "brave/components/brave_ads/core/internal/serving/inline_content_ad_serving_feature.h"
#include "brave/components/brave_ads/core/internal/serving/new_tab_page_ad_serving_feature.h"
#include "brave/components/brave_ads/core/internal/serving/notification_ad_serving_feature.h"
#include "brave/components/brave_ads/core/internal/serving/permission_rules/permission_rule_feature.h"
#include "brave/components/brave_ads/core/internal/serving/prediction/model_based/creative_ad_model_based_predictor_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/behavioral/anti_targeting/anti_targeting_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/behavioral/multi_armed_bandits/epsilon_greedy_bandit_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/behavioral/purchase_intent/purchase_intent_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/contextual/text_classification/text_classification_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/contextual/text_embedding/text_embedding_feature.h"
#include "brave/components/brave_ads/core/internal/units/inline_content_ad/inline_content_ad_feature.h"
#include "brave/components/brave_ads/core/internal/units/new_tab_page_ad/new_tab_page_ad_feature.h"
#include "brave/components/brave_ads/core/internal/units/promoted_content_ad/promoted_content_ad_feature.h"
#include "brave/components/brave_ads/core/internal/user/user_attention/user_activity/user_activity_feature.h"
#include "brave/components/brave_ads/core/public/transfer/transfer_feature.h"
#include "brave/components/brave_ads/core/public/units/notification_ad/notification_ad_feature.h"
#include "brave/components/brave_ads/core/public/units/search_result_ad/search_result_ad_feature.h"
#include "brave/components/brave_ads/core/public/user/user_attention/user_idle_detection/user_idle_detection_feature.h"
@@ -36,14 +49,35 @@ namespace brave_ads {
namespace {
const base::Feature* const kFeatures[] = {
&kAccountStatementFeature, &kAccountTokensFeature,
&kAntiTargetingFeature, &kConversionsFeature,
&kEligibleAdFeature, &kEpsilonGreedyBanditFeature,
&kExclusionRulesFeature, &kInlineContentAdFeature,
&kNewTabPageAdFeature, &kNotificationAdFeature,
&kPermissionRulesFeature, &kPromotedContentAdFeature,
&kPurchaseIntentFeature, &kSearchResultAdFeature,
&kTextClassificationFeature, &kUserActivityFeature,
&kAccountStatementFeature,
&kAccountTokensFeature,
&kAntiTargetingFeature,
&kCatalogFeature,
&kConfirmationsFeature,
&kConversionsFeature,
&kCreativeAdModelBasedPredictorFeature,
&kEligibleAdFeature,
&kEpsilonGreedyBanditFeature,
&kExclusionRulesFeature,
&kHistoryFeature,
&kInlineContentAdFeature,
&kInlineContentAdServingFeature,
&kIssuersFeature,
&kNewTabPageAdFeature,
&kNewTabPageAdServingFeature,
&kNotificationAdFeature,
&kNotificationAdServingFeature,
&kPermissionRulesFeature,
&kPromotedContentAdFeature,
&kPurchaseIntentFeature,
&kRedeemPaymentTokensFeature,
&kReminderFeature,
&kSearchResultAdFeature,
&kSubdivisionFeature,
&kTextClassificationFeature,
&kTextEmbeddingFeature,
&kTransferFeature,
&kUserActivityFeature,
&kUserIdleDetectionFeature};
constexpr char kFeaturesSeparators[] = ",:<";
@@ -13,23 +13,36 @@
#include "base/strings/strcat.h"
#include "base/strings/string_util.h"
#include "base/test/scoped_feature_list.h"
#include "brave/components/brave_ads/core/internal/account/confirmations/confirmations_feature.h"
#include "brave/components/brave_ads/core/internal/account/issuers/issuers_feature.h"
#include "brave/components/brave_ads/core/internal/account/statement/statement_feature.h"
#include "brave/components/brave_ads/core/internal/account/utility/redeem_payment_tokens/redeem_payment_tokens_feature.h"
#include "brave/components/brave_ads/core/internal/account/utility/tokens_feature.h"
#include "brave/components/brave_ads/core/internal/catalog/catalog_feature.h"
#include "brave/components/brave_ads/core/internal/common/subdivision/subdivision_feature.h"
#include "brave/components/brave_ads/core/internal/common/unittest/unittest_base.h"
#include "brave/components/brave_ads/core/internal/common/unittest/unittest_command_line_switch_info.h"
#include "brave/components/brave_ads/core/internal/common/unittest/unittest_command_line_switch_util.h"
#include "brave/components/brave_ads/core/internal/conversions/conversions_feature.h"
#include "brave/components/brave_ads/core/internal/history/history_feature.h"
#include "brave/components/brave_ads/core/internal/reminder/reminder_feature.h"
#include "brave/components/brave_ads/core/internal/serving/eligible_ads/eligible_ads_feature.h"
#include "brave/components/brave_ads/core/internal/serving/eligible_ads/exclusion_rules/exclusion_rule_feature.h"
#include "brave/components/brave_ads/core/internal/serving/inline_content_ad_serving_feature.h"
#include "brave/components/brave_ads/core/internal/serving/new_tab_page_ad_serving_feature.h"
#include "brave/components/brave_ads/core/internal/serving/notification_ad_serving_feature.h"
#include "brave/components/brave_ads/core/internal/serving/permission_rules/permission_rule_feature.h"
#include "brave/components/brave_ads/core/internal/serving/prediction/model_based/creative_ad_model_based_predictor_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/behavioral/anti_targeting/anti_targeting_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/behavioral/multi_armed_bandits/epsilon_greedy_bandit_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/behavioral/purchase_intent/purchase_intent_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/contextual/text_classification/text_classification_feature.h"
#include "brave/components/brave_ads/core/internal/targeting/contextual/text_embedding/text_embedding_feature.h"
#include "brave/components/brave_ads/core/internal/units/inline_content_ad/inline_content_ad_feature.h"
#include "brave/components/brave_ads/core/internal/units/new_tab_page_ad/new_tab_page_ad_feature.h"
#include "brave/components/brave_ads/core/internal/units/promoted_content_ad/promoted_content_ad_feature.h"
#include "brave/components/brave_ads/core/internal/user/user_attention/user_activity/user_activity_feature.h"
#include "brave/components/brave_ads/core/public/transfer/transfer_feature.h"
#include "brave/components/brave_ads/core/public/units/notification_ad/notification_ad_feature.h"
#include "brave/components/brave_ads/core/public/units/search_result_ad/search_result_ad_feature.h"
#include "brave/components/brave_ads/core/public/user/user_attention/user_idle_detection/user_idle_detection_feature.h"
@@ -48,39 +61,57 @@ struct ParamInfo final {
bool expected_did_override_from_command_line;
} const kTests[] = {
{{kFooBarSwitch, {}}, false},
{{::switches::kEnableFeatures, "FooBar"}, false},
{{::switches::kEnableFeatures,
// switches::kEnableFeatures:
{{switches::kEnableFeatures, {}}, false},
{{switches::kEnableFeatures, "FooBar"}, false},
{{switches::kEnableFeatures,
base::JoinString({"Foo", kUserActivityFeature.name, "Bar"}, ",")},
true},
{{::switches::kEnableFeatures,
{{switches::kEnableFeatures,
base::StrCat({kAntiTargetingFeature.name, ":param/value"})},
true},
{{::switches::kEnableFeatures,
base::StrCat(
{kEpsilonGreedyBanditFeature.name, "<TrialName:param/value"})},
{{switches::kEnableFeatures, base::StrCat({kEpsilonGreedyBanditFeature.name,
"<TrialName:param/value"})},
true},
{{::switches::kEnableFeatures,
{{switches::kEnableFeatures,
base::StrCat({kTextClassificationFeature.name,
"<TrialName.GroupName:param/value"})},
true},
{{::switches::kEnableFeatures, kAccountStatementFeature.name}, true},
{{::switches::kEnableFeatures, kAccountTokensFeature.name}, true},
{{::switches::kEnableFeatures, kAntiTargetingFeature.name}, true},
{{::switches::kEnableFeatures, kConversionsFeature.name}, true},
{{::switches::kEnableFeatures, kEligibleAdFeature.name}, true},
{{::switches::kEnableFeatures, kEpsilonGreedyBanditFeature.name}, true},
{{::switches::kEnableFeatures, kExclusionRulesFeature.name}, true},
{{::switches::kEnableFeatures, kInlineContentAdFeature.name}, true},
{{::switches::kEnableFeatures, kNewTabPageAdFeature.name}, true},
{{::switches::kEnableFeatures, kNotificationAdFeature.name}, true},
{{::switches::kEnableFeatures, kPermissionRulesFeature.name}, true},
{{::switches::kEnableFeatures, kPromotedContentAdFeature.name}, true},
{{::switches::kEnableFeatures, kPurchaseIntentFeature.name}, true},
{{::switches::kEnableFeatures, kSearchResultAdFeature.name}, true},
{{::switches::kEnableFeatures, kTextClassificationFeature.name}, true},
{{::switches::kEnableFeatures, kUserActivityFeature.name}, true},
{{::switches::kEnableFeatures, kUserIdleDetectionFeature.name}, true},
{{::switches::kEnableFeatures, {}}, false},
{{switches::kEnableFeatures, kAccountStatementFeature.name}, true},
{{switches::kEnableFeatures, kAccountTokensFeature.name}, true},
{{switches::kEnableFeatures, kAntiTargetingFeature.name}, true},
{{switches::kEnableFeatures, kCatalogFeature.name}, true},
{{switches::kEnableFeatures, kConfirmationsFeature.name}, true},
{{switches::kEnableFeatures, kConversionsFeature.name}, true},
{{switches::kEnableFeatures, kCreativeAdModelBasedPredictorFeature.name},
true},
{{switches::kEnableFeatures, kEligibleAdFeature.name}, true},
{{switches::kEnableFeatures, kEpsilonGreedyBanditFeature.name}, true},
{{switches::kEnableFeatures, kExclusionRulesFeature.name}, true},
{{switches::kEnableFeatures, kHistoryFeature.name}, true},
{{switches::kEnableFeatures, kInlineContentAdFeature.name}, true},
{{switches::kEnableFeatures, kInlineContentAdServingFeature.name}, true},
{{switches::kEnableFeatures, kIssuersFeature.name}, true},
{{switches::kEnableFeatures, kNewTabPageAdFeature.name}, true},
{{switches::kEnableFeatures, kNewTabPageAdServingFeature.name}, true},
{{switches::kEnableFeatures, kNotificationAdFeature.name}, true},
{{switches::kEnableFeatures, kNotificationAdServingFeature.name}, true},
{{switches::kEnableFeatures, kPermissionRulesFeature.name}, true},
{{switches::kEnableFeatures, kPromotedContentAdFeature.name}, true},
{{switches::kEnableFeatures, kPurchaseIntentFeature.name}, true},
{{switches::kEnableFeatures, kRedeemPaymentTokensFeature.name}, true},
{{switches::kEnableFeatures, kReminderFeature.name}, true},
{{switches::kEnableFeatures, kSearchResultAdFeature.name}, true},
{{switches::kEnableFeatures, kSubdivisionFeature.name}, true},
{{switches::kEnableFeatures, kTextClassificationFeature.name}, true},
{{switches::kEnableFeatures, kTextEmbeddingFeature.name}, true},
{{switches::kEnableFeatures, kTransferFeature.name}, true},
{{switches::kEnableFeatures, kUserActivityFeature.name}, true},
{{switches::kEnableFeatures, kUserIdleDetectionFeature.name}, true},
// variations::switches::kForceFieldTrialParams:
{{variations::switches::kForceFieldTrialParams, {}}, false},
{{variations::switches::kForceFieldTrialParams, "FooBar"}, false},
{{variations::switches::kForceFieldTrialParams,
base::JoinString({"Foo", kUserActivityFeature.name, "Bar"}, ",")},
@@ -92,8 +123,15 @@ struct ParamInfo final {
true},
{{variations::switches::kForceFieldTrialParams, kAntiTargetingFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kCatalogFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kConfirmationsFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kConversionsFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kCreativeAdModelBasedPredictorFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kEligibleAdFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
@@ -102,14 +140,27 @@ struct ParamInfo final {
{{variations::switches::kForceFieldTrialParams,
kExclusionRulesFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kHistoryFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kInlineContentAdFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kInlineContentAdServingFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kIssuersFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kNewTabPageAdFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kNewTabPageAdServingFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kNotificationAdFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kNotificationAdServingFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kPermissionRulesFeature.name},
true},
@@ -119,18 +170,28 @@ struct ParamInfo final {
{{variations::switches::kForceFieldTrialParams,
kPurchaseIntentFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kRedeemPaymentTokensFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kReminderFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kSearchResultAdFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kSubdivisionFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kTextClassificationFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kTextEmbeddingFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kTransferFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, kUserActivityFeature.name},
true},
{{variations::switches::kForceFieldTrialParams,
kUserIdleDetectionFeature.name},
true},
{{variations::switches::kForceFieldTrialParams, {}}, false}};
true}};
} // namespace