Commit f733c15b authored by Jing Wang's avatar Jing Wang Committed by Commit Bot

Add more types to personal info suggester.

This is requested by our UX Claire. Add first name and last name, and
add one more way to trigger phone number.

Updated the unit test.

Test: tested with Chrome on Linux
Bug: 1042084
Change-Id: Ib9cd1185f8538f2655fc30a2a092de8aa27c4b7f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2210083Reviewed-by: default avatarDarren Shen <shend@chromium.org>
Commit-Queue: Jing Wang <jiwan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#771458}
parent fb2a2b5f
......@@ -72,6 +72,9 @@ bool AssistiveSuggester::IsActionEnabled(AssistiveType action) {
case AssistiveType::kPersonalAddress:
case AssistiveType::kPersonalPhoneNumber:
case AssistiveType::kPersonalName:
case AssistiveType::kPersonalNumber:
case AssistiveType::kPersonalFirstName:
case AssistiveType::kPersonalLastName:
// TODO: Use value from settings when crbug/1068457 is done.
return IsAssistPersonalInfoEnabled();
break;
......
......@@ -28,6 +28,9 @@ const char kAssistEmailPrefix[] = "my email is ";
const char kAssistNamePrefix[] = "my name is ";
const char kAssistAddressPrefix[] = "my address is ";
const char kAssistPhoneNumberPrefix[] = "my phone number is ";
const char kAssistNumberPrefix[] = "my number is ";
const char kAssistFirstNamePrefix[] = "my first name is ";
const char kAssistLastNamePrefix[] = "my last name is ";
const char kAnnounceShowTab[] = "Press tab to insert.";
constexpr base::TimeDelta kTtsShowDelay =
......@@ -86,6 +89,18 @@ AssistiveType ProposeAssistiveAction(const base::string16& text) {
base::CompareCase::INSENSITIVE_ASCII)) {
action = AssistiveType::kPersonalPhoneNumber;
}
if (base::EndsWith(text, base::UTF8ToUTF16(kAssistNumberPrefix),
base::CompareCase::INSENSITIVE_ASCII)) {
action = AssistiveType::kPersonalNumber;
}
if (base::EndsWith(text, base::UTF8ToUTF16(kAssistFirstNamePrefix),
base::CompareCase::INSENSITIVE_ASCII)) {
action = AssistiveType::kPersonalFirstName;
}
if (base::EndsWith(text, base::UTF8ToUTF16(kAssistLastNamePrefix),
base::CompareCase::INSENSITIVE_ASCII)) {
action = AssistiveType::kPersonalLastName;
}
return action;
}
......@@ -193,9 +208,16 @@ base::string16 PersonalInfoSuggester::GetSuggestion(
autofill::ServerFieldType::ADDRESS_HOME_STREET_ADDRESS);
break;
case AssistiveType::kPersonalPhoneNumber:
case AssistiveType::kPersonalNumber:
suggestion = profile->GetRawInfo(
autofill::ServerFieldType::PHONE_HOME_WHOLE_NUMBER);
break;
case AssistiveType::kPersonalFirstName:
suggestion = profile->GetRawInfo(autofill::ServerFieldType::NAME_FIRST);
break;
case AssistiveType::kPersonalLastName:
suggestion = profile->GetRawInfo(autofill::ServerFieldType::NAME_LAST);
break;
default:
NOTREACHED();
break;
......
......@@ -52,6 +52,8 @@ class TestSuggestionHandler : public SuggestionHandlerInterface {
const size_t confirmed_length) {
EXPECT_EQ(suggestion_text_, text);
EXPECT_EQ(confirmed_length_, confirmed_length);
suggestion_text_ = base::EmptyString16();
confirmed_length_ = 0;
}
void VerifyShowTab(const bool show_tab) { EXPECT_EQ(show_tab_, show_tab); }
......@@ -106,6 +108,12 @@ class PersonalInfoSuggesterTest : public testing::Test {
chrome_keyboard_controller_client_->set_keyboard_enabled_for_test(false);
}
void SendKeyboardEvent(std::string key) {
::input_method::InputMethodEngineBase::KeyboardEvent event;
event.key = key;
suggester_->HandleKeyEvent(event);
}
content::BrowserTaskEnvironment task_environment_{
base::test::TaskEnvironment::TimeSource::MOCK_TIME};
......@@ -120,7 +128,9 @@ class PersonalInfoSuggesterTest : public testing::Test {
std::unique_ptr<autofill::TestPersonalDataManager> personal_data_;
const base::string16 email_ = base::UTF8ToUTF16("johnwayne@me.xyz");
const base::string16 name_ = base::UTF8ToUTF16("John Wayne");
const base::string16 first_name_ = base::UTF8ToUTF16("John");
const base::string16 last_name_ = base::UTF8ToUTF16("Wayne");
const base::string16 full_name_ = base::UTF8ToUTF16("John Wayne");
const base::string16 address_ = base::UTF8ToUTF16("1 Dream Road Hollywood");
const base::string16 phone_number_ = base::UTF8ToUTF16("16505678910");
};
......@@ -140,14 +150,25 @@ TEST_F(PersonalInfoSuggesterTest, DoNotSuggestWhenVirtualKeyboardEnabled) {
suggestion_handler_->VerifySuggestion(base::EmptyString16(), 0);
}
TEST_F(PersonalInfoSuggesterTest, SuggestFullName) {
TEST_F(PersonalInfoSuggesterTest, SuggestNames) {
autofill::AutofillProfile autofill_profile(base::GenerateGUID(),
autofill::test::kEmptyOrigin);
autofill_profile.SetRawInfo(autofill::ServerFieldType::NAME_FULL, name_);
autofill_profile.SetRawInfo(autofill::ServerFieldType::NAME_FIRST,
first_name_);
autofill_profile.SetRawInfo(autofill::ServerFieldType::NAME_LAST, last_name_);
autofill_profile.SetRawInfo(autofill::ServerFieldType::NAME_FULL, full_name_);
personal_data_->AddProfile(autofill_profile);
suggester_->Suggest(base::UTF8ToUTF16("my first name is "));
suggestion_handler_->VerifySuggestion(first_name_, 0);
SendKeyboardEvent("Tab");
suggester_->Suggest(base::UTF8ToUTF16("my last name is "));
suggestion_handler_->VerifySuggestion(last_name_, 0);
SendKeyboardEvent("Tab");
suggester_->Suggest(base::UTF8ToUTF16("my name is "));
suggestion_handler_->VerifySuggestion(name_, 0);
suggestion_handler_->VerifySuggestion(full_name_, 0);
}
TEST_F(PersonalInfoSuggesterTest, SuggestAddress) {
......@@ -170,15 +191,17 @@ TEST_F(PersonalInfoSuggesterTest, SuggestPhoneNumber) {
suggester_->Suggest(base::UTF8ToUTF16("my phone number is "));
suggestion_handler_->VerifySuggestion(phone_number_, 0);
SendKeyboardEvent("Tab");
suggester_->Suggest(base::UTF8ToUTF16("my number is "));
suggestion_handler_->VerifySuggestion(phone_number_, 0);
}
TEST_F(PersonalInfoSuggesterTest, AcceptSuggestion) {
profile_->set_profile_name(base::UTF16ToUTF8(email_));
suggester_->Suggest(base::UTF8ToUTF16("my email is "));
::input_method::InputMethodEngineBase::KeyboardEvent event;
event.key = "Tab";
suggester_->HandleKeyEvent(event);
SendKeyboardEvent("Tab");
suggestion_handler_->VerifySuggestion(base::EmptyString16(), 0);
EXPECT_TRUE(suggestion_handler_->IsSuggestionAccepted());
......@@ -187,13 +210,11 @@ TEST_F(PersonalInfoSuggesterTest, AcceptSuggestion) {
TEST_F(PersonalInfoSuggesterTest, DismissSuggestion) {
autofill::AutofillProfile autofill_profile(base::GenerateGUID(),
autofill::test::kEmptyOrigin);
autofill_profile.SetRawInfo(autofill::ServerFieldType::NAME_FULL, name_);
autofill_profile.SetRawInfo(autofill::ServerFieldType::NAME_FULL, full_name_);
personal_data_->AddProfile(autofill_profile);
suggester_->Suggest(base::UTF8ToUTF16("my name is "));
::input_method::InputMethodEngineBase::KeyboardEvent event;
event.key = "Esc";
suggester_->HandleKeyEvent(event);
SendKeyboardEvent("Esc");
suggestion_handler_->VerifySuggestion(base::EmptyString16(), 0);
EXPECT_FALSE(suggestion_handler_->IsSuggestionAccepted());
}
......@@ -220,9 +241,7 @@ TEST_F(PersonalInfoSuggesterTest,
task_environment_.FastForwardBy(base::TimeDelta::FromMilliseconds(5000));
tts_handler_->VerifyAnnouncement("");
::input_method::InputMethodEngineBase::KeyboardEvent event;
event.key = "Tab";
suggester_->HandleKeyEvent(event);
SendKeyboardEvent("Tab");
task_environment_.FastForwardBy(base::TimeDelta::FromMilliseconds(5000));
tts_handler_->VerifyAnnouncement("");
}
......@@ -241,9 +260,7 @@ TEST_F(PersonalInfoSuggesterTest, AnnounceSpokenFeedbackWhenChromeVoxIsOn) {
base::StringPrintf("Suggested text %s. Press tab to insert.",
base::UTF16ToUTF8(email_).c_str()));
::input_method::InputMethodEngineBase::KeyboardEvent event;
event.key = "Tab";
suggester_->HandleKeyEvent(event);
SendKeyboardEvent("Tab");
task_environment_.FastForwardBy(base::TimeDelta::FromMilliseconds(200));
tts_handler_->VerifyAnnouncement(base::StringPrintf(
"Inserted suggestion %s.", base::UTF16ToUTF8(email_).c_str()));
......@@ -252,9 +269,7 @@ TEST_F(PersonalInfoSuggesterTest, AnnounceSpokenFeedbackWhenChromeVoxIsOn) {
TEST_F(PersonalInfoSuggesterTest, DoNotShowTabAfterMaxTabAcceptanceCount) {
for (int i = 0; i < kMaxTabAcceptanceCount; i++) {
suggester_->Suggest(base::UTF8ToUTF16("my email is "));
::input_method::InputMethodEngineBase::KeyboardEvent event;
event.key = "Tab";
suggester_->HandleKeyEvent(event);
SendKeyboardEvent("Tab");
suggestion_handler_->VerifyShowTab(true);
}
suggester_->Suggest(base::UTF8ToUTF16("my email is "));
......
......@@ -21,7 +21,10 @@ enum class AssistiveType {
kPersonalName = 4,
kEmoji = 5,
kAssistiveAutocorrect = 6,
kMaxValue = kAssistiveAutocorrect,
kPersonalNumber = 7,
kPersonalFirstName = 8,
kPersonalLastName = 9,
kMaxValue = kPersonalLastName,
};
enum class SuggestionStatus {
......
......@@ -34137,6 +34137,9 @@ Called by update_gpu_driver_bug_workaround_entries.py.-->
<int value="4" label="PERSONAL_NAME"/>
<int value="5" label="EMOJI"/>
<int value="6" label="ASSISTIVE_AUTOCORRECT"/>
<int value="7" label="PERSONAL_NUMBER"/>
<int value="8" label="PERSONAL_FIRST_NAME"/>
<int value="9" label="PERSONAL_LAST_NAME"/>
</enum>
<enum name="IMECommitType">
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