Files
tubestation/toolkit/components/satchel/nsIFormFillController.idl
Matthew Noorenberghe e24ba068b6 Bug 1538952 - Don't automatically open the password autocomplete popup when we only have the footer to show. r=jaws,mak
Normally autocomplete results are cached based upon the search string but to get the desired behaviour we want two different sets of results for the same search string depending on how the autocomplete search was started:
a) Via automatically focusing a password field.
b) Every other method of starting an autocomplete search.

In order to not have cached results used, the result code for case (a) [an empty result] will be `RESULT_FAILURE` and I've updated the autocomplete code to not re-use an error result.

In the coming months we may be rewriting our content autocomplete code but that would be too risky to uplift to 67 so for now I'm tracking when satchel automatically opens the popup upon focus and then using that state in the autocomplete result creation code to know whether to include the footer.

Differential Revision: https://phabricator.services.mozilla.com/D25173
2019-03-30 04:20:20 +00:00

74 lines
2.4 KiB
Plaintext

/* 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/. */
#include "nsISupports.idl"
interface nsIDocShell;
interface nsIAutoCompletePopup;
webidl Element;
webidl HTMLInputElement;
/*
* nsIFormFillController is an interface for controlling form fill behavior
* on HTML documents. Any number of docShells can be controller concurrently.
* While a docShell is attached, all HTML documents that are loaded within it
* will have a focus listener attached that will listen for when a text input
* is focused. When this happens, the input will be bound to the
* global nsIAutoCompleteController service.
*/
[scriptable, uuid(07f0a0dc-f6e9-4cdd-a55f-56d770523a4c)]
interface nsIFormFillController : nsISupports
{
/*
* The input element the form fill controller is currently bound to.
*/
readonly attribute HTMLInputElement focusedInput;
/*
* Whether the autocomplete popup on a password field was automatically opened
* by the form fill controller (upon focus).
*/
readonly attribute boolean passwordPopupAutomaticallyOpened;
/*
* Start controlling form fill behavior for the given browser
*
* @param docShell - The docShell to attach to
* @param popup - The popup to show when autocomplete results are available
*/
void attachToBrowser(in nsIDocShell docShell, in nsIAutoCompletePopup popup);
void attachPopupElementToBrowser(in nsIDocShell docShell, in Element popup);
/*
* Stop controlling form fill behavior for the given browser
*
* @param docShell - The docShell to detach from
*/
void detachFromBrowser(in nsIDocShell docShell);
/*
* Mark the specified <input> element as being managed by password manager.
* Autocomplete requests will be handed off to the password manager, and will
* not be stored in form history.
*
* @param aInput - The HTML <input> element to tag
*/
void markAsLoginManagerField(in HTMLInputElement aInput);
/*
* Mark the specified <input> element as being managed by a form autofill component.
* Autocomplete requests will be handed off to the autofill component.
*
* @param aInput - The HTML <input> element to mark
*/
void markAsAutofillField(in HTMLInputElement aInput);
/*
* Open the autocomplete popup, if possible.
*/
void showPopup();
};