forked from mirrors/gecko-dev
This patch adds the following messages to the autocomplete item: 1. For address and credit card autofill, use the `FormAutofill:FillForm` message. 2. For login autofill, use the `PasswordManager:OnFieldAutoComplete` message. 3. For generated password autofill, use the `PasswordManager:FillGeneratedPassword` message. After adding the above three messages, every autocomplete item that performs an action upon being clicked has a corresponding `fillMessageName`. Here is how the new architecture works: 1. Whenever a user selects an autocomplete entry, the `AutoCompleteChild` sends the `AutoComplete:SelectEntry` message to the parent process. 2. `AutoCompleteParent` extracts `fillMessageName` from the message and uses the prefix of the message name to determine which actor should process this message. 3. The `OnFieldAutoCompleteEntrySelected` method of the actor is called. The actor in the parent process determines what action to take. Differential Revision: https://phabricator.services.mozilla.com/D209353
41 lines
1.5 KiB
JavaScript
41 lines
1.5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* 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/. */
|
|
|
|
// This item shows image, label & secondary.
|
|
// Once selected it will send fillMessageName with fillMessageData
|
|
// to the parent actor and response will be used to fill into the field.
|
|
export class GenericAutocompleteItem {
|
|
comment = "";
|
|
style = "generic";
|
|
value = "";
|
|
|
|
constructor(image, label, secondary, fillMessageName, fillMessageData) {
|
|
this.image = image;
|
|
this.label = label;
|
|
this.comment = JSON.stringify({
|
|
secondary,
|
|
fillMessageName,
|
|
fillMessageData,
|
|
});
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Show confirmation tooltip
|
|
*
|
|
* @param {object} browser - An object representing the browser.
|
|
* @param {string} messageId - Message ID from browser/confirmationHints.ftl
|
|
* @param {string} [anchorId="identity-icon-box"] - ID of the element to anchor the hint to.
|
|
The "password-notification-icon" and "notification-popup-box" are hidden
|
|
at the point of showing the hint (for *most* cases), so approximate the
|
|
location with the next closest, visible icon as the anchor.
|
|
*/
|
|
export function showConfirmation(
|
|
browser,
|
|
messageId,
|
|
anchorId = "identity-icon-box"
|
|
) {
|
|
const anchor = browser.ownerDocument.getElementById(anchorId);
|
|
anchor.ownerGlobal.ConfirmationHint.show(anchor, messageId, {});
|
|
}
|