Commit 838f53a6 authored by Jing Wang's avatar Jing Wang Committed by Commit Bot

Add a feature flag for each type of assistive personal info.

Now we can independently enable/disable each type, which is useful when
we rollout personal info experiment in stable.

Bug: 1042084
Change-Id: I2e355fa2fb00fddc2bb94cf66e5056153c205abe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2409684Reviewed-by: default avatarKeith Lee <keithlee@chromium.org>
Commit-Queue: Jing Wang <jiwan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#807370}
parent 991f1b67
...@@ -142,6 +142,8 @@ class NativeInputMethodEngineTest : public InProcessBrowserTest, ...@@ -142,6 +142,8 @@ class NativeInputMethodEngineTest : public InProcessBrowserTest,
NativeInputMethodEngineTest() : input_method_(this) { NativeInputMethodEngineTest() : input_method_(this) {
feature_list_.InitWithFeatures( feature_list_.InitWithFeatures(
/*enabled_features=*/{chromeos::features::kAssistPersonalInfo, /*enabled_features=*/{chromeos::features::kAssistPersonalInfo,
chromeos::features::kAssistPersonalInfoEmail,
chromeos::features::kAssistPersonalInfoName,
chromeos::features::kEmojiSuggestAddition}, chromeos::features::kEmojiSuggestAddition},
/*disabled_features=*/{}); /*disabled_features=*/{});
} }
...@@ -639,7 +641,7 @@ class NativeInputMethodEngineAssistiveOff : public InProcessBrowserTest { ...@@ -639,7 +641,7 @@ class NativeInputMethodEngineAssistiveOff : public InProcessBrowserTest {
public: public:
NativeInputMethodEngineAssistiveOff() { NativeInputMethodEngineAssistiveOff() {
feature_list_.InitWithFeatures( feature_list_.InitWithFeatures(
/*enabled_features=*/{}, /*enabled_features=*/{chromeos::features::kAssistPersonalInfoName},
/*disabled_features=*/{chromeos::features::kAssistPersonalInfo, /*disabled_features=*/{chromeos::features::kAssistPersonalInfo,
chromeos::features::kEmojiSuggestAddition}); chromeos::features::kEmojiSuggestAddition});
} }
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "chrome/browser/extensions/api/input_ime/input_ime_api.h" #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
#include "ash/public/cpp/ash_pref_names.h" #include "ash/public/cpp/ash_pref_names.h"
#include "base/feature_list.h"
#include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_functions.h"
#include "base/no_destructor.h" #include "base/no_destructor.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
...@@ -17,6 +18,7 @@ ...@@ -17,6 +18,7 @@
#include "chrome/browser/chromeos/input_method/ui/suggestion_details.h" #include "chrome/browser/chromeos/input_method/ui/suggestion_details.h"
#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client.h" #include "chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client.h"
#include "chromeos/constants/chromeos_features.h"
#include "chromeos/constants/chromeos_pref_names.h" #include "chromeos/constants/chromeos_pref_names.h"
#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/data_model/autofill_profile.h"
#include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/personal_data_manager.h"
...@@ -133,36 +135,54 @@ AssistiveType ProposePersonalInfoAssistiveAction(const base::string16& text) { ...@@ -133,36 +135,54 @@ AssistiveType ProposePersonalInfoAssistiveAction(const base::string16& text) {
if (!(RE2::FullMatch(lower_case_utf8_text, ".* $"))) { if (!(RE2::FullMatch(lower_case_utf8_text, ".* $"))) {
return AssistiveType::kGenericAction; return AssistiveType::kGenericAction;
} }
if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex, if (base::FeatureList::IsEnabled(
kEmailRegex, kTriggersRegex))) { chromeos::features::kAssistPersonalInfoAddress)) {
return AssistiveType::kPersonalEmail; if (RE2::FullMatch(
} lower_case_utf8_text,
if (RE2::FullMatch(lower_case_utf8_text, base::StringPrintf(".*%s%s%s", kSingleOrPluralSubjectRegex,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex, kAddressRegex, kTriggersRegex))) {
kNameRegex, kTriggersRegex))) { return AssistiveType::kPersonalAddress;
return AssistiveType::kPersonalName; }
}
if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleOrPluralSubjectRegex,
kAddressRegex, kTriggersRegex))) {
return AssistiveType::kPersonalAddress;
} }
if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex, if (base::FeatureList::IsEnabled(
kPhoneNumberRegex, kTriggersRegex))) { chromeos::features::kAssistPersonalInfoEmail)) {
return AssistiveType::kPersonalPhoneNumber; if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex,
kEmailRegex, kTriggersRegex))) {
return AssistiveType::kPersonalEmail;
}
} }
if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex, if (base::FeatureList::IsEnabled(
kFirstNameRegex, kTriggersRegex))) { chromeos::features::kAssistPersonalInfoName)) {
return AssistiveType::kPersonalFirstName; if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex,
kNameRegex, kTriggersRegex))) {
return AssistiveType::kPersonalName;
}
if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex,
kFirstNameRegex, kTriggersRegex))) {
return AssistiveType::kPersonalFirstName;
}
if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex,
kLastNameRegex, kTriggersRegex))) {
return AssistiveType::kPersonalLastName;
}
} }
if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex, if (base::FeatureList::IsEnabled(
kLastNameRegex, kTriggersRegex))) { chromeos::features::kAssistPersonalInfoPhoneNumber)) {
return AssistiveType::kPersonalLastName; if (RE2::FullMatch(lower_case_utf8_text,
base::StringPrintf(".*%s%s%s", kSingleSubjectRegex,
kPhoneNumberRegex, kTriggersRegex))) {
return AssistiveType::kPersonalPhoneNumber;
}
} }
return AssistiveType::kGenericAction; return AssistiveType::kGenericAction;
} }
......
...@@ -57,10 +57,30 @@ const base::Feature kAutoScreenBrightness{"AutoScreenBrightness", ...@@ -57,10 +57,30 @@ const base::Feature kAutoScreenBrightness{"AutoScreenBrightness",
const base::Feature kAssistAutoCorrect{"AssistAutoCorrect", const base::Feature kAssistAutoCorrect{"AssistAutoCorrect",
base::FEATURE_ENABLED_BY_DEFAULT}; base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable assist personal information. // Controls whether to enable assistive personal information.
const base::Feature kAssistPersonalInfo{"AssistPersonalInfo", const base::Feature kAssistPersonalInfo{"AssistPersonalInfo",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to suggest addresses in assistive personal information. This
// is only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoAddress{
"AssistPersonalInfoAddress", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to suggest emails in assistive personal information. This is
// only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoEmail{"AssistPersonalInfoEmail",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to suggest names in assistive personal information. This is
// only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoName{"AssistPersonalInfoName",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to suggest phone numbers in assistive personal information.
// This is only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoPhoneNumber{
"AssistPersonalInfoPhoneNumber", base::FEATURE_DISABLED_BY_DEFAULT};
// Displays the avatar toolbar button and the profile menu. // Displays the avatar toolbar button and the profile menu.
// https://crbug.com/1041472 // https://crbug.com/1041472
extern const base::Feature kAvatarToolbarButton{ extern const base::Feature kAvatarToolbarButton{
......
...@@ -36,6 +36,14 @@ extern const base::Feature kAssistAutoCorrect; ...@@ -36,6 +36,14 @@ extern const base::Feature kAssistAutoCorrect;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kAssistPersonalInfo; extern const base::Feature kAssistPersonalInfo;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kAssistPersonalInfoAddress;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kAssistPersonalInfoEmail;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kAssistPersonalInfoName;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kAssistPersonalInfoPhoneNumber;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kAvatarToolbarButton; extern const base::Feature kAvatarToolbarButton;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kBetterUpdateScreen; extern const base::Feature kBetterUpdateScreen;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment