Merge "Set preference visible to false when there is no keyboard." into udc-dev
This commit is contained in:
@@ -308,6 +308,12 @@ public class KeyboardLayoutDialogFragment extends InstrumentedDialogFragment
|
|||||||
public Keyboards loadInBackground() {
|
public Keyboards loadInBackground() {
|
||||||
Keyboards keyboards = new Keyboards();
|
Keyboards keyboards = new Keyboards();
|
||||||
InputManager im = (InputManager)getContext().getSystemService(Context.INPUT_SERVICE);
|
InputManager im = (InputManager)getContext().getSystemService(Context.INPUT_SERVICE);
|
||||||
|
if (mInputDeviceIdentifier == null || NewKeyboardSettingsUtils.getInputDevice(
|
||||||
|
im, mInputDeviceIdentifier) == null) {
|
||||||
|
keyboards.keyboardLayouts.add(null); // default layout
|
||||||
|
keyboards.current = 0;
|
||||||
|
return keyboards;
|
||||||
|
}
|
||||||
String[] keyboardLayoutDescriptors = im.getEnabledKeyboardLayoutsForInputDevice(
|
String[] keyboardLayoutDescriptors = im.getEnabledKeyboardLayoutsForInputDevice(
|
||||||
mInputDeviceIdentifier);
|
mInputDeviceIdentifier);
|
||||||
for (String keyboardLayoutDescriptor : keyboardLayoutDescriptors) {
|
for (String keyboardLayoutDescriptor : keyboardLayoutDescriptors) {
|
||||||
|
@@ -21,7 +21,6 @@ import android.content.Context;
|
|||||||
import android.hardware.input.InputDeviceIdentifier;
|
import android.hardware.input.InputDeviceIdentifier;
|
||||||
import android.hardware.input.InputManager;
|
import android.hardware.input.InputManager;
|
||||||
import android.hardware.input.KeyboardLayout;
|
import android.hardware.input.KeyboardLayout;
|
||||||
import android.view.InputDevice;
|
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
@@ -37,7 +36,6 @@ import java.util.Arrays;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
public class KeyboardLayoutPickerController extends BasePreferenceController implements
|
public class KeyboardLayoutPickerController extends BasePreferenceController implements
|
||||||
InputManager.InputDeviceListener, LifecycleObserver, OnStart, OnStop {
|
InputManager.InputDeviceListener, LifecycleObserver, OnStart, OnStop {
|
||||||
|
|
||||||
@@ -68,15 +66,12 @@ public class KeyboardLayoutPickerController extends BasePreferenceController imp
|
|||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
mIm.registerInputDeviceListener(this, null);
|
mIm.registerInputDeviceListener(this, null);
|
||||||
|
if (mInputDeviceIdentifier == null
|
||||||
final InputDevice inputDevice =
|
|| NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) {
|
||||||
mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
|
|
||||||
if (inputDevice == null) {
|
|
||||||
mParent.getActivity().finish();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mInputDeviceId = inputDevice.getId();
|
mInputDeviceId =
|
||||||
|
NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier).getId();
|
||||||
updateCheckedState();
|
updateCheckedState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,6 +145,9 @@ public class KeyboardLayoutPickerController extends BasePreferenceController imp
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void createPreferenceHierarchy() {
|
private void createPreferenceHierarchy() {
|
||||||
|
if (mKeyboardLayouts == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (KeyboardLayout layout : mKeyboardLayouts) {
|
for (KeyboardLayout layout : mKeyboardLayouts) {
|
||||||
final SwitchPreference pref = new SwitchPreference(mScreen.getContext());
|
final SwitchPreference pref = new SwitchPreference(mScreen.getContext());
|
||||||
pref.setTitle(layout.getLabel());
|
pref.setTitle(layout.getLabel());
|
||||||
|
@@ -19,11 +19,11 @@ package com.android.settings.inputmethod;
|
|||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.hardware.input.InputDeviceIdentifier;
|
import android.hardware.input.InputDeviceIdentifier;
|
||||||
|
import android.hardware.input.InputManager;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
|
|
||||||
|
|
||||||
public class KeyboardLayoutPickerFragment extends DashboardFragment {
|
public class KeyboardLayoutPickerFragment extends DashboardFragment {
|
||||||
|
|
||||||
private static final String TAG = "KeyboardLayoutPicker";
|
private static final String TAG = "KeyboardLayoutPicker";
|
||||||
@@ -45,10 +45,10 @@ public class KeyboardLayoutPickerFragment extends DashboardFragment {
|
|||||||
|
|
||||||
final InputDeviceIdentifier inputDeviceIdentifier = getActivity().getIntent().
|
final InputDeviceIdentifier inputDeviceIdentifier = getActivity().getIntent().
|
||||||
getParcelableExtra(EXTRA_INPUT_DEVICE_IDENTIFIER);
|
getParcelableExtra(EXTRA_INPUT_DEVICE_IDENTIFIER);
|
||||||
if (inputDeviceIdentifier == null) {
|
final InputManager im = context.getSystemService(InputManager.class);
|
||||||
getActivity().finish();
|
if (NewKeyboardSettingsUtils.getInputDevice(im, inputDeviceIdentifier) == null) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
use(KeyboardLayoutPickerController.class).initialize(this /*parent*/,
|
use(KeyboardLayoutPickerController.class).initialize(this /*parent*/,
|
||||||
inputDeviceIdentifier);
|
inputDeviceIdentifier);
|
||||||
}
|
}
|
||||||
|
@@ -68,6 +68,9 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateCheckedState() {
|
private void updateCheckedState() {
|
||||||
|
if (NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
PreferenceScreen preferenceScreen = getPreferenceScreen();
|
PreferenceScreen preferenceScreen = getPreferenceScreen();
|
||||||
preferenceScreen.removeAll();
|
preferenceScreen.removeAll();
|
||||||
List<InputMethodInfo> infoList = mImm.getEnabledInputMethodListAsUser(mUserId);
|
List<InputMethodInfo> infoList = mImm.getEnabledInputMethodListAsUser(mUserId);
|
||||||
@@ -174,8 +177,8 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment
|
|||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
mIm.registerInputDeviceListener(this, null);
|
mIm.registerInputDeviceListener(this, null);
|
||||||
final InputDevice inputDevice =
|
InputDevice inputDevice =
|
||||||
mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
|
NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier);
|
||||||
if (inputDevice == null) {
|
if (inputDevice == null) {
|
||||||
getActivity().finish();
|
getActivity().finish();
|
||||||
return;
|
return;
|
||||||
|
@@ -19,6 +19,7 @@ package com.android.settings.inputmethod;
|
|||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.hardware.input.InputDeviceIdentifier;
|
import android.hardware.input.InputDeviceIdentifier;
|
||||||
|
import android.hardware.input.InputManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.inputmethod.InputMethodInfo;
|
import android.view.inputmethod.InputMethodInfo;
|
||||||
import android.view.inputmethod.InputMethodSubtype;
|
import android.view.inputmethod.InputMethodSubtype;
|
||||||
@@ -33,25 +34,24 @@ public class NewKeyboardLayoutPickerContent extends DashboardFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
|
InputManager inputManager = getContext().getSystemService(InputManager.class);
|
||||||
Bundle arguments = getArguments();
|
Bundle arguments = getArguments();
|
||||||
final String title = arguments.getString(NewKeyboardSettingsUtils.EXTRA_TITLE);
|
final String title = arguments.getString(NewKeyboardSettingsUtils.EXTRA_TITLE);
|
||||||
final String layout = arguments.getString(NewKeyboardSettingsUtils.EXTRA_KEYBOARD_LAYOUT);
|
final String layout = arguments.getString(NewKeyboardSettingsUtils.EXTRA_KEYBOARD_LAYOUT);
|
||||||
final int userId = arguments.getInt(NewKeyboardSettingsUtils.EXTRA_USER_ID);
|
final int userId = arguments.getInt(NewKeyboardSettingsUtils.EXTRA_USER_ID);
|
||||||
final InputDeviceIdentifier inputDeviceIdentifier =
|
final InputDeviceIdentifier identifier =
|
||||||
arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER);
|
arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER);
|
||||||
final InputMethodInfo inputMethodInfo =
|
final InputMethodInfo inputMethodInfo =
|
||||||
arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_INFO);
|
arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_INFO);
|
||||||
final InputMethodSubtype inputMethodSubtype =
|
final InputMethodSubtype inputMethodSubtype =
|
||||||
arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE);
|
arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE);
|
||||||
|
if (identifier == null
|
||||||
|
|| NewKeyboardSettingsUtils.getInputDevice(inputManager, identifier) == null) {
|
||||||
if (inputDeviceIdentifier == null) {
|
return;
|
||||||
getActivity().finish();
|
|
||||||
}
|
}
|
||||||
getActivity().setTitle(title);
|
getActivity().setTitle(title);
|
||||||
use(NewKeyboardLayoutPickerController.class).initialize(this /*parent*/, userId,
|
use(NewKeyboardLayoutPickerController.class).initialize(this /*parent*/, userId,
|
||||||
inputDeviceIdentifier, inputMethodInfo, inputMethodSubtype, layout);
|
identifier, inputMethodInfo, inputMethodSubtype, layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -20,7 +20,6 @@ import android.content.Context;
|
|||||||
import android.hardware.input.InputDeviceIdentifier;
|
import android.hardware.input.InputDeviceIdentifier;
|
||||||
import android.hardware.input.InputManager;
|
import android.hardware.input.InputManager;
|
||||||
import android.hardware.input.KeyboardLayout;
|
import android.hardware.input.KeyboardLayout;
|
||||||
import android.view.InputDevice;
|
|
||||||
import android.view.inputmethod.InputMethodInfo;
|
import android.view.inputmethod.InputMethodInfo;
|
||||||
import android.view.inputmethod.InputMethodSubtype;
|
import android.view.inputmethod.InputMethodSubtype;
|
||||||
|
|
||||||
@@ -75,13 +74,12 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController
|
|||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
mIm.registerInputDeviceListener(this, null);
|
mIm.registerInputDeviceListener(this, null);
|
||||||
final InputDevice inputDevice =
|
if (mInputDeviceIdentifier == null
|
||||||
mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
|
|| NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) {
|
||||||
if (inputDevice == null) {
|
|
||||||
mParent.getActivity().finish();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mInputDeviceId = inputDevice.getId();
|
mInputDeviceId =
|
||||||
|
NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier).getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -138,6 +136,9 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void createPreferenceHierarchy() {
|
private void createPreferenceHierarchy() {
|
||||||
|
if (mKeyboardLayouts == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (KeyboardLayout layout : mKeyboardLayouts) {
|
for (KeyboardLayout layout : mKeyboardLayouts) {
|
||||||
final KeyboardLayoutPreference pref;
|
final KeyboardLayoutPreference pref;
|
||||||
if (mLayout.equals(layout.getLabel())) {
|
if (mLayout.equals(layout.getLabel())) {
|
||||||
|
@@ -27,13 +27,11 @@ import com.android.settings.R;
|
|||||||
|
|
||||||
public class NewKeyboardLayoutPickerFragment extends Fragment {
|
public class NewKeyboardLayoutPickerFragment extends Fragment {
|
||||||
|
|
||||||
private ViewGroup mFragmentView;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
|
|
||||||
mFragmentView = (ViewGroup) inflater.inflate(
|
ViewGroup fragmentView = (ViewGroup) inflater.inflate(
|
||||||
R.layout.keyboard_layout_picker, container, false);
|
R.layout.keyboard_layout_picker, container, false);
|
||||||
getActivity().getSupportFragmentManager()
|
getActivity().getSupportFragmentManager()
|
||||||
.beginTransaction()
|
.beginTransaction()
|
||||||
@@ -47,6 +45,6 @@ public class NewKeyboardLayoutPickerFragment extends Fragment {
|
|||||||
.replace(R.id.keyboard_layouts, fragment)
|
.replace(R.id.keyboard_layouts, fragment)
|
||||||
.commit();
|
.commit();
|
||||||
|
|
||||||
return mFragmentView;
|
return fragmentView;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,8 @@
|
|||||||
package com.android.settings.inputmethod;
|
package com.android.settings.inputmethod;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.hardware.input.InputDeviceIdentifier;
|
||||||
|
import android.hardware.input.InputManager;
|
||||||
import android.view.InputDevice;
|
import android.view.InputDevice;
|
||||||
import android.view.inputmethod.InputMethodInfo;
|
import android.view.inputmethod.InputMethodInfo;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
@@ -102,4 +104,8 @@ public class NewKeyboardSettingsUtils {
|
|||||||
return mInputMethodSubtype;
|
return mInputMethodSubtype;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static InputDevice getInputDevice(InputManager im, InputDeviceIdentifier identifier) {
|
||||||
|
return im.getInputDeviceByDescriptor(identifier.getDescriptor());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -160,6 +160,10 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
|
|||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
ThreadUtils.postOnBackgroundThread(() -> {
|
ThreadUtils.postOnBackgroundThread(() -> {
|
||||||
final List<HardKeyboardDeviceInfo> newHardKeyboards = getHardKeyboards(context);
|
final List<HardKeyboardDeviceInfo> newHardKeyboards = getHardKeyboards(context);
|
||||||
|
if (newHardKeyboards.isEmpty()) {
|
||||||
|
getActivity().finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
ThreadUtils.postOnMainThread(() -> updateHardKeyboards(newHardKeyboards));
|
ThreadUtils.postOnMainThread(() -> updateHardKeyboards(newHardKeyboards));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,7 @@ import android.icu.text.ListFormatter;
|
|||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.inputmethod.PhysicalKeyboardFragment.HardKeyboardDeviceInfo;
|
import com.android.settings.inputmethod.PhysicalKeyboardFragment.HardKeyboardDeviceInfo;
|
||||||
@@ -34,7 +35,6 @@ import com.android.settingslib.core.lifecycle.events.OnResume;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
public class PhysicalKeyboardPreferenceController extends AbstractPreferenceController
|
public class PhysicalKeyboardPreferenceController extends AbstractPreferenceController
|
||||||
implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause,
|
implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause,
|
||||||
InputManager.InputDeviceListener {
|
InputManager.InputDeviceListener {
|
||||||
@@ -54,13 +54,14 @@ public class PhysicalKeyboardPreferenceController extends AbstractPreferenceCont
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAvailable() {
|
public boolean isAvailable() {
|
||||||
return mContext.getResources().getBoolean(R.bool.config_show_physical_keyboard_pref);
|
return !getKeyboards().isEmpty()
|
||||||
|
&& mContext.getResources().getBoolean(R.bool.config_show_physical_keyboard_pref);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
mPreference = preference;
|
mPreference = preference;
|
||||||
updateSummary();
|
updateEntry();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -80,33 +81,42 @@ public class PhysicalKeyboardPreferenceController extends AbstractPreferenceCont
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceAdded(int deviceId) {
|
public void onInputDeviceAdded(int deviceId) {
|
||||||
updateSummary();
|
updateEntry();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceRemoved(int deviceId) {
|
public void onInputDeviceRemoved(int deviceId) {
|
||||||
updateSummary();
|
updateEntry();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceChanged(int deviceId) {
|
public void onInputDeviceChanged(int deviceId) {
|
||||||
updateSummary();
|
updateEntry();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSummary() {
|
private void updateEntry() {
|
||||||
if (mPreference == null) {
|
if (mPreference == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final List<HardKeyboardDeviceInfo> keyboards =
|
List<HardKeyboardDeviceInfo> keyboards = getKeyboards();
|
||||||
PhysicalKeyboardFragment.getHardKeyboards(mContext);
|
|
||||||
if (keyboards.isEmpty()) {
|
if (keyboards.isEmpty()) {
|
||||||
mPreference.setSummary(R.string.keyboard_disconnected);
|
mPreference.setVisible(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final List<String> summaries = new ArrayList<>();
|
updateSummary(keyboards);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateSummary(List<HardKeyboardDeviceInfo> keyboards) {
|
||||||
|
mPreference.setVisible(true);
|
||||||
|
List<String> summaries = new ArrayList<>();
|
||||||
for (HardKeyboardDeviceInfo info : keyboards) {
|
for (HardKeyboardDeviceInfo info : keyboards) {
|
||||||
summaries.add(info.mDeviceName);
|
summaries.add(info.mDeviceName);
|
||||||
}
|
}
|
||||||
mPreference.setSummary(ListFormatter.getInstance().format(summaries));
|
mPreference.setSummary(ListFormatter.getInstance().format(summaries));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
List<HardKeyboardDeviceInfo> getKeyboards() {
|
||||||
|
return PhysicalKeyboardFragment.getHardKeyboards(mContext);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,12 +24,13 @@ import static org.mockito.Mockito.verify;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.hardware.input.InputDeviceIdentifier;
|
||||||
import android.hardware.input.InputManager;
|
import android.hardware.input.InputManager;
|
||||||
import android.view.InputDevice;
|
import android.view.InputDevice;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.inputmethod.PhysicalKeyboardFragment.HardKeyboardDeviceInfo;
|
||||||
import com.android.settings.testutils.shadow.ShadowInputDevice;
|
import com.android.settings.testutils.shadow.ShadowInputDevice;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -42,15 +43,24 @@ import org.robolectric.RobolectricTestRunner;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class PhysicalKeyboardPreferenceControllerTest {
|
public class PhysicalKeyboardPreferenceControllerTest {
|
||||||
|
|
||||||
|
private static final String DEVICE_NAME = "deviceName";
|
||||||
|
private static final String LAYOUT_LABEL = "deviceLayutLabel";
|
||||||
|
private static final String BLUETOOTHADDRESS = "deviceBluetoothAddress";
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
@Mock
|
@Mock
|
||||||
private InputManager mIm;
|
private InputManager mIm;
|
||||||
@Mock
|
@Mock
|
||||||
private Preference mPreference;
|
private Preference mPreference;
|
||||||
|
@Mock
|
||||||
|
private InputDeviceIdentifier mIdentifier;
|
||||||
|
|
||||||
private PhysicalKeyboardPreferenceController mController;
|
private PhysicalKeyboardPreferenceController mController;
|
||||||
|
|
||||||
@@ -69,9 +79,18 @@ public class PhysicalKeyboardPreferenceControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testPhysicalKeyboard_byDefault_shouldBeShown() {
|
public void testPhysicalKeyboard_byDefault_shouldBeShown() {
|
||||||
final Context context = spy(RuntimeEnvironment.application.getApplicationContext());
|
final Context context = spy(RuntimeEnvironment.application.getApplicationContext());
|
||||||
mController = new PhysicalKeyboardPreferenceController(context, null);
|
List<HardKeyboardDeviceInfo> keyboards = new ArrayList<>();
|
||||||
|
keyboards.add(new HardKeyboardDeviceInfo(
|
||||||
|
DEVICE_NAME,
|
||||||
|
mIdentifier,
|
||||||
|
LAYOUT_LABEL,
|
||||||
|
BLUETOOTHADDRESS));
|
||||||
|
mController = spy(new PhysicalKeyboardPreferenceController(context, null));
|
||||||
|
when(mController.getKeyboards()).thenReturn(keyboards);
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isTrue();
|
boolean result = mController.isAvailable();
|
||||||
|
|
||||||
|
assertThat(result).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -85,11 +104,11 @@ public class PhysicalKeyboardPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Config(shadows = ShadowInputDevice.class)
|
@Config(shadows = ShadowInputDevice.class)
|
||||||
public void updateState_noKeyboard_setDisconnectedSummary() {
|
public void updateState_noKeyboard_setPreferenceVisibleFalse() {
|
||||||
ShadowInputDevice.sDeviceIds = new int[0];
|
ShadowInputDevice.sDeviceIds = new int[0];
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
verify(mPreference).setSummary(R.string.keyboard_disconnected);
|
verify(mPreference).setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user