refactoring: simplify autofill code
This commit is contained in:
		| @@ -95,7 +95,7 @@ namespace Kp2aAutofillParserTest | ||||
|             StructureParserBase<TestInputField> parser = | ||||
|                 new StructureParserBase<TestInputField>(new TestLogger(), new TestDalSourceTrustAll()); | ||||
|  | ||||
|             var result = parser.ParseForFill(false, autofillView); | ||||
|             var result = parser.ParseForFill(autofillView); | ||||
|             if (expectedPackageName != null) | ||||
|                 Assert.Equal(expectedPackageName, result.PackageName); | ||||
|             if (expectedWebDomain != null) | ||||
|   | ||||
| @@ -803,12 +803,12 @@ namespace Kp2aAutofillParser | ||||
|  | ||||
|         public AutofillTargetId ParseForFill(bool isManual, AutofillView<FieldT> autofillView) | ||||
|         { | ||||
|             return Parse(true, isManual, autofillView); | ||||
|             return Parse(true, autofillView); | ||||
|         } | ||||
|  | ||||
|         public AutofillTargetId ParseForSave(AutofillView<FieldT> autofillView) | ||||
|         { | ||||
|             return Parse(false, true, autofillView); | ||||
|             return Parse(false, autofillView); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
| @@ -816,8 +816,7 @@ namespace Kp2aAutofillParser | ||||
|         /// </summary> | ||||
|         /// <returns>The parse.</returns> | ||||
|         /// <param name="forFill">If set to <c>true</c> for fill.</param> | ||||
|         /// <param name="isManualRequest"></param> | ||||
|         protected virtual AutofillTargetId Parse(bool forFill, bool isManualRequest, AutofillView<FieldT> autofillView) | ||||
|         protected virtual AutofillTargetId Parse(bool forFill, AutofillView<FieldT> autofillView) | ||||
|         { | ||||
|             AutofillTargetId result = new AutofillTargetId() | ||||
|             { | ||||
|   | ||||
| @@ -63,8 +63,6 @@ namespace keepass2android | ||||
|  | ||||
|             prefs.Edit().PutStringSet("AutoFillDisabledQueries", disabledValues).Commit(); | ||||
|  | ||||
|             bool isManual = Intent.GetBooleanExtra(ChooseForAutofillActivityBase.ExtraIsManualRequest, false); | ||||
|              | ||||
|             Intent reply = new Intent(); | ||||
|             FillResponse.Builder builder = new FillResponse.Builder(); | ||||
|             AssistStructure structure = (AssistStructure)Intent.GetParcelableExtra(AutofillManager.ExtraAssistStructure); | ||||
| @@ -77,7 +75,7 @@ namespace keepass2android | ||||
|             StructureParser parser = new StructureParser(this, structure); | ||||
|             try | ||||
|             { | ||||
|                 parser.ParseForFill(isManual); | ||||
|                 parser.ParseForFill(); | ||||
|  | ||||
|             } | ||||
|             catch (Java.Lang.SecurityException e) | ||||
|   | ||||
| @@ -28,13 +28,11 @@ namespace keepass2android.services.AutofillBase | ||||
| { | ||||
|     public interface IAutofillIntentBuilder | ||||
|     { | ||||
|         PendingIntent GetAuthPendingIntentForResponse(Context context, string query, string queryDomain, string queryPackage, | ||||
|             bool isManualRequest, bool autoReturnFromQuery, AutofillServiceBase.DisplayWarning warning); | ||||
|         PendingIntent GetAuthPendingIntentForResponse(Context context, string query, string queryDomain, string queryPackage, bool autoReturnFromQuery, AutofillServiceBase.DisplayWarning warning); | ||||
|  | ||||
|         PendingIntent GetAuthPendingIntentForWarning(Context context, PwUuid entryUuid, AutofillServiceBase.DisplayWarning warning); | ||||
|  | ||||
|         PendingIntent GetDisablePendingIntentForResponse(Context context, string query,  | ||||
|             bool isManualRequest, bool isDisable); | ||||
|         PendingIntent GetDisablePendingIntentForResponse(Context context, string query, bool isDisable); | ||||
|         Intent GetRestartAppIntent(Context context); | ||||
|  | ||||
|         int AppIconResource { get; } | ||||
| @@ -150,7 +148,7 @@ namespace keepass2android.services.AutofillBase | ||||
|                 var parser = new StructureParser(this, structure); | ||||
|                 try | ||||
|                 { | ||||
|                     query = parser.ParseForFill(isManual); | ||||
|                     query = parser.ParseForFill(); | ||||
|  | ||||
|                 } | ||||
|                 catch (Java.Lang.SecurityException e) | ||||
| @@ -213,16 +211,14 @@ namespace keepass2android.services.AutofillBase | ||||
|                     { | ||||
|                         if (query.WebDomain != null) | ||||
|                             AddQueryDataset(query.WebDomain, | ||||
|                                 query.WebDomain, query.PackageName, | ||||
|                                 isManual, autofillIds, responseBuilder, !hasEntryDataset, | ||||
|                                 query.WebDomain, query.PackageName, autofillIds, responseBuilder, !hasEntryDataset, | ||||
|                                 query.IncompatiblePackageAndDomain | ||||
|                                     ? DisplayWarning.FillDomainInUntrustedApp | ||||
|                                     : DisplayWarning.None, | ||||
|                                 AutofillHelper.ExtractSpec(inlinePresentationSpecs, entryDatasets.Count)); | ||||
|                         else | ||||
|                             AddQueryDataset(query.PackageNameWithPseudoSchema, | ||||
|                                 query.WebDomain, query.PackageName, | ||||
|                                 isManual, autofillIds, responseBuilder, !hasEntryDataset, DisplayWarning.None, | ||||
|                                 query.WebDomain, query.PackageName, autofillIds, responseBuilder, !hasEntryDataset, DisplayWarning.None, | ||||
|                                 AutofillHelper.ExtractSpec(inlinePresentationSpecs, entryDatasets.Count)); | ||||
|                     } | ||||
|  | ||||
| @@ -340,9 +336,9 @@ namespace keepass2android.services.AutofillBase | ||||
|              | ||||
|         } | ||||
|  | ||||
|         private void AddQueryDataset(string query, string queryDomain, string queryPackage, bool isManual, AutofillId[] autofillIds, FillResponse.Builder responseBuilder, bool autoReturnFromQuery, DisplayWarning warning, InlinePresentationSpec inlinePresentationSpec) | ||||
|         private void AddQueryDataset(string query, string queryDomain, string queryPackage, AutofillId[] autofillIds, FillResponse.Builder responseBuilder, bool autoReturnFromQuery, DisplayWarning warning, InlinePresentationSpec inlinePresentationSpec) | ||||
|         { | ||||
|             PendingIntent pendingIntent = IntentBuilder.GetAuthPendingIntentForResponse(this, query, queryDomain, queryPackage, isManual, autoReturnFromQuery, warning); | ||||
|             PendingIntent pendingIntent = IntentBuilder.GetAuthPendingIntentForResponse(this, query, queryDomain, queryPackage, autoReturnFromQuery, warning); | ||||
|             string text = GetString(Resource.String.autofill_sign_in_prompt); | ||||
|             RemoteViews overlayPresentation = AutofillHelper.NewRemoteViews(base.PackageName, | ||||
|                 text, AppNames.LauncherIcon); | ||||
| @@ -396,7 +392,7 @@ namespace keepass2android.services.AutofillBase | ||||
|             if (isQueryDisabled && !isManual) | ||||
|                 return; | ||||
|             bool isForDisable = !isQueryDisabled; | ||||
|             var pendingIntent = IntentBuilder.GetDisablePendingIntentForResponse(this, query, isManual, isForDisable); | ||||
|             var pendingIntent = IntentBuilder.GetDisablePendingIntentForResponse(this, query, isForDisable); | ||||
|  | ||||
|             string text = GetString(isForDisable ? Resource.String.autofill_disable : Resource.String.autofill_enable_for, new Java.Lang.Object[] { GetDisplayNameForQuery(query, this) }); | ||||
|             RemoteViews presentation = AutofillHelper.NewRemoteViews(base.PackageName, | ||||
|   | ||||
| @@ -27,7 +27,6 @@ namespace keepass2android.services.AutofillBase | ||||
|         public static string ExtraQueryPackageString => "EXTRA_QUERY_PACKAGE_STRING"; | ||||
|         public static string ExtraQueryDomainString => "EXTRA_QUERY_DOMAIN_STRING"; | ||||
|         public static string ExtraUseLastOpenedEntry => "EXTRA_USE_LAST_OPENED_ENTRY"; //if set to true, no query UI is displayed. Can be used to just show a warning | ||||
|         public static string ExtraIsManualRequest => "EXTRA_IS_MANUAL_REQUEST"; | ||||
|         public static string ExtraAutoReturnFromQuery => "EXTRA_AUTO_RETURN_FROM_QUERY"; | ||||
|         public static string ExtraDisplayWarning => "EXTRA_DISPLAY_WARNING"; | ||||
|  | ||||
| @@ -185,7 +184,7 @@ namespace keepass2android.services.AutofillBase | ||||
|             ReplyIntent = null; | ||||
|         } | ||||
|  | ||||
|         protected void OnSuccess(FilledAutofillFieldCollection<ViewNodeInputField> clientFormDataMap, bool isManual) | ||||
|         protected void OnSuccess(FilledAutofillFieldCollection<ViewNodeInputField> clientFormDataMap) | ||||
|         { | ||||
|             var intent = Intent; | ||||
|             AssistStructure structure = (AssistStructure)intent.GetParcelableExtra(AutofillManager.ExtraAssistStructure); | ||||
| @@ -196,7 +195,7 @@ namespace keepass2android.services.AutofillBase | ||||
|                 return; | ||||
|             } | ||||
|             StructureParser parser = new StructureParser(this, structure); | ||||
|             parser.ParseForFill(isManual); | ||||
|             parser.ParseForFill(); | ||||
|             AutofillFieldMetadataCollection autofillFields = parser.AutofillFields; | ||||
|             var partitionData = AutofillHintsHelper.FilterForPartition(clientFormDataMap, parser.AutofillFields.FocusedAutofillCanonicalHints); | ||||
|              | ||||
| @@ -229,7 +228,7 @@ namespace keepass2android.services.AutofillBase | ||||
|  | ||||
|         private void ReturnSuccess() | ||||
|         { | ||||
|             OnSuccess(GetDataset(), Intent.GetBooleanExtra(ExtraIsManualRequest, false)); | ||||
|             OnSuccess(GetDataset()); | ||||
|             Finish(); | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -72,7 +72,7 @@ namespace keepass2android.services.AutofillBase | ||||
|             domainSuffixParserCache = new PublicSuffixRuleCache(context); | ||||
|         } | ||||
|  | ||||
|         public AutofillView<ViewNodeInputField> GetAutofillView(bool isManualRequest) | ||||
|         public AutofillView<ViewNodeInputField> GetAutofillView() | ||||
|         { | ||||
|             AutofillView<ViewNodeInputField> autofillView = new AutofillView<ViewNodeInputField>(); | ||||
|              | ||||
| @@ -83,7 +83,7 @@ namespace keepass2android.services.AutofillBase | ||||
|                 var node = _structure.GetWindowNodeAt(i); | ||||
|  | ||||
|                 var view = node.RootViewNode; | ||||
|                 ParseRecursive(autofillView, view, isManualRequest); | ||||
|                 ParseRecursive(autofillView, view); | ||||
|             } | ||||
|  | ||||
|             autofillView.PackageId = autofillView.PackageId ?? _structure.ActivityComponent.PackageName; | ||||
| @@ -93,7 +93,7 @@ namespace keepass2android.services.AutofillBase | ||||
|         } | ||||
|  | ||||
|  | ||||
|         void ParseRecursive(AutofillView<ViewNodeInputField> autofillView, AssistStructure.ViewNode viewNode, bool isManualRequest) | ||||
|         void ParseRecursive(AutofillView<ViewNodeInputField> autofillView, AssistStructure.ViewNode viewNode) | ||||
|         { | ||||
|             String webDomain = viewNode.WebDomain; | ||||
|             if ((autofillView.PackageId == null) && (!string.IsNullOrWhiteSpace(viewNode.IdPackage)) && | ||||
| @@ -129,7 +129,7 @@ namespace keepass2android.services.AutofillBase | ||||
|             { | ||||
|                 for (int i = 0; i < childrenSize; i++) | ||||
|                 { | ||||
|                     ParseRecursive(autofillView, viewNode.GetChildAt(i), isManualRequest); | ||||
|                     ParseRecursive(autofillView, viewNode.GetChildAt(i)); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| @@ -159,11 +159,11 @@ namespace keepass2android.services.AutofillBase | ||||
|  | ||||
|         } | ||||
|  | ||||
|         protected override AutofillTargetId Parse(bool forFill, bool isManualRequest, AutofillView<ViewNodeInputField> autofillView) | ||||
|         protected override AutofillTargetId Parse(bool forFill, AutofillView<ViewNodeInputField> autofillView) | ||||
|         { | ||||
|             if (autofillView == null) | ||||
|                 Kp2aLog.Log("Received null autofill view!"); | ||||
|             var result = base.Parse(forFill, isManualRequest, autofillView); | ||||
|             var result = base.Parse(forFill, autofillView); | ||||
|  | ||||
|             Kp2aLog.Log("Parsing done"); | ||||
|  | ||||
| @@ -185,14 +185,14 @@ namespace keepass2android.services.AutofillBase | ||||
|  | ||||
|         public AutofillTargetId ParseForSave() | ||||
|         { | ||||
|             var autofillView = new AutofillViewFromAssistStructureFinder(_context, _structure).GetAutofillView(true); | ||||
|             return Parse(false, true, autofillView); | ||||
|             var autofillView = new AutofillViewFromAssistStructureFinder(_context, _structure).GetAutofillView(); | ||||
|             return Parse(false, autofillView); | ||||
|         } | ||||
|  | ||||
|         public StructureParserBase<ViewNodeInputField>.AutofillTargetId ParseForFill(bool isManual) | ||||
|         public StructureParserBase<ViewNodeInputField>.AutofillTargetId ParseForFill() | ||||
|         { | ||||
|             var autofillView = new AutofillViewFromAssistStructureFinder(_context, _structure).GetAutofillView(isManual); | ||||
|             return Parse(true, isManual, autofillView); | ||||
|             var autofillView = new AutofillViewFromAssistStructureFinder(_context, _structure).GetAutofillView(); | ||||
|             return Parse(true, autofillView); | ||||
|         } | ||||
|          | ||||
|  | ||||
|   | ||||
| @@ -17,14 +17,12 @@ namespace keepass2android.services | ||||
|     { | ||||
|         private static int _pendingIntentRequestCode = 0; | ||||
|  | ||||
|         public PendingIntent GetAuthPendingIntentForResponse(Context context, string query, string queryDomain, string queryPackage, | ||||
|             bool isManualRequest, bool autoReturnFromQuery, AutofillServiceBase.DisplayWarning warning) | ||||
|         public PendingIntent GetAuthPendingIntentForResponse(Context context, string query, string queryDomain, string queryPackage, bool autoReturnFromQuery, AutofillServiceBase.DisplayWarning warning) | ||||
|         { | ||||
|             Intent intent = new Intent(context, typeof(ChooseForAutofillActivity)); | ||||
|             intent.PutExtra(ChooseForAutofillActivityBase.ExtraQueryString, query); | ||||
|             intent.PutExtra(ChooseForAutofillActivityBase.ExtraQueryDomainString, queryDomain); | ||||
|             intent.PutExtra(ChooseForAutofillActivityBase.ExtraQueryPackageString, queryPackage); | ||||
|             intent.PutExtra(ChooseForAutofillActivityBase.ExtraIsManualRequest, isManualRequest); | ||||
|             intent.PutExtra(ChooseForAutofillActivityBase.ExtraAutoReturnFromQuery, autoReturnFromQuery); | ||||
|             intent.PutExtra(ChooseForAutofillActivityBase.ExtraDisplayWarning, (int)warning); | ||||
|             return PendingIntent.GetActivity(context, _pendingIntentRequestCode++, intent, Util.AddMutabilityFlag(PendingIntentFlags.CancelCurrent, PendingIntentFlags.Mutable)); | ||||
| @@ -40,12 +38,10 @@ namespace keepass2android.services | ||||
|             return PendingIntent.GetActivity(context, _pendingIntentRequestCode++, intent, Util.AddMutabilityFlag(PendingIntentFlags.CancelCurrent, PendingIntentFlags.Mutable)); | ||||
|         } | ||||
|  | ||||
|         public PendingIntent GetDisablePendingIntentForResponse(Context context, string query, | ||||
|             bool isManualRequest, bool isDisable) | ||||
|         public PendingIntent GetDisablePendingIntentForResponse(Context context, string query, bool isDisable) | ||||
|         { | ||||
|             Intent intent = new Intent(context, typeof(DisableAutofillForQueryActivity)); | ||||
|             intent.PutExtra(ChooseForAutofillActivityBase.ExtraQueryString, query); | ||||
|             intent.PutExtra(ChooseForAutofillActivityBase.ExtraIsManualRequest, isManualRequest); | ||||
|             intent.PutExtra(DisableAutofillForQueryActivity.ExtraIsDisable, isDisable); | ||||
|  | ||||
|             return PendingIntent.GetActivity(context, _pendingIntentRequestCode++, intent, Util.AddMutabilityFlag(PendingIntentFlags.CancelCurrent, PendingIntentFlags.Immutable)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Crocoll
					Philipp Crocoll