commit 823c273c4f913f9e3ee2a2f7277d69c552d73131
parent 960f4bb8e1556ef46a61d49529fc51229a94d59c
Author: Jeff Boek <j@jboek.com>
Date: Tue, 14 Oct 2025 23:20:18 +0000
Bug 1991198 - Compute the name property if given name is not present r=geckoview-reviewers,tcampbell
Differential Revision: https://phabricator.services.mozilla.com/D266447
Diffstat:
2 files changed, 44 insertions(+), 5 deletions(-)
diff --git a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/AutocompleteTest.kt b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/AutocompleteTest.kt
@@ -507,7 +507,7 @@ class AutocompleteTest : BaseSessionTest() {
equalTo(savedAddresses.size),
)
- val addressOption = prompt.options.find { it.value.familyName == selectedAddress.familyName }
+ val addressOption = prompt.options.find { it.value.guid == selectedAddress.guid }
val address = addressOption?.value
assertThat("Address should not be null", address, notNullValue())
@@ -659,6 +659,38 @@ class AutocompleteTest : BaseSessionTest() {
}
@Test
+ fun addressSelectAndFillWithoutGivenName() {
+ val name = "Peter Parker"
+ val streetAddress = "20 Ingram Street, Forest Hills Gardens, Queens"
+ val postalCode = "11375"
+ val country = "US"
+ val email = "spiderman@newyork.com"
+ val tel = "+1 180090021"
+ val organization = ""
+ val guid = "test-guid"
+ val builder = Address.Builder()
+ .guid(guid)
+ .name(name)
+ .streetAddress(streetAddress)
+ .postalCode(postalCode)
+ .country(country)
+ .email(email)
+ .tel(tel)
+ .organization(organization)
+
+ val savedAddress = builder.build()
+
+ val expectedAddress = builder
+ .givenName("Peter")
+ .familyName("Parker")
+ .build()
+
+ val savedAddresses = arrayOf(savedAddress)
+
+ checkAddressesForCorrectness(savedAddresses, expectedAddress)
+ }
+
+ @Test
fun addressSelectAndFillMultipleAddresses() {
val names = arrayOf("Peter Parker", "Wade Wilson")
val givenNames = arrayOf("Peter", "Wade")
diff --git a/mobile/shared/modules/geckoview/GeckoViewAutocomplete.sys.mjs b/mobile/shared/modules/geckoview/GeckoViewAutocomplete.sys.mjs
@@ -9,6 +9,7 @@ const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
EventDispatcher: "resource://gre/modules/Messaging.sys.mjs",
GeckoViewPrompter: "resource://gre/modules/GeckoViewPrompter.sys.mjs",
+ AddressRecord: "resource://gre/modules/shared/AddressRecord.sys.mjs",
});
ChromeUtils.defineLazyGetter(lazy, "LoginInfo", () =>
@@ -180,12 +181,9 @@ export class Address {
}
toGecko() {
- return {
+ let address = {
version: this.version,
name: this.name,
- "given-name": this.givenName,
- "additional-name": this.additionalName,
- "family-name": this.familyName,
organization: this.organization,
"street-address": this.streetAddress,
"address-level1": this.addressLevel1,
@@ -196,7 +194,16 @@ export class Address {
tel: this.tel,
email: this.email,
guid: this.guid,
+ ...(this.givenName && {
+ "given-name": this.givenName,
+ "additional-name": this.additionalName,
+ "family-name": this.familyName,
+ }),
};
+
+ lazy.AddressRecord.computeFields(address);
+
+ return address;
}
}