From 2a61b3656b4bea3a6270a43ad1d9eff3d479931c Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Mon, 15 Aug 2022 13:41:44 -0400 Subject: [PATCH] Update Bridged app link when NLS access changes Test: BridgedAppsLinkPreferenceControllerTest Test: manual; turn an NLS on/off, verify correct disabled state for fields Fixes: 240461761 Change-Id: Ib5a5365f7477c2a8d620ced2af96ace364b292e2 --- .../BridgedAppsLinkPreferenceController.java | 10 +++++++-- .../NotificationAccessDetails.java | 12 ++--------- ...idgedAppsLinkPreferenceControllerTest.java | 21 +++++++++++++++++++ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/BridgedAppsLinkPreferenceController.java b/src/com/android/settings/applications/specialaccess/notificationaccess/BridgedAppsLinkPreferenceController.java index 1c787babad2..6a641b30fcc 100644 --- a/src/com/android/settings/applications/specialaccess/notificationaccess/BridgedAppsLinkPreferenceController.java +++ b/src/com/android/settings/applications/specialaccess/notificationaccess/BridgedAppsLinkPreferenceController.java @@ -18,10 +18,11 @@ import android.content.Context; import android.os.Build; import android.service.notification.NotificationListenerFilter; +import androidx.preference.Preference; + import com.android.settings.core.BasePreferenceController; import com.android.settings.notification.NotificationBackend; - public class BridgedAppsLinkPreferenceController extends BasePreferenceController { private ComponentName mCn; @@ -61,7 +62,6 @@ public class BridgedAppsLinkPreferenceController extends BasePreferenceControlle if (mTargetSdk > Build.VERSION_CODES.S) { return AVAILABLE; } - mNlf = mNm.getListenerFilter(mCn, mUserId); if (!mNlf.areAllTypesAllowed() || !mNlf.getDisallowedPackages().isEmpty()) { return AVAILABLE; @@ -69,4 +69,10 @@ public class BridgedAppsLinkPreferenceController extends BasePreferenceControlle } return DISABLED_DEPENDENT_SETTING; } + + @Override + public void updateState(Preference pref) { + pref.setEnabled(getAvailabilityStatus() == AVAILABLE); + super.updateState(pref); + } } diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java b/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java index da25f17c138..e6feebb92ab 100644 --- a/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java +++ b/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java @@ -233,11 +233,7 @@ public class NotificationAccessDetails extends DashboardFragment { apc.updateState(screen.findPreference(apc.getPreferenceKey())); getPreferenceControllers().forEach(controllers -> { controllers.forEach(controller -> { - if (controller instanceof TypeFilterPreferenceController) { - TypeFilterPreferenceController tfpc = - (TypeFilterPreferenceController) controller; - tfpc.updateState(screen.findPreference(tfpc.getPreferenceKey())); - } + controller.updateState(screen.findPreference(controller.getPreferenceKey())); }); }); } @@ -249,11 +245,7 @@ public class NotificationAccessDetails extends DashboardFragment { apc.updateState(screen.findPreference(apc.getPreferenceKey())); getPreferenceControllers().forEach(controllers -> { controllers.forEach(controller -> { - if (controller instanceof TypeFilterPreferenceController) { - TypeFilterPreferenceController tfpc = - (TypeFilterPreferenceController) controller; - tfpc.updateState(screen.findPreference(tfpc.getPreferenceKey())); - } + controller.updateState(screen.findPreference(controller.getPreferenceKey())); }); }); } diff --git a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/BridgedAppsLinkPreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/BridgedAppsLinkPreferenceControllerTest.java index c5941313946..87998798193 100644 --- a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/BridgedAppsLinkPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/BridgedAppsLinkPreferenceControllerTest.java @@ -31,6 +31,7 @@ import android.content.Context; import android.os.Build; import android.service.notification.NotificationListenerFilter; +import androidx.preference.Preference; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -68,6 +69,11 @@ public class BridgedAppsLinkPreferenceControllerTest { mController.setTargetSdk(Build.VERSION_CODES.CUR_DEVELOPMENT + 1); assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_DEPENDENT_SETTING); + + // disables field + Preference p = new Preference(mContext); + mController.updateState(p); + assertThat(p.isEnabled()).isFalse(); } @Test @@ -77,6 +83,11 @@ public class BridgedAppsLinkPreferenceControllerTest { when(mNm.getListenerFilter(mCn, 0)).thenReturn(new NotificationListenerFilter()); assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_DEPENDENT_SETTING); + + // disables field + Preference p = new Preference(mContext); + mController.updateState(p); + assertThat(p.isEnabled()).isFalse(); } @Test @@ -88,6 +99,11 @@ public class BridgedAppsLinkPreferenceControllerTest { when(mNm.getListenerFilter(mCn, 0)).thenReturn(nlf); assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); + + // enables field + Preference p = new Preference(mContext); + mController.updateState(p); + assertThat(p.isEnabled()).isTrue(); } @Test @@ -97,5 +113,10 @@ public class BridgedAppsLinkPreferenceControllerTest { when(mNm.getListenerFilter(mCn, 0)).thenReturn(new NotificationListenerFilter()); assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); + + // enables field + Preference p = new Preference(mContext); + mController.updateState(p); + assertThat(p.isEnabled()).isTrue(); } }