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
This commit is contained in:
@@ -32,6 +32,7 @@ import android.provider.Settings.Secure;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.InputDevice;
|
import android.view.InputDevice;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.inputmethod.InputMethodInfo;
|
import android.view.inputmethod.InputMethodInfo;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
|
||||||
@@ -107,6 +108,12 @@ public class StylusDevicesController extends AbstractPreferenceController implem
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean doesStylusSupportTailButton = mInputDevice.hasKeys(
|
||||||
|
KeyEvent.KEYCODE_STYLUS_BUTTON_TAIL)[0];
|
||||||
|
if (!doesStylusSupportTailButton) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
Preference pref = preference == null ? new Preference(mContext) : preference;
|
Preference pref = preference == null ? new Preference(mContext) : preference;
|
||||||
pref.setKey(KEY_DEFAULT_NOTES);
|
pref.setKey(KEY_DEFAULT_NOTES);
|
||||||
pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
|
pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.connecteddevice.stylus;
|
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 com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
@@ -139,6 +141,8 @@ public class StylusDevicesControllerTest {
|
|||||||
.setSources(InputDevice.SOURCE_STYLUS)
|
.setSources(InputDevice.SOURCE_STYLUS)
|
||||||
.build());
|
.build());
|
||||||
when(mInputDevice.getBluetoothAddress()).thenReturn("SOME:ADDRESS");
|
when(mInputDevice.getBluetoothAddress()).thenReturn("SOME:ADDRESS");
|
||||||
|
when(mInputDevice.hasKeys(KEYCODE_STYLUS_BUTTON_TAIL)).thenReturn(
|
||||||
|
new boolean[]{true});
|
||||||
|
|
||||||
mController = new StylusDevicesController(mContext, mInputDevice, null, mLifecycle);
|
mController = new StylusDevicesController(mContext, mInputDevice, null, mLifecycle);
|
||||||
}
|
}
|
||||||
@@ -220,6 +224,28 @@ public class StylusDevicesControllerTest {
|
|||||||
assertThat(mPreferenceContainer.getPreferenceCount()).isEqualTo(3);
|
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
|
@Test
|
||||||
public void btStylusInputDevice_showsAllPreferences() {
|
public void btStylusInputDevice_showsAllPreferences() {
|
||||||
showScreen(mController);
|
showScreen(mController);
|
||||||
|
Reference in New Issue
Block a user