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

Commit 15c61762 authored by Ajinkya Chalke's avatar Ajinkya Chalke
Browse files

Conditionally add tail button pref

- The connected device settings shouldn't show the tail button pref
  setting if the input device doesn't support it.

Bug: 293472525
Test: atest StylusDevicesControllerTest
Flag: NONE
Change-Id: I50ab43e971b0dd8530a5bdab8544a46e889366ee
parent 8979681a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.provider.Settings.Secure;
import android.text.TextUtils;
import android.util.Log;
import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;

@@ -107,6 +108,12 @@ public class StylusDevicesController extends AbstractPreferenceController implem
            return null;
        }

        boolean doesStylusSupportTailButton = mInputDevice.hasKeys(
                KeyEvent.KEYCODE_STYLUS_BUTTON_TAIL)[0];
        if (!doesStylusSupportTailButton) {
            return null;
        }

        Preference pref = preference == null ? new Preference(mContext) : preference;
        pref.setKey(KEY_DEFAULT_NOTES);
        pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
+26 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings.connecteddevice.stylus;

import static android.view.KeyEvent.KEYCODE_STYLUS_BUTTON_TAIL;

import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertEquals;
@@ -139,6 +141,8 @@ public class StylusDevicesControllerTest {
                .setSources(InputDevice.SOURCE_STYLUS)
                .build());
        when(mInputDevice.getBluetoothAddress()).thenReturn("SOME:ADDRESS");
        when(mInputDevice.hasKeys(KEYCODE_STYLUS_BUTTON_TAIL)).thenReturn(
                new boolean[]{true});

        mController = new StylusDevicesController(mContext, mInputDevice, null, mLifecycle);
    }
@@ -220,6 +224,28 @@ public class StylusDevicesControllerTest {
        assertThat(mPreferenceContainer.getPreferenceCount()).isEqualTo(3);
    }

    @Test
    public void usiStylusInputDevice_doesntSupportTailButton_tailButtonPreferenceNotShown() {
        when(mInputDevice.hasKeys(KEYCODE_STYLUS_BUTTON_TAIL)).thenReturn(new boolean[]{false});
        when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_DEVICE_TYPE)).thenReturn(
                BluetoothDevice.DEVICE_TYPE_WATCH.getBytes());
        StylusDevicesController controller = new StylusDevicesController(
                mContext, mInputDevice, mCachedBluetoothDevice, mLifecycle
        );

        showScreen(controller);
        Preference handwritingPref = mPreferenceContainer.getPreference(0);
        Preference buttonPref = mPreferenceContainer.getPreference(1);

        assertThat(mPreferenceContainer.getPreferenceCount()).isEqualTo(2);
        assertThat(handwritingPref.getTitle().toString()).isEqualTo(
                mContext.getString(R.string.stylus_textfield_handwriting));
        assertThat(handwritingPref.isVisible()).isTrue();
        assertThat(buttonPref.getTitle().toString()).isEqualTo(
                mContext.getString(R.string.stylus_ignore_button));
        assertThat(buttonPref.isVisible()).isTrue();
    }

    @Test
    public void btStylusInputDevice_showsAllPreferences() {
        showScreen(mController);