From 8e5bd81c569be1c8a6e31118dc3a38f092f8fefb Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Mon, 22 Jan 2018 09:36:41 -0800 Subject: [PATCH] Expose selector draw condition for test There is no other way for a test to inspect whether the selector drawable will be drawn or not. This adds a hidden test api to expose it Bug: 67881712 Test: AbsListViewTest#testSelectorOnScreen Change-Id: I3b6d25a0c8cb0c5f6c8bfc45eaa2660caa133b7d --- api/test-current.txt | 4 ++++ core/java/android/widget/AbsListView.java | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/api/test-current.txt b/api/test-current.txt index 6941731c29cd8..4597945eca161 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -1037,6 +1037,10 @@ package android.view.autofill { package android.widget { + public abstract class AbsListView extends android.widget.AdapterView implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener { + method public final boolean shouldDrawSelector(); + } + public class CalendarView extends android.widget.FrameLayout { method public boolean getBoundsForDate(long, android.graphics.Rect); } diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 6bee58f96f8a6..3f0d006e49cf4 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -19,6 +19,7 @@ package android.widget; import android.annotation.ColorInt; import android.annotation.DrawableRes; import android.annotation.NonNull; +import android.annotation.TestApi; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; @@ -2744,13 +2745,21 @@ public abstract class AbsListView extends AdapterView implements Te } private void drawSelector(Canvas canvas) { - if (!mSelectorRect.isEmpty()) { + if (shouldDrawSelector()) { final Drawable selector = mSelector; selector.setBounds(mSelectorRect); selector.draw(canvas); } } + /** + * @hide + */ + @TestApi + public final boolean shouldDrawSelector() { + return !mSelectorRect.isEmpty(); + } + /** * Controls whether the selection highlight drawable should be drawn on top of the item or * behind it.