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

Commit 6a8f11b2 authored by Fan Zhang's avatar Fan Zhang
Browse files

Hide esos setting if no app provides esos functionality

When user disables OEM app that provides esos, the setting is hidden as
well.

See more details on bug.

Bug: 178654110
Test: robotests
Change-Id: I7a0763381d3321124f4208a58bb8e10cf884f7c1
parent 7c041874
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ public class EmergencyGestureEntrypointPreferenceController extends BasePreferen
    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        final boolean canHandleClicks = !mUseCustomIntent || mIntent != null;
        final boolean canHandleClicks = canHandleClicks();
        if (preference != null) {
            preference.setEnabled(canHandleClicks);
        }
@@ -86,6 +86,9 @@ public class EmergencyGestureEntrypointPreferenceController extends BasePreferen
        if (!isConfigEnabled) {
            return UNSUPPORTED_ON_DEVICE;
        }
        if (!canHandleClicks()) {
            return UNSUPPORTED_ON_DEVICE;
        }
        return AVAILABLE;
    }

@@ -117,6 +120,13 @@ public class EmergencyGestureEntrypointPreferenceController extends BasePreferen
        return mUseCustomIntent;
    }

    /**
     * Whether or not this setting can react to user click
     */
    private boolean canHandleClicks() {
        return !mUseCustomIntent || mIntent != null;
    }

    private boolean canResolveIntent(Intent intent) {
        final ResolveInfo resolveActivity = mContext.getPackageManager()
                .resolveActivity(intent, 0);
+36 −14
Original line number Diff line number Diff line
@@ -52,14 +52,13 @@ public class EmergencyGestureEntrypointPreferenceControllerTest {

    private Context mContext;
    private ShadowPackageManager mPackageManager;
    private EmergencyGestureEntrypointPreferenceController mController;
    private static final String PREF_KEY = "gesture_emergency_button";

    @Before
    public void setUp() {
        mContext = ApplicationProvider.getApplicationContext();
        mPackageManager = Shadows.shadowOf(mContext.getPackageManager());
        mController = new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);

    }

    @After
@@ -69,24 +68,18 @@ public class EmergencyGestureEntrypointPreferenceControllerTest {

    @Test
    public void constructor_hasCustomPackageConfig_shouldSetIntent() {
        final ResolveInfo info = new ResolveInfo();
        info.activityInfo = new ActivityInfo();
        info.activityInfo.packageName = TEST_PKG_NAME;
        info.activityInfo.name = TEST_CLASS_NAME;

        mPackageManager.addResolveInfoForIntent(SETTING_INTENT, info);

        SettingsShadowResources.overrideResource(
                R.bool.config_show_emergency_gesture_settings,
                Boolean.TRUE);

        SettingsShadowResources.overrideResource(
                R.string.emergency_gesture_settings_package,
                TEST_PKG_NAME);
        prepareCustomIntent();

        mController = new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);
        EmergencyGestureEntrypointPreferenceController controller =
                new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);

        assertThat(mController.mIntent).isNotNull();
        assertThat(controller.mIntent).isNotNull();
    }

    @Test
@@ -94,8 +87,10 @@ public class EmergencyGestureEntrypointPreferenceControllerTest {
        SettingsShadowResources.overrideResource(
                R.bool.config_show_emergency_gesture_settings,
                Boolean.TRUE);
        EmergencyGestureEntrypointPreferenceController controller =
                new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
        assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
    }

    @Test
@@ -103,7 +98,34 @@ public class EmergencyGestureEntrypointPreferenceControllerTest {
        SettingsShadowResources.overrideResource(
                R.bool.config_show_emergency_gesture_settings,
                Boolean.FALSE);
        EmergencyGestureEntrypointPreferenceController controller =
                new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);

        assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void getAvailabilityStatus_noSuitableIntent_shouldReturnUnsupported() {
        SettingsShadowResources.overrideResource(
                R.bool.config_show_emergency_gesture_settings,
                Boolean.TRUE);
        // Provide override package name but don't provide resolvable intent
        SettingsShadowResources.overrideResource(
                R.string.emergency_gesture_settings_package,
                TEST_PKG_NAME);

        EmergencyGestureEntrypointPreferenceController controller =
                new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);

        assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
    private void prepareCustomIntent() {
        final ResolveInfo info = new ResolveInfo();
        info.activityInfo = new ActivityInfo();
        info.activityInfo.packageName = TEST_PKG_NAME;
        info.activityInfo.name = TEST_CLASS_NAME;

        mPackageManager.addResolveInfoForIntent(SETTING_INTENT, info);
    }
}