Merge "[Physical Keybaord] Add keyboard touchpad/Mouse page - part2" into main
diff --git a/res/drawable/ic_settings_mouse.xml b/res/drawable/ic_settings_mouse.xml
new file mode 100644
index 0000000..4ce13d1
--- /dev/null
+++ b/res/drawable/ic_settings_mouse.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorControlNormal">
+  <group>
+    <clip-path
+        android:pathData="M0,0h24v24h-24z"/>
+    <path
+        android:pathData="M12,22C10.067,22 8.417,21.317 7.05,19.95C5.683,18.583 5,16.933 5,15V9C5,7.067 5.683,5.417 7.05,4.05C8.417,2.683 10.067,2 12,2C13.933,2 15.583,2.683 16.95,4.05C18.317,5.417 19,7.067 19,9V15C19,16.933 18.317,18.583 16.95,19.95C15.583,21.317 13.933,22 12,22ZM13,9H17C17,7.8 16.617,6.742 15.85,5.825C15.1,4.908 14.15,4.333 13,4.1V9ZM7,9H11V4.1C9.85,4.333 8.892,4.908 8.125,5.825C7.375,6.742 7,7.8 7,9ZM12,20C13.383,20 14.558,19.517 15.525,18.55C16.508,17.567 17,16.383 17,15V11H7V15C7,16.383 7.483,17.567 8.45,18.55C9.433,19.517 10.617,20 12,20Z"
+        android:fillColor="@android:color/white"/>
+  </group>
+</vector>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f3c58f9..1eb8eaf 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4650,6 +4650,8 @@
     <string name="trackpad_mouse_settings">Touchpad &amp; mouse</string>
     <!-- Title for the button to trigger the 'mouse settings' page if connect with a mouse. [CHAR LIMIT=35] -->
     <string name="mouse_settings">Mouse</string>
+    <!-- Summary text for mouse setting page. [CHAR LIMIT=35] -->
+    <string name="mouse_settings_summary">Pointer speed, swap buttons, button customisation</string>
     <!-- Summary text for the 'trackpad settings' page. [CHAR LIMIT=100] -->
     <string name="trackpad_settings_summary">Pointer speed, gestures</string>
 
diff --git a/res/xml/system_dashboard_fragment.xml b/res/xml/system_dashboard_fragment.xml
index 83cdf64..9c7f001 100644
--- a/res/xml/system_dashboard_fragment.xml
+++ b/res/xml/system_dashboard_fragment.xml
@@ -47,6 +47,24 @@
         settings:controller="com.android.settings.inputmethod.TouchpadAndMouseSettingsController"/>
 
     <Preference
+        android:key="touchpad_settings"
+        android:title="@string/trackpad_settings"
+        android:summary="@string/trackpad_settings_summary"
+        android:icon="@drawable/ic_settings_trackpad"
+        android:order="-253"
+        android:fragment="com.android.settings.inputmethod.TouchpadSettingFragment"
+        settings:controller="com.android.settings.inputmethod.TouchpadSettingsController"/>
+
+    <Preference
+        android:key="mouse_settings"
+        android:title="@string/mouse_settings"
+        android:summary="@string/mouse_settings_summary"
+        android:icon="@drawable/ic_settings_mouse"
+        android:order="-252"
+        android:fragment="com.android.settings.inputmethod.MouseSettingFragment"
+        settings:controller="com.android.settings.inputmethod.MouseSettingsController"/>
+
+    <Preference
         android:key="gesture_settings"
         android:title="@string/gesture_preference_title"
         android:icon="@drawable/ic_settings_gestures"
diff --git a/src/com/android/settings/inputmethod/TouchpadAndMouseSettingsController.java b/src/com/android/settings/inputmethod/TouchpadAndMouseSettingsController.java
index 86e044c..163027b 100644
--- a/src/com/android/settings/inputmethod/TouchpadAndMouseSettingsController.java
+++ b/src/com/android/settings/inputmethod/TouchpadAndMouseSettingsController.java
@@ -26,6 +26,7 @@
 
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.keyboard.Flags;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -85,13 +86,15 @@
 
     @Override
     public int getAvailabilityStatus() {
+        boolean isNewPageFlagDisabled = !Flags.keyboardAndTouchpadA11yNewPageEnabled();
         boolean isFeatureOn = FeatureFlagUtils
                 .isEnabled(mContext, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_TRACKPAD);
         boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad();
         boolean isPointerCustomizationEnabled =
                 android.view.flags.Flags.enableVectorCursorA11ySettings();
         boolean isMouse = InputPeripheralsSettingsUtils.isMouse();
-        return (isFeatureOn && isTouchpad) || (isPointerCustomizationEnabled && isMouse) ? AVAILABLE
+        return ((isFeatureOn && isTouchpad) || (isPointerCustomizationEnabled && isMouse))
+                && isNewPageFlagDisabled ? AVAILABLE
                 : CONDITIONALLY_UNAVAILABLE;
     }
 }
diff --git a/tests/robotests/src/com/android/settings/inputmethod/TouchpadAndMouseSettingsControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TouchpadAndMouseSettingsControllerTest.java
index 9d3cc5f..f3fe93d 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/TouchpadAndMouseSettingsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/TouchpadAndMouseSettingsControllerTest.java
@@ -23,12 +23,15 @@
 import static org.junit.Assume.assumeTrue;
 
 import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
 import android.view.InputDevice;
 
 import androidx.preference.Preference;
 import androidx.test.core.app.ApplicationProvider;
 
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.keyboard.Flags;
 import com.android.settings.testutils.shadow.ShadowInputDevice;
 
 import org.junit.Before;
@@ -48,6 +51,8 @@
 })
 public class TouchpadAndMouseSettingsControllerTest {
     @Rule
+    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+    @Rule
     public MockitoRule rule = MockitoJUnit.rule();
 
     private static final String PREFERENCE_KEY = "trackpad_settings";
@@ -80,6 +85,7 @@
     }
 
     @Test
+    @DisableFlags(Flags.FLAG_KEYBOARD_AND_TOUCHPAD_A11Y_NEW_PAGE_ENABLED)
     public void getAvailabilityStatus_isTouchpadAvailable() {
         int deviceId = 1;
         ShadowInputDevice.sDeviceIds = new int[]{deviceId};
@@ -92,6 +98,7 @@
     }
 
     @Test
+    @DisableFlags(Flags.FLAG_KEYBOARD_AND_TOUCHPAD_A11Y_NEW_PAGE_ENABLED)
     public void getAvailabilityStatus_isMouseAvailable() {
         assumeTrue(enableVectorCursorA11ySettings());