From 3499db23ff17ece0644812346e0d3e804a21379d Mon Sep 17 00:00:00 2001 From: Weng Su Date: Mon, 19 Sep 2022 02:22:47 +0800 Subject: [PATCH] Show greyed out icon when Wi-Fi network is restricted to configurate - Use Drawable#setTintList() instead of Drawable#setTint() to show greyed out icon when the preference is disabled. Bug: 233175849 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiEntryPreferenceTest Change-Id: I451106530bc19bc733fd58a57e8ac336b023e65e --- .../android/settings/wifi/WifiEntryPreference.java | 7 +++++-- .../settings/wifi/WifiEntryPreferenceTest.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/wifi/WifiEntryPreference.java b/src/com/android/settings/wifi/WifiEntryPreference.java index e74f269ae8d..fedd9c977e9 100644 --- a/src/com/android/settings/wifi/WifiEntryPreference.java +++ b/src/com/android/settings/wifi/WifiEntryPreference.java @@ -201,7 +201,8 @@ public class WifiEntryPreference extends Preference implements WifiEntry.WifiEnt return accent ? android.R.attr.colorAccent : android.R.attr.colorControlNormal; } - private void updateIcon(boolean showX, int level) { + @VisibleForTesting + void updateIcon(boolean showX, int level) { if (level == -1) { setIcon(null); return; @@ -209,7 +210,9 @@ public class WifiEntryPreference extends Preference implements WifiEntry.WifiEnt final Drawable drawable = mIconInjector.getIcon(showX, level); if (drawable != null) { - drawable.setTint(Utils.getColorAttrDefaultColor(getContext(), getIconColorAttr())); + // Must use Drawable#setTintList() instead of Drawable#setTint() to show the grey + // icon when the preference is disabled. + drawable.setTintList(Utils.getColorAttr(getContext(), getIconColorAttr())); setIcon(drawable); } else { setIcon(null); diff --git a/tests/robotests/src/com/android/settings/wifi/WifiEntryPreferenceTest.java b/tests/robotests/src/com/android/settings/wifi/WifiEntryPreferenceTest.java index b782a702a0e..a5d63dbd34d 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiEntryPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiEntryPreferenceTest.java @@ -17,6 +17,8 @@ package com.android.settings.wifi; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; @@ -252,4 +254,14 @@ public class WifiEntryPreferenceTest { assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.GONE); } + + @Test + public void updateIcon_ShouldSetTintListForDrawable() { + WifiEntryPreference pref = + new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector); + + pref.updateIcon(false /* showX */, 4 /* level */); + + verify(mMockDrawable4).setTintList(any()); + } }