Merge pull request #2494 from PhilippC/2449--ignore-android-settings-for-autofill
ignore Android settings for Autofill, fixes #2449
This commit is contained in:
		| @@ -71,6 +71,12 @@ namespace Kp2aAutofillParserTest | ||||
|             var resourceName = "Kp2aAutofillParserTest.com-expressvpn-vpn-android13.json"; | ||||
|             RunTestFromAutofillInput(resourceName, "com.expressvpn.vpn", null); | ||||
|         } | ||||
|         [Fact] | ||||
|         public void TestIgnoresAndroidSettings() | ||||
|         { | ||||
|             var resourceName = "Kp2aAutofillParserTest.android14-settings.json"; | ||||
|             RunTestFromAutofillInput(resourceName, "com.android.settings", null); | ||||
|         } | ||||
|  | ||||
|         private void RunTestFromAutofillInput(string resourceName, string expectedPackageName = null, string expectedWebDomain = null) | ||||
|         { | ||||
|   | ||||
| @@ -9,6 +9,7 @@ | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <None Remove="android14-settings.json" /> | ||||
|     <None Remove="chrome-android10-amazon-it.json" /> | ||||
|     <None Remove="com-expressvpn-vpn-android13.json" /> | ||||
|     <None Remove="com-ifs-banking-fiid3364-android13.json" /> | ||||
| @@ -54,6 +55,9 @@ | ||||
|     <EmbeddedResource Include="com-servicenet-mobile-no-focus.json"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </EmbeddedResource> | ||||
|     <EmbeddedResource Include="android14-settings.json"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </EmbeddedResource> | ||||
|     <EmbeddedResource Include="imdb.json"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </EmbeddedResource> | ||||
|   | ||||
							
								
								
									
										99
									
								
								src/Kp2aAutofillParserTest/android14-settings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								src/Kp2aAutofillParserTest/android14-settings.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,99 @@ | ||||
| { | ||||
|   "InputFields": [ | ||||
|     { | ||||
|       "IdEntry": null, | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.widget.FrameLayout", | ||||
|       "AutofillHints": null, | ||||
|       "IsFocused": false, | ||||
|       "InputType": 0, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null | ||||
|     }, | ||||
|     { | ||||
|       "IdEntry": "content_parent", | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.widget.LinearLayout", | ||||
|       "AutofillHints": null, | ||||
|       "IsFocused": false, | ||||
|       "InputType": 0, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null | ||||
|     }, | ||||
|     { | ||||
|       "IdEntry": "content_frame", | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.widget.FrameLayout", | ||||
|       "AutofillHints": null, | ||||
|       "IsFocused": false, | ||||
|       "InputType": 0, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null | ||||
|     }, | ||||
|     { | ||||
|       "IdEntry": "main_content", | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.widget.FrameLayout", | ||||
|       "AutofillHints": null, | ||||
|       "IsFocused": false, | ||||
|       "InputType": 0, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null | ||||
|     }, | ||||
|     { | ||||
|       "IdEntry": "password_entry", | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.widget.EditText", | ||||
|       "AutofillHints": [ | ||||
|         "passwordAuto" | ||||
|       ], | ||||
|       "IsFocused": true, | ||||
|       "InputType": 18, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null, | ||||
|       "ExpectedAssignedHints": [ "password" ] | ||||
|     }, | ||||
|     { | ||||
|       "IdEntry": "checkbox", | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.widget.CheckBox", | ||||
|       "AutofillHints": null, | ||||
|       "IsFocused": false, | ||||
|       "InputType": 0, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null | ||||
|     }, | ||||
|     { | ||||
|       "IdEntry": "button_bar", | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.widget.RelativeLayout", | ||||
|       "AutofillHints": null, | ||||
|       "IsFocused": false, | ||||
|       "InputType": 0, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null | ||||
|     }, | ||||
|     { | ||||
|       "IdEntry": "switch_bar", | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.widget.LinearLayout", | ||||
|       "AutofillHints": null, | ||||
|       "IsFocused": false, | ||||
|       "InputType": 0, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null | ||||
|     }, | ||||
|     { | ||||
|       "IdEntry": "action_bar", | ||||
|       "Hint": null, | ||||
|       "ClassName": "android.view.ViewGroup", | ||||
|       "AutofillHints": null, | ||||
|       "IsFocused": false, | ||||
|       "InputType": 0, | ||||
|       "HtmlInfoTag": null, | ||||
|       "HtmlInfoTypeAttribute": null | ||||
|     } | ||||
|   ], | ||||
|   "PackageId": "com.android.settings", | ||||
|   "WebDomain": null | ||||
| } | ||||
| @@ -40,6 +40,26 @@ namespace keepass2android.services.AutofillBase | ||||
|  | ||||
|     public abstract class AutofillServiceBase: AutofillService | ||||
|     { | ||||
|         private HashSet<string> _internal_blacklistedUris = null; | ||||
|  | ||||
|         public HashSet<string> BlacklistedUris | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 if (_internal_blacklistedUris == null) | ||||
|                 { | ||||
|                     _internal_blacklistedUris = new HashSet<string>() | ||||
|                     { | ||||
|                         KeePass.AndroidAppScheme + "android", | ||||
|                         KeePass.AndroidAppScheme + "com.android.settings", | ||||
|                         KeePass.AndroidAppScheme + this.PackageName | ||||
|                     }; | ||||
|                 } | ||||
|  | ||||
|                 return _internal_blacklistedUris; | ||||
|  | ||||
|             } | ||||
|         } | ||||
|         protected override void AttachBaseContext(Context baseContext) | ||||
|         { | ||||
|             base.AttachBaseContext(LocaleManager.setLocale(baseContext)); | ||||
| @@ -386,7 +406,7 @@ namespace keepass2android.services.AutofillBase | ||||
|  | ||||
|         private bool CanAutofill(StructureParser.AutofillTargetId query, bool isManual) | ||||
|         { | ||||
|             if (query.PackageNameWithPseudoSchema == KeePass.AndroidAppScheme+"android" || query.PackageNameWithPseudoSchema == KeePass.AndroidAppScheme + this.PackageName) | ||||
|             if (BlacklistedUris.Contains(query.PackageNameWithPseudoSchema)) | ||||
|                 return false; | ||||
|             if (!isManual) | ||||
|             { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 PhilippC
					PhilippC