From 98c8b35138d7353de2de5d44a4c6ed12b96089a5 Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Fri, 14 Mar 2025 00:36:45 +0100 Subject: [PATCH] allow to add autofill domain info into text input --- .../duckduckgo/app/browser/BrowserTabFragment.kt | 2 ++ .../common/ui/view/text/DaxTextInput.kt | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt index 0a91f8b8b0ac..09b268a6c533 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt @@ -2368,6 +2368,8 @@ class BrowserTabFragment : val authDialogBinding = HttpAuthenticationBinding.inflate(layoutInflater) authDialogBinding.httpAuthInformationText.text = getString(R.string.authenticationDialogMessage, request.site) + authDialogBinding.usernameInput.setAutofillDomain(request.site) + authDialogBinding.passwordInput.setAutofillDomain(request.site) CustomAlertDialogBuilder(requireActivity()) .setPositiveButton(R.string.authenticationDialogPositiveButton) .setNegativeButton(R.string.authenticationDialogNegativeButton) diff --git a/common/common-ui/src/main/java/com/duckduckgo/common/ui/view/text/DaxTextInput.kt b/common/common-ui/src/main/java/com/duckduckgo/common/ui/view/text/DaxTextInput.kt index 211962f4f21e..d588022e9603 100644 --- a/common/common-ui/src/main/java/com/duckduckgo/common/ui/view/text/DaxTextInput.kt +++ b/common/common-ui/src/main/java/com/duckduckgo/common/ui/view/text/DaxTextInput.kt @@ -33,6 +33,7 @@ import android.util.AttributeSet import android.util.SparseArray import android.view.View import android.view.View.OnFocusChangeListener +import android.view.ViewStructure import android.view.inputmethod.EditorInfo import android.widget.TextView.OnEditorActionListener import androidx.annotation.DrawableRes @@ -102,6 +103,7 @@ class DaxTextInput @JvmOverloads constructor( private var isPasswordShown: Boolean = false private var isClickable: Boolean = false private var internalFocusChangedListener: OnFocusChangeListener? = null + private var autofillDomain: String = "" init { context.obtainStyledAttributes( @@ -226,6 +228,20 @@ class DaxTextInput @JvmOverloads constructor( } } + fun setAutofillDomain(domain: String) { + this.autofillDomain = domain + } + + override fun onProvideAutofillStructure( + structure: ViewStructure?, + flags: Int, + ) { + super.onProvideAutofillStructure(structure, flags) + this.autofillDomain.takeUnless { it.isBlank() }?.let { + structure?.setWebDomain(it) + } + } + private fun handleIsEditableChangeForEndIcon(isEditable: Boolean) { if (binding.internalInputLayout.endIconMode != END_ICON_NONE) { binding.internalInputLayout.isEndIconVisible = !isEditable