From 25fe39d0343a6009c3ae61d0a209ba08170549e5 Mon Sep 17 00:00:00 2001 From: irineu silva Date: Sat, 2 Dec 2023 02:48:33 -0300 Subject: [PATCH 1/4] fix(validator): focus on interactive container --- app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt b/app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt index ec9e5076..6aae13db 100644 --- a/app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt +++ b/app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt @@ -98,7 +98,7 @@ object NodeValidator { if (mustReadContent(node)) return false - return isClickable(node) && hasReadableChild(node) + return hasInteraction(node) && hasReadableChild(node) } /** From 46a2b3a596c842fe6510c18738df27ab53b4d1b1 Mon Sep 17 00:00:00 2001 From: irineu silva Date: Tue, 5 Dec 2023 18:08:15 -0300 Subject: [PATCH 2/4] chore(test-module): add list case --- .../neo/test/fragment/ReadChildrenFragment.kt | 57 ++++++++++++++++++- .../res/layout/fragment_read_children.xml | 39 ++++++++++++- 2 files changed, 92 insertions(+), 4 deletions(-) diff --git a/test/src/main/java/com/neo/test/fragment/ReadChildrenFragment.kt b/test/src/main/java/com/neo/test/fragment/ReadChildrenFragment.kt index 28326c9b..f84f5fc7 100644 --- a/test/src/main/java/com/neo/test/fragment/ReadChildrenFragment.kt +++ b/test/src/main/java/com/neo/test/fragment/ReadChildrenFragment.kt @@ -1,6 +1,61 @@ package com.neo.test.fragment +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.RecyclerView import com.neo.test.R +import com.neo.test.databinding.FragmentReadChildrenBinding -class ReadChildrenFragment : Fragment(R.layout.fragment_read_children) +class ReadChildrenFragment : Fragment(R.layout.fragment_read_children) { + + private var _binding: FragmentReadChildrenBinding? = null + private val binding get() = _binding!! + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + _binding = FragmentReadChildrenBinding.bind(view) + + binding.recyclerView.adapter = TestAdapter() + } + + override fun onDestroyView() { + super.onDestroyView() + + _binding = null + } +} + +private class TestAdapter : RecyclerView.Adapter() { + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): Holder { + + return Holder( + LayoutInflater.from(parent.context).inflate( + android.R.layout.simple_list_item_1, + parent, + false + ) + ) + } + + override fun getItemCount() = 2 + + override fun onBindViewHolder(holder: Holder, position: Int) { + holder.text1.text = "test: $position" + } + + class Holder( + private val binding: View + ) : RecyclerView.ViewHolder(binding) { + + val text1 = itemView.findViewById(android.R.id.text1) + } +} diff --git a/test/src/main/res/layout/fragment_read_children.xml b/test/src/main/res/layout/fragment_read_children.xml index 65e21286..59a83598 100644 --- a/test/src/main/res/layout/fragment_read_children.xml +++ b/test/src/main/res/layout/fragment_read_children.xml @@ -2,11 +2,15 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:padding="8dp"> @@ -49,4 +55,31 @@ + + + + + + + + From 61a21aa932bd15016959c66f383aa0fd9b4aa375 Mon Sep 17 00:00:00 2001 From: irineu silva Date: Tue, 5 Dec 2023 18:46:40 -0300 Subject: [PATCH 3/4] fix(validator): don't focus on explorable list --- .../java/com/neo/speaktouch/utils/NodeValidator.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt b/app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt index 6aae13db..d5d9d26d 100644 --- a/app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt +++ b/app/src/main/java/com/neo/speaktouch/utils/NodeValidator.kt @@ -67,6 +67,9 @@ object NodeValidator { */ private fun hasReadableChild(node: AccessibilityNodeInfoCompat): Boolean { + // List items must be announced individually + if (isExplorableCollection(node)) return false + for (child in node) { if (!isValidForAccessibility(child)) continue if (isReadableAsChild(child)) return true @@ -106,6 +109,9 @@ object NodeValidator { */ fun hasContentToRead(node: AccessibilityNodeInfoCompat): Boolean { + // List items must be announced individually + if (isExplorableCollection(node)) return false + if (node.isCheckable) return true // TODO: Consider removing after issue #88 @@ -114,6 +120,14 @@ object NodeValidator { return hasTextToRead(node) } + /** + * @return true if [node] is an explorable collection + */ + fun isExplorableCollection(node: AccessibilityNodeInfoCompat) : Boolean { + + return node.collectionInfo != null && node.childCount > 0 + } + /** * @return true if [node] cannot be read directly */ From 3b2be3a6f08ba0dbeb4ed149159511ca0dbfedd9 Mon Sep 17 00:00:00 2001 From: Irineu333 Date: Tue, 26 Dec 2023 15:00:22 -0300 Subject: [PATCH 4/4] fix(build): no locally installed toolchains match and toolchain download repositories have not been configured. --- buildSrc/settings.gradle.kts | 4 ++++ settings.gradle.kts | 4 +--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts index 35d1aeb5..e5dfd1ce 100644 --- a/buildSrc/settings.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -29,3 +29,7 @@ dependencyResolutionManagement { } } } + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0" +} diff --git a/settings.gradle.kts b/settings.gradle.kts index c07aa791..e222c662 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -34,9 +34,7 @@ dependencyResolutionManagement { } } -plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0" -} + rootProject.name = "SpeakTouch"