Better extra key implementation

This commit is contained in:
J-Jamet
2021-12-09 14:29:41 +01:00
parent f780f2725b
commit daafd83df9
2 changed files with 17 additions and 11 deletions

View File

@@ -25,7 +25,6 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.inputmethod.InlineSuggestionsRequest
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
@@ -35,7 +34,6 @@ import com.kunzisoft.keepass.activities.helpers.SpecialMode
import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity
import com.kunzisoft.keepass.autofill.AutofillComponent import com.kunzisoft.keepass.autofill.AutofillComponent
import com.kunzisoft.keepass.autofill.AutofillHelper import com.kunzisoft.keepass.autofill.AutofillHelper
import com.kunzisoft.keepass.autofill.AutofillHelper.EXTRA_INLINE_SUGGESTIONS_REQUEST
import com.kunzisoft.keepass.autofill.CompatInlineSuggestionsRequest import com.kunzisoft.keepass.autofill.CompatInlineSuggestionsRequest
import com.kunzisoft.keepass.autofill.KeeAutofillService import com.kunzisoft.keepass.autofill.KeeAutofillService
import com.kunzisoft.keepass.database.element.Database import com.kunzisoft.keepass.database.element.Database
@@ -69,12 +67,9 @@ class AutofillLauncherActivity : DatabaseModeActivity() {
SpecialMode.SELECTION -> { SpecialMode.SELECTION -> {
intent.getBundleExtra(KEY_SELECTION_BUNDLE)?.let { bundle -> intent.getBundleExtra(KEY_SELECTION_BUNDLE)?.let { bundle ->
// To pass extra inline request // To pass extra inline request
var compatInlineSuggestionsRequest: CompatInlineSuggestionsRequest? = null
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
bundle.getParcelable<CompatInlineSuggestionsRequest>( compatInlineSuggestionsRequest = bundle.getParcelable(KEY_INLINE_SUGGESTION)
EXTRA_INLINE_SUGGESTIONS_REQUEST
)?.let { inlineSuggestionRequest ->
intent.putExtra(EXTRA_INLINE_SUGGESTIONS_REQUEST, inlineSuggestionRequest)
}
} }
// Build search param // Build search param
bundle.getParcelable<SearchInfo>(KEY_SEARCH_INFO)?.let { searchInfo -> bundle.getParcelable<SearchInfo>(KEY_SEARCH_INFO)?.let { searchInfo ->
@@ -83,9 +78,19 @@ class AutofillLauncherActivity : DatabaseModeActivity() {
searchInfo.webDomain searchInfo.webDomain
) { concreteWebDomain -> ) { concreteWebDomain ->
// Pass extra for Autofill (EXTRA_ASSIST_STRUCTURE) // Pass extra for Autofill (EXTRA_ASSIST_STRUCTURE)
val autofillComponent = AutofillHelper.retrieveAutofillComponent(intent) val assistStructure = AutofillHelper
.retrieveAutofillComponent(intent)
?.assistStructure
val newAutofillComponent = if (assistStructure != null) {
AutofillComponent(
assistStructure,
compatInlineSuggestionsRequest
)
} else {
null
}
searchInfo.webDomain = concreteWebDomain searchInfo.webDomain = concreteWebDomain
launchSelection(database, autofillComponent, searchInfo) launchSelection(database, newAutofillComponent, searchInfo)
} }
} }
} }
@@ -210,6 +215,7 @@ class AutofillLauncherActivity : DatabaseModeActivity() {
private const val KEY_SELECTION_BUNDLE = "KEY_SELECTION_BUNDLE" private const val KEY_SELECTION_BUNDLE = "KEY_SELECTION_BUNDLE"
private const val KEY_SEARCH_INFO = "KEY_SEARCH_INFO" private const val KEY_SEARCH_INFO = "KEY_SEARCH_INFO"
private const val KEY_INLINE_SUGGESTION = "KEY_INLINE_SUGGESTION"
private const val KEY_REGISTER_INFO = "KEY_REGISTER_INFO" private const val KEY_REGISTER_INFO = "KEY_REGISTER_INFO"
@@ -223,7 +229,7 @@ class AutofillLauncherActivity : DatabaseModeActivity() {
putExtra(KEY_SELECTION_BUNDLE, Bundle().apply { putExtra(KEY_SELECTION_BUNDLE, Bundle().apply {
putParcelable(KEY_SEARCH_INFO, searchInfo) putParcelable(KEY_SEARCH_INFO, searchInfo)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
putParcelable(EXTRA_INLINE_SUGGESTIONS_REQUEST, compatInlineSuggestionsRequest) putParcelable(KEY_INLINE_SUGGESTION, compatInlineSuggestionsRequest)
} }
}) })
}, },

View File

@@ -62,7 +62,7 @@ import com.kunzisoft.keepass.utils.LOCK_ACTION
object AutofillHelper { object AutofillHelper {
private const val EXTRA_ASSIST_STRUCTURE = AutofillManager.EXTRA_ASSIST_STRUCTURE private const val EXTRA_ASSIST_STRUCTURE = AutofillManager.EXTRA_ASSIST_STRUCTURE
const val EXTRA_INLINE_SUGGESTIONS_REQUEST = "com.kunzisoft.keepass.autofill.INLINE_SUGGESTIONS_REQUEST" private const val EXTRA_INLINE_SUGGESTIONS_REQUEST = "com.kunzisoft.keepass.autofill.INLINE_SUGGESTIONS_REQUEST"
fun retrieveAutofillComponent(intent: Intent?): AutofillComponent? { fun retrieveAutofillComponent(intent: Intent?): AutofillComponent? {
intent?.getParcelableExtra<AssistStructure?>(EXTRA_ASSIST_STRUCTURE)?.let { assistStructure -> intent?.getParcelableExtra<AssistStructure?>(EXTRA_ASSIST_STRUCTURE)?.let { assistStructure ->