blob: 3ae58bc3dfbe701c0bdbe623a9f9c6fc63286209 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/ui/autofill/features.h"
#import "base/metrics/field_trial_params.h"
#import "ui/base/device_form_factor.h"
namespace autofill::features {
BASE_FEATURE(kAutofillBrandingIOS,
"AutofillBrandingIOS",
base::FEATURE_DISABLED_BY_DEFAULT);
const char kAutofillBrandingIOSParamFrequencyTypeTwice[] = "twice";
const char kAutofillBrandingIOSParamFrequencyTypeUntilInteracted[] =
"until-interacted";
const char kAutofillBrandingIOSParamFrequencyTypeDismissWhenInteracted[] =
"dismiss-when-interacted";
const char kAutofillBrandingIOSParamFrequencyTypeAlwaysShowAndDismiss[] =
"always-show-and-dismiss";
const char kAutofillBrandingIOSParamFrequencyTypeAlways[] = "always";
const char kAutofillBrandingIOSParamFrequencyTypePhone[] =
"ios-autofill-branding-frequency-type-phone";
const char kAutofillBrandingIOSParamFrequencyTypeTablet[] =
"ios-autofill-branding-frequency-type-tablet";
constexpr base::FeatureParam<AutofillBrandingFrequencyType>::Option
kAutofillBrandingFrequencyTypeOptions[] = {
{AutofillBrandingFrequencyType::kTwice,
kAutofillBrandingIOSParamFrequencyTypeTwice},
{AutofillBrandingFrequencyType::kUntilInteracted,
kAutofillBrandingIOSParamFrequencyTypeUntilInteracted},
{AutofillBrandingFrequencyType::kDismissWhenInteracted,
kAutofillBrandingIOSParamFrequencyTypeDismissWhenInteracted},
{AutofillBrandingFrequencyType::kAlwaysShowAndDismiss,
kAutofillBrandingIOSParamFrequencyTypeAlwaysShowAndDismiss},
{AutofillBrandingFrequencyType::kAlways,
kAutofillBrandingIOSParamFrequencyTypeAlways},
};
constexpr base::FeatureParam<AutofillBrandingFrequencyType>
kAutofillBrandingFrequencyPhone{
&kAutofillBrandingIOS, kAutofillBrandingIOSParamFrequencyTypePhone,
/*default=*/AutofillBrandingFrequencyType::kTwice,
&kAutofillBrandingFrequencyTypeOptions};
constexpr base::FeatureParam<AutofillBrandingFrequencyType>
kAutofillBrandingFrequencyTablet{
&kAutofillBrandingIOS, kAutofillBrandingIOSParamFrequencyTypeTablet,
/*default=*/AutofillBrandingFrequencyType::kTwice,
&kAutofillBrandingFrequencyTypeOptions};
AutofillBrandingFrequencyType GetAutofillBrandingFrequencyType() {
if (base::FeatureList::IsEnabled(kAutofillBrandingIOS)) {
return ui::GetDeviceFormFactor() ==
ui::DeviceFormFactor::DEVICE_FORM_FACTOR_PHONE
? kAutofillBrandingFrequencyPhone.Get()
: kAutofillBrandingFrequencyTablet.Get();
}
return AutofillBrandingFrequencyType::kNever;
}
bool ShouldAutofillBrandingDismissWithAnimation() {
switch (GetAutofillBrandingFrequencyType()) {
case AutofillBrandingFrequencyType::kDismissWhenInteracted:
case AutofillBrandingFrequencyType::kAlwaysShowAndDismiss:
return true;
case AutofillBrandingFrequencyType::kNever:
case AutofillBrandingFrequencyType::kTwice:
case AutofillBrandingFrequencyType::kUntilInteracted:
case AutofillBrandingFrequencyType::kAlways:
return false;
}
}
} // namespace autofill::features