Consistent country code for new addresses When adding a new address in settings, the default value of the country select is determined using PDM::GetDefaultCountryCodeForNewAddress(). It returns either the ADM::MostCommonCountryCodeFromProfiles() or falls back to GetCountryCodeForExperimentGroup(). The latter function considers the variation country code, the country code of the current time zone and the country of the app locale, in this order. In addition, there is some caching going on, ensuring that the most common country doesn't change when profiles are added. On form import, the logic works different. It prefers the country observed in the submitted form and falls back to either the variation country code or the app locale. This CL simplifies the logic used for settings to match the form import logic (that is, only consider variation country code and app locale). In particular, this CL: - Removes ADM::MostCommonCountryCodeFromProfiles() and the cached value in ADM::most_common_country_code_. - Moves PDM::GetDefaultCountryCodeForNewAddress() to the ADM and simplifies its implementation to only consider variation country code and app locale. To do so, the variation country code is passed in to the ADM via its constructor. The function now returns an AddressCountryCode (strong alias for std::string) instead of std::string. - Removes the tests for GetDefaultCountryCodeForNewAddress(), which are concerned about the (now removed) caching behavior. - Updates FormDataImporter::ComplementCountry() to use ADM::GetDefaultCountryCodeForNewAddress(), instead of duplicating the logic to derived the fallback country code. This makes ADM::GetDefaultCountryCodeForNewAddress() the single source of truth. This regresses the output to autofill-internals somewhat, since only the fallback country code is logged, not how it was derived. - Removes GetPredictedCountryCode(), which was previously used in the form import logic. Since PDM::GetDefaultCountryCodeForNewAddress() is moved to the ADM, the few existings calls are forwarded to the ADM using the PDM's address_data_manager() getter. Bug: b/322170538 Change-Id: I5f8dba64ac00eb9add2c6a924b0533bb79a46251 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5439418 Reviewed-by: Dominic Battre <battre@chromium.org> Reviewed-by: Jan Keitel <jkeitel@google.com> Commit-Queue: Florian Leimgruber <fleimgruber@google.com> Cr-Commit-Position: refs/heads/main@{#1286372}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.