From 3b3583a416155b2eecf6f5a1a5194117c64db1d6 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 6 Apr 2020 11:41:16 +0200 Subject: [PATCH] Retrieve application id and domain --- .../keepass/autofill/StructureParser.kt | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/autofill/StructureParser.kt b/app/src/main/java/com/kunzisoft/keepass/autofill/StructureParser.kt index b18121108..c37e37817 100644 --- a/app/src/main/java/com/kunzisoft/keepass/autofill/StructureParser.kt +++ b/app/src/main/java/com/kunzisoft/keepass/autofill/StructureParser.kt @@ -42,12 +42,9 @@ internal class StructureParser(private val structure: AssistStructure) { usernameCandidate = null mainLoop@ for (i in 0 until structure.windowNodeCount) { val windowNode = structure.getWindowNodeAt(i) - /* - title.add(windowNode.title) - windowNode.rootViewNode.webDomain?.let { - webDomain.add(it) - } - */ + applicationId = windowNode.title.toString().split("/")[0] + Log.d(TAG, "Autofill applicationId: $applicationId") + if (parseViewNode(windowNode.rootViewNode)) break@mainLoop } @@ -65,6 +62,12 @@ internal class StructureParser(private val structure: AssistStructure) { } private fun parseViewNode(node: AssistStructure.ViewNode): Boolean { + // Get the domain of a web app + node.webDomain?.let { + result?.domain = it + Log.d(TAG, "Autofill domain: $it") + } + // Only parse visible nodes if (node.visibility == View.VISIBLE) { if (node.autofillId != null @@ -192,6 +195,13 @@ internal class StructureParser(private val structure: AssistStructure) { @RequiresApi(api = Build.VERSION_CODES.O) internal class Result { + var applicationId: String? = null + var domain: String? = null + set(value) { + if (field == null) + field = value + } + var usernameId: AutofillId? = null set(value) { if (field == null)