Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a61b365 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

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
parent ec740c30
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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);
    }
}
+2 −10
Original line number Diff line number Diff line
@@ -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()));
            });
        });
    }
+21 −0
Original line number Diff line number Diff line
@@ -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();
    }
}