ParentprocessPasswordManagerRelationshipsLoginManagerParent+doAutoCompleteSearch(…)+onFormSubmit(…)+sendLoginDataToChild(…)LoginManagerChildAttribute-_onFormSubmit(Form)+onFormPassword(Event)+onUsernameInput(Event)+loginsFound(…)Content/Childprocessstorage-jsonstorage-geckoviewLoginManager<<interface>>nsILoginManagerinitializationPromiseuiBusyisLoggedIn+countLogins(…)+findLogins(…)+modifyLogin(…)<<interface>>nsILoginManagerStorageuiBusyisLoggedIn+initialize()+terminate()DesktopAndroid<<interface>>nsILoginManagerPrompterbrowseropenerBrowser+promptToSavePassword(…)+promptToChangePassword(…)+promptToChangePasswordWith…(…)HTMLFormElementbrowser/base/content/content.js /mobile/android/chrome/geckoview/GeckoViewAutofillChild.jsDOMFormHasPasswordeventPasswordManager:findLoginsPasswordManager:onFormSubmitPasswordManager:autoCompleteLoginsServices.loginsDOMFormBeforeSubmiteventMessages/EventsImplementsCallsDOMInputPasswordAddedeventLoginManagerContextMenuLoginManagerAuthPrompterLoginManagerPrompterDesktop<<interface>>nsILoginInfooriginformActionOriginhttpRealmusernamepassword<<interface>>nsILoginMetaInfoguidtimeCreatedtimeLastUsedtimePasswordChangedtimesUsedfillForm<<interface>>nsIAuthPrompt +promptUsername…<<interface>>nsIAuthPrompt2 +asyncPromptAuth()LoginStorageDelegateAndroid