gecko-dev/toolkit/components/satchel/nsIFormFillController.idl
Masayuki Nakano 3bd62fb08a Bug 1543315 - part 11: Mark nsIPresShell::ScrollContentIntoView() as MOZ_CAN_RUN_SCRIPT r=smaug
This patch marks `ScrollContentIntoView()` as `MOZ_CAN_RUN_SCRIPT` and changing
some callers of them to guarantee thar their parent callers are also safe.

Additionally, this patch moves it from `nsIPresShell` to `PresShell` because
all callers can refer `PresShell` directly.

Unfortunately, this patch changes a lot of methods in autocomplete and satchel
since this patch needs to mark some interface methods as `can_run_script` and
they are called each other.  This means that autocomplete module is really
sensitive like editor module.  Perhaps, autocomplete and satchel should do
scroll asynchronously and unmark some of them as `MOZ_CAN_RUN_SCRIPT` again.

Differential Revision: https://phabricator.services.mozilla.com/D28320

--HG--
extra : moz-landing-system : lando
2019-04-23 01:34:24 +00:00

75 lines
2.5 KiB
Text

/* 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
*/
[can_run_script]
void attachToBrowser(in nsIDocShell docShell, in nsIAutoCompletePopup popup);
[can_run_script]
void attachPopupElementToBrowser(in nsIDocShell docShell, in Element popup);
/*
* Stop controlling form fill behavior for the given browser
*
* @param docShell - The docShell to detach from
*/
[can_run_script] 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
*/
[can_run_script] 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
*/
[can_run_script] void markAsAutofillField(in HTMLInputElement aInput);
/*
* Open the autocomplete popup, if possible.
*/
[can_run_script] void showPopup();
};