Backed out changeset f594e6f00208 (bug 1940883) for causing crashes in bug 1941164.
[gecko.git] / toolkit / components / formautofill / shared / AutofillFormFactory.sys.mjs
blob68db1436401728ef160671e2d2728f55385baa05
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 /**
6  * A factory to generate AutofillForm objects that represent a set of autofillable fields
7  * which aren't necessarily marked up with a <form> element.
8  */
10 const lazy = {};
12 ChromeUtils.defineESModuleGetters(lazy, {
13   FormLikeFactory: "resource://gre/modules/FormLikeFactory.sys.mjs",
14 });
16 export const AutofillFormFactory = {
17   findRootForField(element) {
18     let ignoreForm;
19     try {
20       const bc = element.ownerGlobal.browsingContext;
21       ignoreForm = bc != bc.top;
22     } catch {
23       ignoreForm = false;
24     }
25     return lazy.FormLikeFactory.findRootForField(element, { ignoreForm });
26   },
28   createFromForm(aForm) {
29     return lazy.FormLikeFactory.createFromForm(aForm);
30   },
32   createFromField(aField) {
33     let ignoreForm;
34     try {
35       const bc = aField.ownerGlobal.browsingContext;
36       ignoreForm = bc != bc.top;
37     } catch {
38       ignoreForm = false;
39     }
40     return lazy.FormLikeFactory.createFromField(aField, { ignoreForm });
41   },