зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1864340 - display correct wording in ac footer - r=sgalich,dimi,fluent-reviewers,bolsson
Differential Revision: https://phabricator.services.mozilla.com/D198828
This commit is contained in:
Родитель
1d51bf4a9a
Коммит
fb929a6abc
|
@ -287,16 +287,7 @@
|
||||||
this._itemBox.setAttribute("no-warning", "true");
|
this._itemBox.setAttribute("no-warning", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
// After focusing a field that was previously filled with cc information,
|
this._optionButton.textContent = value.manageLabel;
|
||||||
// the "ac-image" is falsely set for the listitem-footer. For now it helps us
|
|
||||||
// to distinguish between address and cc footer. In the future this false attribute
|
|
||||||
// setting should be fixed and the "ac-image" check replaced by a different method.
|
|
||||||
const buttonTextBundleKey = !this.getAttribute("ac-image")
|
|
||||||
? "autocompleteManageAddresses"
|
|
||||||
: "autocompleteManageCreditCards";
|
|
||||||
const buttonText =
|
|
||||||
this._stringBundle.GetStringFromName(buttonTextBundleKey);
|
|
||||||
this._optionButton.textContent = buttonText;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,6 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
# LOCALIZATION NOTE (autocompleteManageCreditCards):
|
|
||||||
# Used as a label for the button, displayed at the bottom of the dropdown suggestion, to open Form Autofill browser preferences.
|
|
||||||
autocompleteManageCreditCards = Manage credit cards
|
|
||||||
# LOCALIZATION NOTE (autocompleteManageAddresses):
|
|
||||||
# Used as a label for the button, displayed at the bottom of the dropdown suggestion, to open Form Autofill browser preferences.
|
|
||||||
autocompleteManageAddresses = Manage addresses
|
|
||||||
# LOCALIZATION NOTE (category.address, category.name, category.organization2, category.tel, category.email):
|
# LOCALIZATION NOTE (category.address, category.name, category.organization2, category.tel, category.email):
|
||||||
# Used in autofill drop down suggestion to indicate what other categories Form Autofill will attempt to fill.
|
# Used in autofill drop down suggestion to indicate what other categories Form Autofill will attempt to fill.
|
||||||
category.address = address
|
category.address = address
|
||||||
|
|
|
@ -2,12 +2,57 @@
|
||||||
|
|
||||||
const URL = BASE_URL + "autocomplete_basic.html";
|
const URL = BASE_URL + "autocomplete_basic.html";
|
||||||
|
|
||||||
|
const l10n = new Localization(["toolkit/formautofill/formAutofill.ftl"], true);
|
||||||
|
|
||||||
add_setup(async function setup_storage() {
|
add_setup(async function setup_storage() {
|
||||||
await setStorage(
|
await setStorage(
|
||||||
TEST_ADDRESS_2,
|
TEST_ADDRESS_2,
|
||||||
TEST_ADDRESS_3,
|
TEST_ADDRESS_3,
|
||||||
TEST_ADDRESS_4,
|
TEST_ADDRESS_4,
|
||||||
TEST_ADDRESS_5
|
TEST_ADDRESS_5,
|
||||||
|
TEST_CREDIT_CARD_1
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
add_task(async function test_footer_has_correct_button_text_on_address() {
|
||||||
|
await BrowserTestUtils.withNewTab(
|
||||||
|
{ gBrowser, url: URL },
|
||||||
|
async function (browser) {
|
||||||
|
const {
|
||||||
|
autoCompletePopup: { richlistbox: itemsBox },
|
||||||
|
} = browser;
|
||||||
|
|
||||||
|
await openPopupOn(browser, "#organization");
|
||||||
|
const footer = itemsBox.querySelector(
|
||||||
|
".autofill-footer-row.autofill-button"
|
||||||
|
);
|
||||||
|
Assert.equal(
|
||||||
|
footer.innerText,
|
||||||
|
l10n.formatValueSync("autofill-manage-addresses-label")
|
||||||
|
);
|
||||||
|
await closePopup(browser);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
add_task(async function test_footer_has_correct_button_text_on_credit_card() {
|
||||||
|
await BrowserTestUtils.withNewTab(
|
||||||
|
{ gBrowser, url: CREDITCARD_FORM_URL },
|
||||||
|
async function (browser) {
|
||||||
|
const {
|
||||||
|
autoCompletePopup: { richlistbox: itemsBox },
|
||||||
|
} = browser;
|
||||||
|
|
||||||
|
await openPopupOn(browser, "#cc-number");
|
||||||
|
const footer = itemsBox.querySelector(
|
||||||
|
".autofill-footer-row.autofill-button"
|
||||||
|
);
|
||||||
|
Assert.equal(
|
||||||
|
footer.innerText,
|
||||||
|
l10n.formatValueSync("autofill-manage-payment-methods-label")
|
||||||
|
);
|
||||||
|
await closePopup(browser);
|
||||||
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -47,9 +47,8 @@ add_task(async function check_switch_autofill_form_popup() {
|
||||||
checkMenuEntries(
|
checkMenuEntries(
|
||||||
[
|
[
|
||||||
`{"primary":"+13453453456","secondary":"123 Sesame Street."}`,
|
`{"primary":"+13453453456","secondary":"123 Sesame Street."}`,
|
||||||
`{"primary":"","secondary":"","categories":["organization","address","tel","name"],"focusedCategory":"tel"}`,
|
|
||||||
],
|
],
|
||||||
false
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
await testMenuEntry(0, "!(el instanceof MozElements.MozAutocompleteRichlistitem)");
|
await testMenuEntry(0, "!(el instanceof MozElements.MozAutocompleteRichlistitem)");
|
||||||
|
@ -75,9 +74,8 @@ add_task(async function check_switch_autofill_form_popup_back() {
|
||||||
checkMenuEntries(
|
checkMenuEntries(
|
||||||
[
|
[
|
||||||
`{"primary":"+13453453456","secondary":"123 Sesame Street."}`,
|
`{"primary":"+13453453456","secondary":"123 Sesame Street."}`,
|
||||||
`{"primary":"","secondary":"","categories":["organization","address","tel","name"],"focusedCategory":"tel"}`,
|
|
||||||
],
|
],
|
||||||
false
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
await testMenuEntry(0, "!(el instanceof MozElements.MozAutocompleteRichlistitem)");
|
await testMenuEntry(0, "!(el instanceof MozElements.MozAutocompleteRichlistitem)");
|
||||||
|
|
|
@ -77,8 +77,7 @@ async function checkFormChangeHappened(formId) {
|
||||||
// Click on an autofilled field would show an autocomplete popup with "clear form" entry
|
// Click on an autofilled field would show an autocomplete popup with "clear form" entry
|
||||||
checkMenuEntries([
|
checkMenuEntries([
|
||||||
JSON.stringify({primary: "", secondary: ""}), // Clear Autofill Form
|
JSON.stringify({primary: "", secondary: ""}), // Clear Autofill Form
|
||||||
JSON.stringify({primary: "", secondary: ""}) // FormAutofill Preferemce
|
], true);
|
||||||
], false);
|
|
||||||
|
|
||||||
// This is for checking the changes of element removed and added then.
|
// This is for checking the changes of element removed and added then.
|
||||||
document.querySelector(`#${formId} input[name=address-level2]`).remove();
|
document.querySelector(`#${formId} input[name=address-level2]`).remove();
|
||||||
|
|
|
@ -132,15 +132,3 @@ autofill-card-expires-month = Exp. Month
|
||||||
autofill-card-expires-year = Exp. Year
|
autofill-card-expires-year = Exp. Year
|
||||||
autofill-card-billing-address = Billing Address
|
autofill-card-billing-address = Billing Address
|
||||||
autofill-card-network = Card Type
|
autofill-card-network = Card Type
|
||||||
|
|
||||||
## These are brand names and should only be translated when a locale-specific name for that brand is in common use
|
|
||||||
|
|
||||||
autofill-card-network-amex = American Express
|
|
||||||
autofill-card-network-cartebancaire = Carte Bancaire
|
|
||||||
autofill-card-network-diners = Diners Club
|
|
||||||
autofill-card-network-discover = Discover
|
|
||||||
autofill-card-network-jcb = JCB
|
|
||||||
autofill-card-network-mastercard = MasterCard
|
|
||||||
autofill-card-network-mir = MIR
|
|
||||||
autofill-card-network-unionpay = Union Pay
|
|
||||||
autofill-card-network-visa = Visa
|
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
# Any copyright is dedicated to the Public Domain.
|
||||||
|
# http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
|
||||||
|
import fluent.syntax.ast as FTL
|
||||||
|
from fluent.migrate.transforms import COPY, COPY_PATTERN
|
||||||
|
|
||||||
|
|
||||||
|
def migrate(ctx):
|
||||||
|
"""Bug 1864340 - Convert autocomplete footer strings to FTL, part {index}."""
|
||||||
|
|
||||||
|
propertiesSource = "browser/extensions/formautofill/formautofill.properties"
|
||||||
|
fluentSource = "browser/browser/preferences/formAutofill.ftl"
|
||||||
|
target = "toolkit/toolkit/formautofill/formAutofill.ftl"
|
||||||
|
ctx.add_transforms(
|
||||||
|
target,
|
||||||
|
target,
|
||||||
|
[
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-manage-addresses-label"),
|
||||||
|
value=COPY(propertiesSource, "autocompleteManageAddresses"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-amex"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-amex"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-cartebancaire"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-cartebancaire"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-diners"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-diners"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-discover"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-discover"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-jcb"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-jcb"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-mastercard"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-mastercard"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-mir"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-mir"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-unionpay"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-unionpay"),
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("autofill-card-network-visa"),
|
||||||
|
value=COPY_PATTERN(fluentSource, "autofill-card-network-visa"),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
|
@ -12,7 +12,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
ChromeUtils.defineLazyGetter(
|
ChromeUtils.defineLazyGetter(
|
||||||
lazy,
|
lazy,
|
||||||
"l10n",
|
"l10n",
|
||||||
() => new Localization(["browser/preferences/formAutofill.ftl"], true)
|
() => new Localization(["toolkit/formautofill/formAutofill.ftl"], true)
|
||||||
);
|
);
|
||||||
|
|
||||||
class ProfileAutoCompleteResult {
|
class ProfileAutoCompleteResult {
|
||||||
|
@ -277,10 +277,19 @@ export class AddressResult extends ProfileAutoCompleteResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
_generateLabels(focusedFieldName, allFieldNames, profiles) {
|
_generateLabels(focusedFieldName, allFieldNames, profiles) {
|
||||||
|
const manageLabel = lazy.l10n.formatValueSync(
|
||||||
|
"autofill-manage-addresses-label"
|
||||||
|
);
|
||||||
|
|
||||||
if (this._isInputAutofilled) {
|
if (this._isInputAutofilled) {
|
||||||
return [
|
return [
|
||||||
{ primary: "", secondary: "" }, // Clear button
|
{ primary: "", secondary: "" }, // Clear button
|
||||||
{ primary: "", secondary: "" }, // Footer
|
// Footer
|
||||||
|
{
|
||||||
|
primary: "",
|
||||||
|
secondary: "",
|
||||||
|
manageLabel,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,6 +315,10 @@ export class AddressResult extends ProfileAutoCompleteResult {
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const focusedCategory =
|
||||||
|
lazy.FormAutofillUtils.getCategoryFromFieldName(focusedFieldName);
|
||||||
|
|
||||||
// Add an empty result entry for footer. Its content will come from
|
// Add an empty result entry for footer. Its content will come from
|
||||||
// the footer binding, so don't assign any value to it.
|
// the footer binding, so don't assign any value to it.
|
||||||
// The additional properties: categories and focusedCategory are required of
|
// The additional properties: categories and focusedCategory are required of
|
||||||
|
@ -313,12 +326,11 @@ export class AddressResult extends ProfileAutoCompleteResult {
|
||||||
labels.push({
|
labels.push({
|
||||||
primary: "",
|
primary: "",
|
||||||
secondary: "",
|
secondary: "",
|
||||||
|
manageLabel,
|
||||||
categories: lazy.FormAutofillUtils.getCategoriesFromFieldNames(
|
categories: lazy.FormAutofillUtils.getCategoriesFromFieldNames(
|
||||||
this._allFieldNames
|
this._allFieldNames
|
||||||
),
|
),
|
||||||
focusedCategory: lazy.FormAutofillUtils.getCategoryFromFieldName(
|
focusedCategory,
|
||||||
this._focusedFieldName
|
|
||||||
),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return labels;
|
return labels;
|
||||||
|
@ -385,10 +397,19 @@ export class CreditCardResult extends ProfileAutoCompleteResult {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const manageLabel = lazy.l10n.formatValueSync(
|
||||||
|
"autofill-manage-payment-methods-label"
|
||||||
|
);
|
||||||
|
|
||||||
if (this._isInputAutofilled) {
|
if (this._isInputAutofilled) {
|
||||||
return [
|
return [
|
||||||
{ primary: "", secondary: "" }, // Clear button
|
{ primary: "", secondary: "" }, // Clear button
|
||||||
{ primary: "", secondary: "" }, // Footer
|
// Footer
|
||||||
|
{
|
||||||
|
primary: "",
|
||||||
|
secondary: "",
|
||||||
|
manageLabel,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,8 +452,17 @@ export class CreditCardResult extends ProfileAutoCompleteResult {
|
||||||
image,
|
image,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const focusedCategory =
|
||||||
|
lazy.FormAutofillUtils.getCategoryFromFieldName(focusedFieldName);
|
||||||
|
|
||||||
// Add an empty result entry for footer.
|
// Add an empty result entry for footer.
|
||||||
labels.push({ primary: "", secondary: "" });
|
labels.push({
|
||||||
|
primary: "",
|
||||||
|
secondary: "",
|
||||||
|
manageLabel,
|
||||||
|
focusedCategory,
|
||||||
|
});
|
||||||
|
|
||||||
return labels;
|
return labels;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,3 +52,21 @@ credit-card-capture-save-new-button =
|
||||||
credit-card-capture-update-button =
|
credit-card-capture-update-button =
|
||||||
.label = Update existing card
|
.label = Update existing card
|
||||||
.accessKey = U
|
.accessKey = U
|
||||||
|
|
||||||
|
# Used as a label for the button, displayed at the bottom of the dropdown suggestion, to open Form Autofill browser preferences.
|
||||||
|
autofill-manage-addresses-label = Manage addresses
|
||||||
|
|
||||||
|
# Used as a label for the button, displayed at the bottom of the dropdown suggestion, to open Form Autofill browser preferences.
|
||||||
|
autofill-manage-payment-methods-label = Manage payment methods
|
||||||
|
|
||||||
|
## These are brand names and should only be translated when a locale-specific name for that brand is in common use
|
||||||
|
|
||||||
|
autofill-card-network-amex = American Express
|
||||||
|
autofill-card-network-cartebancaire = Carte Bancaire
|
||||||
|
autofill-card-network-diners = Diners Club
|
||||||
|
autofill-card-network-discover = Discover
|
||||||
|
autofill-card-network-jcb = JCB
|
||||||
|
autofill-card-network-mastercard = MasterCard
|
||||||
|
autofill-card-network-mir = MIR
|
||||||
|
autofill-card-network-unionpay = Union Pay
|
||||||
|
autofill-card-network-visa = Visa
|
||||||
|
|
Загрузка…
Ссылка в новой задаче