From 6125f9a9fa31093ef3b27f8419dd5f86ab171f90 Mon Sep 17 00:00:00 2001 From: danielwbhuang Date: Sat, 7 Jan 2023 23:06:46 +0800 Subject: [PATCH] Integrate UI with APIs for trackpad settgins. 1. Integrate with trackpad settings dummy APIs. 2. Integrate with trackpad gesture APIs. Bug: 247080509 Test: manual, make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.inputmethod.*" Change-Id: Ic180e28896bb0a5aa71eb0eb63d3824bd342ff45 --- res/xml/trackpad_gesture_settings.xml | 16 +++- res/xml/trackpad_settings.xml | 7 +- .../TrackpadBottomPreferenceController.java | 55 +++++++++++ .../TrackpadGoBackPreferenceController.java | 53 ++++++++++ .../TrackpadGoHomePreferenceController.java | 53 ++++++++++ ...kpadNotificationsPreferenceController.java | 53 ++++++++++ ...ckpadPointerSpeedPreferenceController.java | 76 +++++++++++++++ ...rackpadRecentAppsPreferenceController.java | 53 ++++++++++ ...dReverseScrollingPreferenceController.java | 55 +++++++++++ ...rackpadSwitchAppsPreferenceController.java | 53 ++++++++++ ...rackpadTapToClickPreferenceController.java | 55 +++++++++++ ...rackpadGoBackPreferenceControllerTest.java | 96 +++++++++++++++++++ ...rackpadGoHomePreferenceControllerTest.java | 96 +++++++++++++++++++ ...NotificationsPreferenceControllerTest.java | 96 +++++++++++++++++++ ...padRecentAppsPreferenceControllerTest.java | 96 +++++++++++++++++++ ...padSwitchAppsPreferenceControllerTest.java | 96 +++++++++++++++++++ 16 files changed, 1001 insertions(+), 8 deletions(-) create mode 100644 src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java create mode 100644 src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java create mode 100644 src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java create mode 100644 src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java create mode 100644 src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java create mode 100644 src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java create mode 100644 src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java create mode 100644 src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java create mode 100644 src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java create mode 100644 tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java diff --git a/res/xml/trackpad_gesture_settings.xml b/res/xml/trackpad_gesture_settings.xml index dfc419906a5..6cac7f61c70 100644 --- a/res/xml/trackpad_gesture_settings.xml +++ b/res/xml/trackpad_gesture_settings.xml @@ -24,39 +24,45 @@ android:title="@string/trackpad_go_back_title" android:summary="@string/trackpad_go_back_summary" android:icon="@drawable/ic_trackpad_gesture_back" - android:order="10"/> + android:order="10" + settings:controller="com.android.settings.inputmethod.TrackpadGoBackPreferenceController"/> + android:order="20" + settings:controller="com.android.settings.inputmethod.TrackpadGoHomePreferenceController"/> + android:order="30" + settings:controller="com.android.settings.inputmethod.TrackpadRecentAppsPreferenceController"/> + android:order="40" + settings:controller="com.android.settings.inputmethod.TrackpadNotificationsPreferenceController"/> + android:order="50" + settings:controller="com.android.settings.inputmethod.TrackpadSwitchAppsPreferenceController"/> \ No newline at end of file diff --git a/res/xml/trackpad_settings.xml b/res/xml/trackpad_settings.xml index 6401fb87c49..4a0897db766 100644 --- a/res/xml/trackpad_settings.xml +++ b/res/xml/trackpad_settings.xml @@ -32,6 +32,7 @@ android:key="trackpad_tap_to_click" android:title="@string/trackpad_tap_to_click" android:icon="@drawable/ic_trackpad_tap_to_click" + settings:controller="com.android.settings.inputmethod.TrackpadTapToClickPreferenceController" android:order="10"/> + settings:controller="com.android.settings.inputmethod.TrackpadPointerSpeedPreferenceController"/> getMax()) { + return false; + } + mIm.setTouchpadPointerSpeed(mContext, position); + return true; + } + + @Override + public int getSliderPosition() { + return mIm.getTouchpadPointerSpeed(mContext); + } + + @Override + public int getMin() { + return InputManager.MIN_POINTER_SPEED; + } + + @Override + public int getMax() { + return InputManager.MAX_POINTER_SPEED; + } +} diff --git a/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java new file mode 100644 index 00000000000..eab2b330968 --- /dev/null +++ b/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import android.content.Context; +import android.provider.Settings; + +import com.android.settings.R; +import com.android.settings.core.TogglePreferenceController; + +public class TrackpadRecentAppsPreferenceController extends TogglePreferenceController { + + private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_OVERVIEW_ENABLED; + + public TrackpadRecentAppsPreferenceController(Context context, String key) { + super(context, key); + } + + @Override + public boolean isChecked() { + return Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1) != 0; + } + + @Override + public boolean setChecked(boolean isChecked) { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0); + return true; + } + + @Override + public int getAvailabilityStatus() { + return AVAILABLE; + } + + @Override + public int getSliceHighlightMenuRes() { + return R.string.menu_key_system; + } +} diff --git a/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java new file mode 100644 index 00000000000..dfdd942290f --- /dev/null +++ b/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import android.content.Context; +import android.hardware.input.InputManager; + +import com.android.settings.R; +import com.android.settings.core.TogglePreferenceController; + +public class TrackpadReverseScrollingPreferenceController extends TogglePreferenceController { + + private InputManager mIm; + + public TrackpadReverseScrollingPreferenceController(Context context, String key) { + super(context, key); + + mIm = context.getSystemService(InputManager.class); + } + + @Override + public boolean isChecked() { + return mIm.useTouchpadNaturalScrolling(mContext); + } + + @Override + public boolean setChecked(boolean isChecked) { + mIm.setTouchpadNaturalScrolling(mContext, isChecked); + return true; + } + + @Override + public int getAvailabilityStatus() { + return AVAILABLE; + } + + @Override + public int getSliceHighlightMenuRes() { + return R.string.menu_key_system; + } +} diff --git a/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java new file mode 100644 index 00000000000..84de64e9494 --- /dev/null +++ b/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import android.content.Context; +import android.provider.Settings; + +import com.android.settings.R; +import com.android.settings.core.TogglePreferenceController; + +public class TrackpadSwitchAppsPreferenceController extends TogglePreferenceController { + + private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_QUICK_SWITCH_ENABLED; + + public TrackpadSwitchAppsPreferenceController(Context context, String key) { + super(context, key); + } + + @Override + public boolean isChecked() { + return Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1) != 0; + } + + @Override + public boolean setChecked(boolean isChecked) { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0); + return true; + } + + @Override + public int getAvailabilityStatus() { + return AVAILABLE; + } + + @Override + public int getSliceHighlightMenuRes() { + return R.string.menu_key_system; + } +} diff --git a/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java new file mode 100644 index 00000000000..b057baaa439 --- /dev/null +++ b/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import android.content.Context; +import android.hardware.input.InputManager; + +import com.android.settings.R; +import com.android.settings.core.TogglePreferenceController; + +public class TrackpadTapToClickPreferenceController extends TogglePreferenceController { + + private InputManager mIm; + + public TrackpadTapToClickPreferenceController(Context context, String key) { + super(context, key); + + mIm = context.getSystemService(InputManager.class); + } + + @Override + public boolean isChecked() { + return mIm.useTouchpadTapToClick(mContext); + } + + @Override + public boolean setChecked(boolean isChecked) { + mIm.setTouchpadTapToClick(mContext, isChecked); + return true; + } + + @Override + public int getAvailabilityStatus() { + return AVAILABLE; + } + + @Override + public int getSliceHighlightMenuRes() { + return R.string.menu_key_system; + } +} diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java new file mode 100644 index 00000000000..0e1705e6d00 --- /dev/null +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.provider.Settings; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +/** Tests for {@link TrackpadGoBackPreferenceController} */ +@RunWith(RobolectricTestRunner.class) +public class TrackpadGoBackPreferenceControllerTest { + + private static final String PREFERENCE_KEY = "gesture_go_back"; + private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_BACK_ENABLED; + + private Context mContext; + private TrackpadGoBackPreferenceController mController; + + @Before + public void setUp() { + mContext = ApplicationProvider.getApplicationContext(); + mController = new TrackpadGoBackPreferenceController(mContext, PREFERENCE_KEY); + } + + @Test + public void getAvailabilityStatus_expected() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.AVAILABLE); + } + + @Test + public void getSliceHighlightMenuRes_expected() { + assertThat(mController.getSliceHighlightMenuRes()).isEqualTo(R.string.menu_key_system); + } + + @Test + public void setChecked_true_shouldReturn1() { + mController.setChecked(true); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(1); + } + + @Test + public void setChecked_false_shouldReturn0() { + mController.setChecked(false); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(0); + } + + @Test + public void isChecked_providerPutInt1_returnTrue() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 1); + + boolean result = mController.isChecked(); + + assertThat(result).isTrue(); + } + + @Test + public void isChecked_providerPutInt0_returnFalse() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 0); + + boolean result = mController.isChecked(); + + assertThat(result).isFalse(); + } +} diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java new file mode 100644 index 00000000000..3289bccbd52 --- /dev/null +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.provider.Settings; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +/** Tests for {@link TrackpadGoHomePreferenceController} */ +@RunWith(RobolectricTestRunner.class) +public class TrackpadGoHomePreferenceControllerTest { + + private static final String PREFERENCE_KEY = "gesture_go_home"; + private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_HOME_ENABLED; + + private Context mContext; + private TrackpadGoHomePreferenceController mController; + + @Before + public void setUp() { + mContext = ApplicationProvider.getApplicationContext(); + mController = new TrackpadGoHomePreferenceController(mContext, PREFERENCE_KEY); + } + + @Test + public void getAvailabilityStatus_expected() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.AVAILABLE); + } + + @Test + public void getSliceHighlightMenuRes_expected() { + assertThat(mController.getSliceHighlightMenuRes()).isEqualTo(R.string.menu_key_system); + } + + @Test + public void setChecked_true_shouldReturn1() { + mController.setChecked(true); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(1); + } + + @Test + public void setChecked_false_shouldReturn0() { + mController.setChecked(false); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(0); + } + + @Test + public void isChecked_providerPutInt1_returnTrue() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 1); + + boolean result = mController.isChecked(); + + assertThat(result).isTrue(); + } + + @Test + public void isChecked_providerPutInt0_returnFalse() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 0); + + boolean result = mController.isChecked(); + + assertThat(result).isFalse(); + } +} diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java new file mode 100644 index 00000000000..3df16272655 --- /dev/null +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.provider.Settings; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +/** Tests for {@link TrackpadNotificationsPreferenceController} */ +@RunWith(RobolectricTestRunner.class) +public class TrackpadNotificationsPreferenceControllerTest { + + private static final String PREFERENCE_KEY = "gesture_notifications"; + private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_NOTIFICATION_ENABLED; + + private Context mContext; + private TrackpadNotificationsPreferenceController mController; + + @Before + public void setUp() { + mContext = ApplicationProvider.getApplicationContext(); + mController = new TrackpadNotificationsPreferenceController(mContext, PREFERENCE_KEY); + } + + @Test + public void getAvailabilityStatus_expected() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.AVAILABLE); + } + + @Test + public void getSliceHighlightMenuRes_expected() { + assertThat(mController.getSliceHighlightMenuRes()).isEqualTo(R.string.menu_key_system); + } + + @Test + public void setChecked_true_shouldReturn1() { + mController.setChecked(true); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(1); + } + + @Test + public void setChecked_false_shouldReturn0() { + mController.setChecked(false); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(0); + } + + @Test + public void isChecked_providerPutInt1_returnTrue() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 1); + + boolean result = mController.isChecked(); + + assertThat(result).isTrue(); + } + + @Test + public void isChecked_providerPutInt0_returnFalse() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 0); + + boolean result = mController.isChecked(); + + assertThat(result).isFalse(); + } +} diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java new file mode 100644 index 00000000000..dbed5421a00 --- /dev/null +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.provider.Settings; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +/** Tests for {@link TrackpadRecentAppsPreferenceController} */ +@RunWith(RobolectricTestRunner.class) +public class TrackpadRecentAppsPreferenceControllerTest { + + private static final String PREFERENCE_KEY = "gesture_recent_apps"; + private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_OVERVIEW_ENABLED; + + private Context mContext; + private TrackpadRecentAppsPreferenceController mController; + + @Before + public void setUp() { + mContext = ApplicationProvider.getApplicationContext(); + mController = new TrackpadRecentAppsPreferenceController(mContext, PREFERENCE_KEY); + } + + @Test + public void getAvailabilityStatus_expected() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.AVAILABLE); + } + + @Test + public void getSliceHighlightMenuRes_expected() { + assertThat(mController.getSliceHighlightMenuRes()).isEqualTo(R.string.menu_key_system); + } + + @Test + public void setChecked_true_shouldReturn1() { + mController.setChecked(true); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(1); + } + + @Test + public void setChecked_false_shouldReturn0() { + mController.setChecked(false); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(0); + } + + @Test + public void isChecked_providerPutInt1_returnTrue() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 1); + + boolean result = mController.isChecked(); + + assertThat(result).isTrue(); + } + + @Test + public void isChecked_providerPutInt0_returnFalse() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 0); + + boolean result = mController.isChecked(); + + assertThat(result).isFalse(); + } +} diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java new file mode 100644 index 00000000000..3f160258e29 --- /dev/null +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.inputmethod; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.provider.Settings; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +/** Tests for {@link TrackpadSwitchAppsPreferenceController} */ +@RunWith(RobolectricTestRunner.class) +public class TrackpadSwitchAppsPreferenceControllerTest { + + private static final String PREFERENCE_KEY = "gesture_switch_apps"; + private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_QUICK_SWITCH_ENABLED; + + private Context mContext; + private TrackpadSwitchAppsPreferenceController mController; + + @Before + public void setUp() { + mContext = ApplicationProvider.getApplicationContext(); + mController = new TrackpadSwitchAppsPreferenceController(mContext, PREFERENCE_KEY); + } + + @Test + public void getAvailabilityStatus_expected() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.AVAILABLE); + } + + @Test + public void getSliceHighlightMenuRes_expected() { + assertThat(mController.getSliceHighlightMenuRes()).isEqualTo(R.string.menu_key_system); + } + + @Test + public void setChecked_true_shouldReturn1() { + mController.setChecked(true); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(1); + } + + @Test + public void setChecked_false_shouldReturn0() { + mController.setChecked(false); + + int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); + + assertThat(result).isEqualTo(0); + } + + @Test + public void isChecked_providerPutInt1_returnTrue() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 1); + + boolean result = mController.isChecked(); + + assertThat(result).isTrue(); + } + + @Test + public void isChecked_providerPutInt0_returnFalse() { + Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, 0); + + boolean result = mController.isChecked(); + + assertThat(result).isFalse(); + } +}