@class NSMutableDictionary, WBSAutoFillQuirksManager, WBSKeychainCredentialNotificationMonitor, WBSPair, NSMutableArray, NSObject; @protocol OS_dispatch_queue; @interface WBSFormDataController : NSObject { WBSKeychainCredentialNotificationMonitor *_keychainMonitor; id _keychainNotificationRegistrationToken; NSMutableDictionary *_completionDB; NSMutableDictionary *_valuesDB; NSMutableDictionary *_preferredLabelsMap; unsigned long long _completionDBSize; NSMutableDictionary *_domainToLastUsedUsernameAndProtectionSpace; NSMutableArray *_recentlyUsedAutoFillSets; NSMutableDictionary *_preferredLabelForUniqueIDOfPersonMap; WBSPair *_cachedBirthdayAndLocalizedStrings; NSObject<OS_dispatch_queue> *_internalQueue; NSMutableDictionary *_mapOfHighLevelDomainToLastAutomaticFormSubmission; } @property (readonly, nonatomic) WBSAutoFillQuirksManager *autoFillQuirksManager; + (BOOL)isNameProperty:(id)a0; + (BOOL)contactIsMe:(id)a0; + (id)contactKeyForString:(id)a0; + (id)controlsConsideredByAutoFillInForm:(id)a0; + (id)dontSaveMarker; + (BOOL)isFieldUnidentified:(id)a0; + (id)localizedLowercaseContactProperty:(id)a0; + (id)nextFieldAfterControls:(id)a0 inForm:(id)a1; + (BOOL)shouldDisplayHideMyEmailForControl:(id)a0; + (BOOL)shouldDisplayOneTimeCodeForControl:(id)a0 inForm:(id)a1; + (id)specifierForControl:(id)a0; + (BOOL)textFieldLooksLikeCreditCardFormField:(id)a0 inForm:(id)a1; + (BOOL)textFieldLooksLikeCreditCardNumericFormField:(id)a0; + (id)valueOfControlWithUniqueID:(id)a0 inForm:(id)a1; + (id)valuesFromUser:(id)a0 password:(id)a1 forLoginOrChangePasswordForm:(id)a2; + (id)stringWithAddressBookValue:(id)a0 key:(id)a1; + (id)_metadataForControlWithUniqueID:(id)a0 inForm:(id)a1; + (BOOL)_password:(id)a0 appearsToBeASixDigitCodeAppendedToPassword:(id)a1; + (BOOL)_password:(id)a0 appearsToBeMoreThanOneSymbolAppendedToPassword:(id)a1; + (id)addressBookAddressPropertyKey; + (id)allAddressBookAddressComponentKeys; + (id)allAddressBookNonAddressPropertyKeys; + (id)allSynonymsForMatch:(id)a0; + (long long)availableManualAutoFillActionForTextField:(id)a0 form:(id)a1 outUsernameElementUniqueID:(id *)a2 outPasswordElementUniqueID:(id *)a3 outConfirmPasswordElementUniqueID:(id *)a4; + (BOOL)canAutocompleteTextField:(id)a0 inForm:(id)a1; + (id)continuingFieldsInFormControls:(id)a0 startingAtIndex:(unsigned long long)a1 textFieldsOnly:(BOOL)a2 ignorePositioning:(BOOL)a3; + (BOOL)convertNumber:(id)a0 toAutoFillFormType:(unsigned long long *)a1; + (id)domainFromURL:(id)a0; + (id)fieldToFocusBeforeSubmittingForm:(id)a0; + (BOOL)formContainsCreditCardData:(id)a0; + (BOOL)formContainsCreditCardNumberField:(id)a0; + (BOOL)formContainsCreditCardNumberOrCardSecurityCodeField:(id)a0; + (BOOL)formContainsDateFields:(id)a0 matchingAddressBookMatch:(id)a1; + (id)lastFieldInControls:(id)a0 inForm:(id)a1; + (BOOL)password:(id)a0 shouldBeConsideredEqualToExistingPassword:(id)a1; + (id)specifierForAddressBookLabel:(id)a0; + (BOOL)stringLooksLikeCreditCardNumber:(id)a0; - (id)init; - (void)dealloc; - (void)_currentLocaleDidChange:(id)a0; - (void).cxx_destruct; - (id)annotationsFromUsername:(id)a0 forLoginOrChangePasswordForm:(id)a1; - (id)autoGeneratedPasswordForURL:(id)a0 respectingPasswordRequirements:(id)a1 maxLength:(unsigned long long)a2; - (id)contactAutoFillSetForRecentlyUsedAutoFillSet:(id)a0 contact:(id)a1 form:(id)a2; - (void)didAutomaticallySubmitFormWhenFillingOnURL:(id)a0 formMetadata:(id)a1; - (id)exactFQDNAndHighLevelDomainSavedAccountMatchesForForm:(id)a0 atURL:(id)a1 webFrameIdentifier:(id)a2 savedAccountContext:(id)a3; - (void)getFormFieldValues:(id *)a0 andFieldToFocus:(id *)a1 andCreditCardDataTypesThatWillBeFilled:(id *)a2 forCreditCardForm:(id)a3 fromCreditCardData:(id)a4; - (void)getFormFieldValues:(id *)a0 andFieldToFocus:(id *)a1 withSingleCreditCardData:(id)a2 inField:(id)a3 inForm:(id)a4; - (void)getSavedAccountMatchesWithCriteria:(id)a0 synchronously:(BOOL)a1 completionHandler:(id /* block */)a2; - (id)initWithAggressiveKeychainCaching:(BOOL)a0; - (BOOL)isControlASelectElement:(id)a0; - (BOOL)isPasswordFieldForUserCredentialsWithMetadata:(id)a0 formMetadata:(id)a1; - (id)lastUsedUsernameWithPasswordForURL:(id)a0 inContext:(id)a1; - (id)metadataOfActiveFormOrBestFormForPageLevelAutoFill:(id)a0 frame:(struct OpaqueFormAutoFillFrame **)a1; - (id)metadataOfBestFormForStreamlinedLogin:(id)a0 frame:(struct OpaqueFormAutoFillFrame **)a1; - (id)orderedHomeAndWorkSetsForContact:(id)a0 form:(id)a1; - (id)recentlyUsedAutoFillSets; - (void)saveRecentlyUsedAutoFillSetWithMatchesToFill:(id)a0 matchesForDoNotFill:(id)a1; - (void)setPreferredIdentifier:(id)a0 forProperty:(id)a1 withContact:(id)a2; - (BOOL)shouldAutoFillFromAddressBook; - (BOOL)shouldAutoFillPasswords; - (BOOL)shouldSubmitForm:(id)a0 withUser:(id)a1 password:(id)a2 onURL:(id)a3; - (BOOL)textFieldIsEligibleForAutomaticStrongPassword:(id)a0 form:(id)a1 ignorePreviousDecision:(BOOL)a2 textFieldCurrentlyContainsStrongPassword:(BOOL *)a3; - (id)valuesForContactFormWithMetadata:(id)a0 matches:(id *)a1 multiRoundAutoFillManager:(id)a2 existingMatches:(id)a3 contact:(id)a4; - (id)valuesForContactFormWithMetadata:(id)a0 matches:(id *)a1 multiRoundAutoFillManager:(id)a2 existingMatches:(id)a3 shouldUseExistingMatchesToFillFocusedField:(BOOL)a4 contact:(id)a5; - (id)valuesForFormWithMetadata:(id)a0 hideMyEmailRecord:(id)a1; - (id)valuesForStandardForm:(id)a0 inDomain:(id)a1 autoFillDataType:(long long)a2 matches:(id *)a3 preferredLabel:(id)a4 multiRoundAutoFillManager:(id)a5 contact:(id)a6 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a7; - (id)matchesForControl:(id)a0 atURL:(id)a1 matchingPartialString:(id)a2 autoFillDataType:(long long)a3 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a4; - (void)updateLastUsedUsernameAndExtractUsernameAndPasswordFromForm:(id)a0 shouldPreferAnnotatedCredentials:(BOOL)a1 atURL:(id)a2 username:(id *)a3 password:(id *)a4 inContext:(id)a5; - (unsigned long long)_addMatchesForControl:(id)a0 startingAtIndex:(unsigned long long)a1 formMetadata:(id)a2 fromExistingMatches:(id)a3 fromAllMatchesIfNecessary:(id)a4 addToFoundMatches:(id)a5 addToAutoFillValues:(id)a6 multiRoundAutoFillManager:(id)a7 propertyToIdentifierMapForFoundMatches:(id)a8 shouldUseExistingMatchesToFillFocusedField:(BOOL)a9; - (id)_autoFillSetFromMatches:(id)a0 label:(id)a1 contact:(id)a2 form:(id)a3; - (id)_cachedLocalizedStringsForBirthdate:(id)a0; - (id)_completionDB; - (BOOL)_dateIsWithinGracePeriodForNotAutomaticallySubmittingLoginForms:(id)a0; - (id)_domainsWithPreviousDataOnInternalQueue; - (void)_fillPhoneNumber:(id)a0 intoValues:(id)a1 controls:(id)a2 formTextSample:(id)a3 multiRoundAutoFillManager:(id)a4; - (id)_formKeyForMapOfHighLevelDomainToLastAutomaticFormSubmission:(id)a0 formMetadata:(id)a1; - (unsigned long long)_indexForControlWithUniqueID:(id)a0 inForm:(id)a1; - (id)_keyToLookUpInAnnotationsForPasswordForFormMetadata:(id)a0; - (id)_knownUsernamesWithPasswordsForURL:(id)a0 inContext:(id)a1; - (id)_lastUsedUsernameForDomain:(id)a0; - (void)_loadCompletionDBIfNeededOnInternalQueue; - (BOOL)_matchHasPreferredIdentifierOrShouldBeFilledInMultiRoundAutoFill:(id)a0 specifier:(id)a1 multiRoundAutoFillManager:(id)a2 contact:(id)a3; - (id)_matchesForControl:(id)a0 inDomain:(id)a1 matchingPartialString:(id)a2 autoFillDataType:(long long)a3 preferredLabel:(id)a4 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a5; - (id)_matchesForControl:(id)a0 inDomain:(id)a1 matchingPartialString:(id)a2 autoFillDataType:(long long)a3 preferredLabel:(id)a4 contact:(id)a5 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a6; - (id)_nextFieldToFocusAfterFillingFieldAtIndex:(unsigned long long)a0 inForm:(id)a1; - (id)_phoneNumberCandidates:(id)a0 fillingMultipleFields:(BOOL)a1; - (id)_recentlyUsedAutoFillDictionaries; - (void)_removeStaleEntriesFromMapOfHighLevelDomainToLastAutomaticFormSubmission; - (void)_setLastUsedUsername:(id)a0 andProtectionSpace:(id)a1 forDomain:(id)a2; - (id)_singleFieldPhoneNumberCandidates:(id)a0; - (id)_valuesForStandardForm:(id)a0 inDomain:(id)a1 autoFillDataType:(long long)a2 matches:(id *)a3 preferredLabel:(id)a4 multiRoundAutoFillManager:(id)a5 wantAllMatches:(BOOL)a6 contact:(id)a7 existingMatches:(id)a8 shouldUseExistingMatchesToFillFocusedField:(BOOL)a9 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a10; - (void)addABMatchesForValueSpecifier:(id)a0 matchingPartialString:(id)a1 toArray:(id)a2 preferredLabel:(id)a3 contact:(id)a4 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a5; - (void)addAllAddressDataIfNecessary:(id)a0 contactLabel:(id)a1 contact:(id)a2; - (void)addPreviousDataMatchesForFieldWithName:(id)a0 inDomain:(id)a1 matchingPartialString:(id)a2 toArray:(id)a3; - (void)addRecentlyUsedAutoFillSet:(id)a0 appendToTheEnd:(BOOL)a1; - (unsigned long long)addValuesForStandardFormControls:(id)a0 startingAtIndex:(unsigned long long)a1 fromAutoFillItem:(id)a2 toDictionary:(id)a3 formTextSample:(id)a4 multiRoundAutoFillManager:(id)a5; - (unsigned long long)addValuesForStandardFormControlsInForm:(id)a0 startingAtIndex:(unsigned long long)a1 fromAutoFillItem:(id)a2 toDictionary:(id)a3 multiRoundAutoFillManager:(id)a4; - (BOOL)addressBookHasDataForLabel:(id)a0; - (id)addressBookMatchesForFullNameForContact:(id)a0; - (id)addressBookMatchesForProperty:(id)a0 key:(id)a1 label:(id)a2; - (id)addressBookMatchesForProperty:(id)a0 key:(id)a1 label:(id)a2 partialString:(id)a3 contact:(id)a4 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a5; - (id)allFormDataForSaving; - (long long)autoFillActionForFormType:(unsigned long long)a0 onURL:(id)a1 shouldSubmitAfterFilling:(BOOL)a2; - (id)bestAddressBookLabelForFormMetadata:(id)a0 formControlValue:(id)a1; - (id)bestMatchForControl:(id)a0 inDomain:(id)a1 matchingPartialString:(id)a2 autoFillDataType:(long long)a3 preferredLabel:(id)a4 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a5; - (id)bestMatchForControl:(id)a0 inDomain:(id)a1 matchingPartialString:(id)a2 autoFillDataType:(long long)a3 preferredLabel:(id)a4 contact:(id)a5 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a6; - (id)cascadingAddressMatchesForMatch:(id)a0 contact:(id)a1; - (void)clearPreviousDataDatabaseItemsAddedAfterDate:(id)a0; - (void)clearPreviousDataForDomain:(id)a0; - (id)completionDBPath; - (id)domainsWithPreviousData; - (void)domainsWithPreviousDataChanged; - (id)encryptOrDecryptData:(id)a0 encrypt:(BOOL)a1; - (BOOL)hasUserDeniedAccessToCredential:(id)a0 inProtectionSpace:(id)a1; - (id)infoForDomain:(id)a0; - (void)loadCompletionDBIfNeeded; - (id)matchesForControl:(id)a0 atURL:(id)a1 matchingPartialString:(id)a2 autoFillDataType:(long long)a3 contact:(id)a4 allowingIdentifiedAddressBookLabelToOverridePreferredIdentifier:(BOOL)a5; - (void)notifyKeychainWasDirectlyAffectedBySafari; - (BOOL)preferredIdentifierExistsForProperty:(id)a0 withContact:(id)a1; - (id)preferredIdentifierForProperty:(id)a0 withContact:(id)a1; - (void)pruneCompletionDB; - (void)saveCompletionDBSoon; - (id)savedAccountUsingDomainsToConsiderIdenticalWithUsername:(id)a0 url:(id *)a1 host:(id *)a2; - (void)setInfo:(id)a0 forDomain:(id)a1; - (BOOL)shouldAutoFillFromPreviousData; - (id)substituteCredential:(id)a0 inProtectionSpace:(id)a1; - (BOOL)textFieldMetadataMeetsRequirementsForAutomaticStrongPasswordTreatment:(id)a0 form:(id)a1; - (id)uniqueIDOfContact:(id)a0; - (id)valuesForContactFormWithMetadata:(id)a0 inDomain:(id)a1 matches:(id *)a2 multiRoundAutoFillManager:(id)a3; - (id)valuesForContactFormWithMetadata:(id)a0 inDomain:(id)a1 matches:(id *)a2 multiRoundAutoFillManager:(id)a3 contact:(id)a4; - (id)valuesForStandardForm:(id)a0 inDomain:(id)a1 autoFillDataType:(long long)a2 matches:(id *)a3 preferredLabel:(id)a4 multiRoundAutoFillManager:(id)a5; - (void)willSubmitFormWithCredentials:(id)a0 shouldPreferAnnotatedCredentials:(BOOL)a1 atURL:(id)a2 username:(id *)a3 password:(id *)a4 inContext:(id)a5; @end