mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	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, {});
 | 
						|
}
 |