chromium/components/plus_addresses/features.cc

// Copyright 2023 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/plus_addresses/features.h"

#include "base/feature_list.h"
#include "base/time/time.h"

namespace plus_addresses::features {

namespace {

constexpr char kEnterprisePlusAddressOAuthScopeName[] =;
constexpr char kEnterprisePlusAddressServerUrlName[] =;
constexpr char kPlusAddressManagementUrlName[] =;
constexpr char kPlusAddressLearnMoreUrlName[] =;
constexpr char kPlusAddressExcludedSitesName[] =;
constexpr char kPlusAddressErrorReportUrlName[] =;
constexpr char kDisableForForbiddenUsersName[] =;

}  // namespace

#if BUILDFLAG(IS_ANDROID)
// When enabled, mobile manual fallbacks for addresses and passwords show plus
// address filling information.
BASE_FEATURE(kPlusAddressAndroidManualFallbackEnabled,
             "PlusAddressAndroidManualFallbackEnabled",
             base::FEATURE_DISABLED_BY_DEFAULT);
#endif  // BUILDFLAG(IS_ANDROID)

// When enabled, autofill stops overriding single field form fill suggestions
// with plus address suggestions. Instead, it shows them together in the same
// context menu.
BASE_FEATURE();

// When enabled, Chrome will fetch the blocklist data using the Component
// Updater and employ that for blocking Plus Addresses. Otherwise, the blocklist
// information is sourced from a Finch parameter.
BASE_FEATURE();

// Controls the enabled/disabled state of the experimental feature.
BASE_FEATURE();

const base::FeatureParam<std::string> kEnterprisePlusAddressOAuthScope{};
const base::FeatureParam<std::string> kEnterprisePlusAddressServerUrl{};
const base::FeatureParam<std::string> kPlusAddressManagementUrl{};
const base::FeatureParam<std::string> kPlusAddressLearnMoreUrl{};
const base::FeatureParam<std::string> kPlusAddressExcludedSites{};
const base::FeatureParam<std::string> kPlusAddressErrorReportUrl{};
const base::FeatureParam<bool> kDisableForForbiddenUsers{};

// When enabled, plus addresses are supported within the context menu.
BASE_FEATURE();

// When enabled, the `PlusAddressSettingService` will be consulted on whether
// to offer plus address creation.
BASE_FEATURE();

#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
// When enabled, users that have accepted the legal notice will see a
// streamlined flow for creating plus addresses that never leaves the Autofill
// popup.
BASE_FEATURE();
#endif  // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)

#if BUILDFLAG(IS_IOS)
// When enabled, mobile manual fallbacks for addresses and passwords show plus
// address filling information.
BASE_FEATURE(kPlusAddressIOSManualFallbackEnabled,
             "PlusAddressIOSManualFallbackEnabled",
             base::FEATURE_DISABLED_BY_DEFAULT);
#endif  // BUILDFLAG(IS_IOS)

// When enabled, plus address creation is offered on all email fields that are
// not a username field - even if they are on a login form or a change password
// form.
// Intended as a killswitch to protect against unexpected behavior.
// TODO: crbug.com/355398505 - clean up.
BASE_FEATURE();

// When enabled, we offer plus address creation on single username forms.
BASE_FEATURE();

// When enabled, plus addresses are preallocated to avoid having to query the
// server for every reserve call.
BASE_FEATURE();

// The minimum number of locally stored pre-allocated plus addresses. If the
// number slips below this threshold, more are requested.
extern const base::FeatureParam<int> kPlusAddressPreallocationMinimumSize(
    &kPlusAddressPreallocation,
    "minimum-size",
    10);

// When enabled, `GoogleGroupsManager::IsFeatureEnabledForProfile` is used to
// check whether `kPlusAddressesEnabled` is enabled. Used as a killswitch.
// TODO: crbug.com/348575889 - Clean up.
BASE_FEATURE();

#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
// When enabled, plus address settings on Desktop are nested under address
// autofill and the label for the autofill settings entry gains a subtitle.
BASE_FEATURE();
#endif  // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)

// When enabled, the plus address creation dialogs or bottom sheets include
// extended feature description and usage notice.
BASE_FEATURE();

}  // namespace plus_addresses::features