Commit 4215c65c authored by Jing Wang's avatar Jing Wang Committed by Commit Bot

Suggest full address in personal info suggester.

Now we will suggest a full address including city, state and zip code.
Note that although the country field will not be included in the
suggestion, it is essential for generating the full address correctly.

Test: tested on Chrome on Linux, updated the unit test.
Bug: 1101654
Change-Id: I221b0cb81079342129e768eeaba0f3210394292e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2278902
Commit-Queue: Jing Wang <jiwan@chromium.org>
Reviewed-by: default avatarKeith Lee <keithlee@chromium.org>
Cr-Commit-Position: refs/heads/master@{#785289}
parent e76e4146
...@@ -11,12 +11,14 @@ ...@@ -11,12 +11,14 @@
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/autofill/personal_data_manager_factory.h" #include "chrome/browser/autofill/personal_data_manager_factory.h"
#include "chrome/browser/browser_process.h"
#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_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"
#include "components/autofill/core/browser/ui/label_formatter_utils.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "components/prefs/scoped_user_pref_update.h" #include "components/prefs/scoped_user_pref_update.h"
...@@ -37,6 +39,22 @@ const char kAnnounceShowTab[] = "Press tab to insert."; ...@@ -37,6 +39,22 @@ const char kAnnounceShowTab[] = "Press tab to insert.";
constexpr base::TimeDelta kTtsShowDelay = constexpr base::TimeDelta kTtsShowDelay =
base::TimeDelta::FromMilliseconds(1200); base::TimeDelta::FromMilliseconds(1200);
const std::vector<autofill::ServerFieldType>& GetHomeAddressTypes() {
static base::NoDestructor<std::vector<autofill::ServerFieldType>>
homeAddressTypes{
{autofill::ServerFieldType::ADDRESS_HOME_LINE1,
autofill::ServerFieldType::ADDRESS_HOME_LINE2,
autofill::ServerFieldType::ADDRESS_HOME_LINE3,
autofill::ServerFieldType::ADDRESS_HOME_STREET_ADDRESS,
autofill::ServerFieldType::ADDRESS_HOME_DEPENDENT_LOCALITY,
autofill::ServerFieldType::ADDRESS_HOME_CITY,
autofill::ServerFieldType::ADDRESS_HOME_STATE,
autofill::ServerFieldType::ADDRESS_HOME_ZIP,
autofill::ServerFieldType::ADDRESS_HOME_SORTING_CODE,
autofill::ServerFieldType::ADDRESS_HOME_COUNTRY}};
return *homeAddressTypes;
}
} // namespace } // namespace
TtsHandler::TtsHandler(Profile* profile) : profile_(profile) {} TtsHandler::TtsHandler(Profile* profile) : profile_(profile) {}
...@@ -196,13 +214,14 @@ base::string16 PersonalInfoSuggester::GetSuggestion( ...@@ -196,13 +214,14 @@ base::string16 PersonalInfoSuggester::GetSuggestion(
// strategy in the future. // strategy in the future.
auto* profile = autofill_profiles[0]; auto* profile = autofill_profiles[0];
base::string16 suggestion; base::string16 suggestion;
const std::string app_locale = g_browser_process->GetApplicationLocale();
switch (proposed_action_type_) { switch (proposed_action_type_) {
case AssistiveType::kPersonalName: case AssistiveType::kPersonalName:
suggestion = profile->GetRawInfo(autofill::ServerFieldType::NAME_FULL); suggestion = profile->GetRawInfo(autofill::ServerFieldType::NAME_FULL);
break; break;
case AssistiveType::kPersonalAddress: case AssistiveType::kPersonalAddress:
suggestion = profile->GetRawInfo( suggestion = autofill::GetLabelNationalAddress(GetHomeAddressTypes(),
autofill::ServerFieldType::ADDRESS_HOME_STREET_ADDRESS); *profile, app_locale);
break; break;
case AssistiveType::kPersonalPhoneNumber: case AssistiveType::kPersonalPhoneNumber:
case AssistiveType::kPersonalNumber: case AssistiveType::kPersonalNumber:
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chromeos/constants/chromeos_pref_names.h" #include "chromeos/constants/chromeos_pref_names.h"
#include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_test_utils.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/geo/country_names.h"
#include "components/autofill/core/browser/test_autofill_client.h" #include "components/autofill/core/browser/test_autofill_client.h"
#include "components/autofill/core/browser/test_personal_data_manager.h" #include "components/autofill/core/browser/test_personal_data_manager.h"
#include "components/prefs/scoped_user_pref_update.h" #include "components/prefs/scoped_user_pref_update.h"
...@@ -175,7 +176,8 @@ class PersonalInfoSuggesterTest : public testing::Test { ...@@ -175,7 +176,8 @@ class PersonalInfoSuggesterTest : public testing::Test {
const base::string16 first_name_ = base::UTF8ToUTF16("John"); const base::string16 first_name_ = base::UTF8ToUTF16("John");
const base::string16 last_name_ = base::UTF8ToUTF16("Wayne"); const base::string16 last_name_ = base::UTF8ToUTF16("Wayne");
const base::string16 full_name_ = base::UTF8ToUTF16("John Wayne"); const base::string16 full_name_ = base::UTF8ToUTF16("John Wayne");
const base::string16 address_ = base::UTF8ToUTF16("1 Dream Road Hollywood"); const base::string16 address_ =
base::UTF8ToUTF16("1 Dream Road, Hollywood, CA 12345");
const base::string16 phone_number_ = base::UTF8ToUTF16("16505678910"); const base::string16 phone_number_ = base::UTF8ToUTF16("16505678910");
}; };
...@@ -226,10 +228,19 @@ TEST_F(PersonalInfoSuggesterTest, SuggestNames) { ...@@ -226,10 +228,19 @@ TEST_F(PersonalInfoSuggesterTest, SuggestNames) {
} }
TEST_F(PersonalInfoSuggesterTest, SuggestAddress) { TEST_F(PersonalInfoSuggesterTest, SuggestAddress) {
autofill::CountryNames::SetLocaleString("en-US");
autofill::AutofillProfile autofill_profile(base::GenerateGUID(), autofill::AutofillProfile autofill_profile(base::GenerateGUID(),
autofill::test::kEmptyOrigin); autofill::test::kEmptyOrigin);
autofill_profile.SetRawInfo( autofill_profile.SetRawInfo(autofill::ServerFieldType::ADDRESS_HOME_LINE1,
autofill::ServerFieldType::ADDRESS_HOME_STREET_ADDRESS, address_); base::UTF8ToUTF16("1 Dream Road"));
autofill_profile.SetRawInfo(autofill::ServerFieldType::ADDRESS_HOME_CITY,
base::UTF8ToUTF16("Hollywood"));
autofill_profile.SetRawInfo(autofill::ServerFieldType::ADDRESS_HOME_ZIP,
base::UTF8ToUTF16("12345"));
autofill_profile.SetRawInfo(autofill::ServerFieldType::ADDRESS_HOME_STATE,
base::UTF8ToUTF16("CA"));
autofill_profile.SetRawInfo(autofill::ServerFieldType::ADDRESS_HOME_COUNTRY,
base::UTF8ToUTF16("US"));
personal_data_->AddProfile(autofill_profile); personal_data_->AddProfile(autofill_profile);
suggester_->Suggest(base::UTF8ToUTF16("my address is ")); suggester_->Suggest(base::UTF8ToUTF16("my address is "));
......
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