From fb6f25ff28fad9b8e46e9f8b046e40a23c51559d Mon Sep 17 00:00:00 2001 From: shaoweishen Date: Mon, 18 Nov 2024 07:11:46 +0000 Subject: [PATCH 1/8] [Keyboard Setting] Rename KeyboardSettingUtils rename KeyboardSettingUtils to match more about usage. Bug: 379594195 Test: atest SettingsRoboTests Flag: NONE, rename file. Change-Id: If978e7b56ecbdb0b571db5ff34553bbb20f976ee --- ...ava => InputPeripheralsSettingsUtils.java} | 4 +-- .../KeyboardLayoutDialogFragment.java | 2 +- .../KeyboardLayoutPickerController.java | 6 +++-- .../KeyboardLayoutPickerFragment.java | 2 +- ...wKeyboardLayoutEnabledLocalesFragment.java | 26 ++++++++++--------- .../NewKeyboardLayoutPickerContent.java | 4 +-- .../NewKeyboardLayoutPickerController.java | 24 ++++++++++------- .../inputmethod/PhysicalKeyboardFragment.java | 4 +-- .../PointerColorCustomizationFragment.java | 4 +-- .../inputmethod/PointerTouchpadFragment.java | 4 +-- .../PointerTouchpadPreferenceController.java | 4 +-- ...uchGesturesButtonPreferenceController.java | 2 +- .../TrackpadBottomPreferenceController.java | 2 +- ...dReverseScrollingPreferenceController.java | 2 +- .../inputmethod/TrackpadSettings.java | 4 +-- .../TrackpadSettingsController.java | 6 ++--- ...ackpadTapDraggingPreferenceController.java | 2 +- ...rackpadTapToClickPreferenceController.java | 2 +- .../TrackpadTouchGestureSettings.java | 2 +- ...rackpadTouchGestureSettingsController.java | 2 +- .../TrackpadSettingsControllerTest.java | 2 +- 21 files changed, 59 insertions(+), 51 deletions(-) rename src/com/android/settings/inputmethod/{NewKeyboardSettingsUtils.java => InputPeripheralsSettingsUtils.java} (98%) diff --git a/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java b/src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java similarity index 98% rename from src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java rename to src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java index 587370b19a2..6e3d11caa58 100644 --- a/src/com/android/settings/inputmethod/NewKeyboardSettingsUtils.java +++ b/src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java @@ -44,9 +44,9 @@ import java.util.Arrays; import java.util.Comparator; /** - * Utilities of keyboard settings + * Utilities of input peripherals settings */ -public class NewKeyboardSettingsUtils { +public class InputPeripheralsSettingsUtils { static final String EXTRA_TITLE = "keyboard_layout_picker_title"; static final String EXTRA_USER_ID = "user_id"; diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java index 54c608cf309..a4baa917c84 100644 --- a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java +++ b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java @@ -308,7 +308,7 @@ public class KeyboardLayoutDialogFragment extends InstrumentedDialogFragment public Keyboards loadInBackground() { Keyboards keyboards = new Keyboards(); InputManager im = (InputManager)getContext().getSystemService(Context.INPUT_SERVICE); - if (mInputDeviceIdentifier == null || NewKeyboardSettingsUtils.getInputDevice( + if (mInputDeviceIdentifier == null || InputPeripheralsSettingsUtils.getInputDevice( im, mInputDeviceIdentifier) == null) { keyboards.keyboardLayouts.add(null); // default layout keyboards.current = 0; diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerController.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerController.java index 1f29a2b153d..97d8ffcff84 100644 --- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerController.java +++ b/src/com/android/settings/inputmethod/KeyboardLayoutPickerController.java @@ -68,11 +68,13 @@ public class KeyboardLayoutPickerController extends BasePreferenceController imp public void onStart() { mIm.registerInputDeviceListener(this, null); if (mInputDeviceIdentifier == null - || NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) { + || InputPeripheralsSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) + == null) { return; } mInputDeviceId = - NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier).getId(); + InputPeripheralsSettingsUtils.getInputDevice(mIm, + mInputDeviceIdentifier).getId(); updateCheckedState(); } diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java index 8abde7e35b4..c21ac636f09 100644 --- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java +++ b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java @@ -46,7 +46,7 @@ public class KeyboardLayoutPickerFragment extends DashboardFragment { final InputDeviceIdentifier inputDeviceIdentifier = getActivity().getIntent(). getParcelableExtra(EXTRA_INPUT_DEVICE_IDENTIFIER); final InputManager im = context.getSystemService(InputManager.class); - if (NewKeyboardSettingsUtils.getInputDevice(im, inputDeviceIdentifier) == null) { + if (InputPeripheralsSettingsUtils.getInputDevice(im, inputDeviceIdentifier) == null) { return; } use(KeyboardLayoutPickerController.class).initialize(this /*parent*/, diff --git a/src/com/android/settings/inputmethod/NewKeyboardLayoutEnabledLocalesFragment.java b/src/com/android/settings/inputmethod/NewKeyboardLayoutEnabledLocalesFragment.java index 7a5885756dd..08aacf8c833 100644 --- a/src/com/android/settings/inputmethod/NewKeyboardLayoutEnabledLocalesFragment.java +++ b/src/com/android/settings/inputmethod/NewKeyboardLayoutEnabledLocalesFragment.java @@ -40,7 +40,7 @@ import com.android.settings.Utils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.profileselector.ProfileSelectFragment; -import com.android.settings.inputmethod.NewKeyboardSettingsUtils.KeyboardInfo; +import com.android.settings.inputmethod.InputPeripheralsSettingsUtils.KeyboardInfo; import java.util.ArrayList; import java.util.Collections; @@ -117,14 +117,15 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment return; } mInputDeviceIdentifier = - arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER, + arguments.getParcelable( + InputPeripheralsSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER, InputDeviceIdentifier.class); if (mInputDeviceIdentifier == null) { Log.e(TAG, "The inputDeviceIdentifier should not be null"); return; } InputDevice inputDevice = - NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier); + InputPeripheralsSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier); if (inputDevice == null) { Log.e(TAG, "inputDevice is null"); return; @@ -138,7 +139,7 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment super.onStart(); mIm.registerInputDeviceListener(this, null); InputDevice inputDevice = - NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier); + InputPeripheralsSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier); if (inputDevice == null) { Log.e(TAG, "Unable to start: input device is null"); getActivity().finish(); @@ -161,7 +162,7 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment } private void updateCheckedState() { - if (NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) { + if (InputPeripheralsSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) { return; } @@ -207,9 +208,9 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment private void mapLanguageWithLayout(InputMethodInfo info, InputMethodSubtype subtype) { CharSequence subtypeLabel = getSubtypeLabel(mContext, info, subtype); KeyboardLayout[] keyboardLayouts = - NewKeyboardSettingsUtils.getKeyboardLayouts( + InputPeripheralsSettingsUtils.getKeyboardLayouts( mIm, mUserId, mInputDeviceIdentifier, info, subtype); - KeyboardLayoutSelectionResult result = NewKeyboardSettingsUtils.getKeyboardLayout( + KeyboardLayoutSelectionResult result = InputPeripheralsSettingsUtils.getKeyboardLayout( mIm, mUserId, mInputDeviceIdentifier, info, subtype); if (result.getLayoutDescriptor() != null) { for (int i = 0; i < keyboardLayouts.length; i++) { @@ -316,13 +317,14 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment InputMethodSubtype inputMethodSubtype) { Bundle arguments = new Bundle(); arguments.putParcelable( - NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER, inputDeviceIdentifier); + InputPeripheralsSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER, + inputDeviceIdentifier); arguments.putParcelable( - NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_INFO, inputMethodInfo); + InputPeripheralsSettingsUtils.EXTRA_INPUT_METHOD_INFO, inputMethodInfo); arguments.putParcelable( - NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE, inputMethodSubtype); - arguments.putInt(NewKeyboardSettingsUtils.EXTRA_USER_ID, userId); - arguments.putCharSequence(NewKeyboardSettingsUtils.EXTRA_TITLE, subtypeLabel); + InputPeripheralsSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE, inputMethodSubtype); + arguments.putInt(InputPeripheralsSettingsUtils.EXTRA_USER_ID, userId); + arguments.putCharSequence(InputPeripheralsSettingsUtils.EXTRA_TITLE, subtypeLabel); new SubSettingLauncher(mContext) .setSourceMetricsCategory(getMetricsCategory()) .setDestination(NewKeyboardLayoutPickerFragment.class.getName()) diff --git a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerContent.java b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerContent.java index e9349644be1..e9701aa0760 100644 --- a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerContent.java +++ b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerContent.java @@ -48,9 +48,9 @@ public class NewKeyboardLayoutPickerContent extends DashboardFragment { InputManager im = getContext().getSystemService(InputManager.class); InputDeviceIdentifier identifier = getArguments().getParcelable( - NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); + InputPeripheralsSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); if (identifier == null - || NewKeyboardSettingsUtils.getInputDevice(im, identifier) == null) { + || InputPeripheralsSettingsUtils.getInputDevice(im, identifier) == null) { getActivity().finish(); return; } diff --git a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java index ec727e8a55b..e8a645f2b5e 100644 --- a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java +++ b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java @@ -73,19 +73,21 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController public void initialize(Fragment parent) { mParent = parent; Bundle arguments = parent.getArguments(); - mTitle = arguments.getCharSequence(NewKeyboardSettingsUtils.EXTRA_TITLE); - mUserId = arguments.getInt(NewKeyboardSettingsUtils.EXTRA_USER_ID); + mTitle = arguments.getCharSequence(InputPeripheralsSettingsUtils.EXTRA_TITLE); + mUserId = arguments.getInt(InputPeripheralsSettingsUtils.EXTRA_USER_ID); mInputDeviceIdentifier = - arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); + arguments.getParcelable( + InputPeripheralsSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER); mInputMethodInfo = - arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_INFO); + arguments.getParcelable(InputPeripheralsSettingsUtils.EXTRA_INPUT_METHOD_INFO); mInputMethodSubtype = - arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE); + arguments.getParcelable( + InputPeripheralsSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE); mLayout = getSelectedLayoutLabel(); mFinalSelectedLayout = mLayout; mKeyboardLayouts = mIm.getKeyboardLayoutListForInputDevice( mInputDeviceIdentifier, mUserId, mInputMethodInfo, mInputMethodSubtype); - NewKeyboardSettingsUtils.sortKeyboardLayoutsByLabel(mKeyboardLayouts); + InputPeripheralsSettingsUtils.sortKeyboardLayoutsByLabel(mKeyboardLayouts); parent.getActivity().setTitle(mTitle); } @@ -93,11 +95,13 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController public void onStart() { mIm.registerInputDeviceListener(this, null); if (mInputDeviceIdentifier == null - || NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) { + || InputPeripheralsSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) + == null) { return; } mInputDeviceId = - NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier).getId(); + InputPeripheralsSettingsUtils.getInputDevice(mIm, + mInputDeviceIdentifier).getId(); } @Override @@ -202,9 +206,9 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController private String getSelectedLayoutLabel() { String label = mContext.getString(R.string.keyboard_default_layout); - KeyboardLayoutSelectionResult result = NewKeyboardSettingsUtils.getKeyboardLayout( + KeyboardLayoutSelectionResult result = InputPeripheralsSettingsUtils.getKeyboardLayout( mIm, mUserId, mInputDeviceIdentifier, mInputMethodInfo, mInputMethodSubtype); - KeyboardLayout[] keyboardLayouts = NewKeyboardSettingsUtils.getKeyboardLayouts( + KeyboardLayout[] keyboardLayouts = InputPeripheralsSettingsUtils.getKeyboardLayouts( mIm, mUserId, mInputDeviceIdentifier, mInputMethodInfo, mInputMethodSubtype); if (result.getLayoutDescriptor() != null) { for (KeyboardLayout keyboardLayout : keyboardLayouts) { diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java index 910a1d6e845..fcb672da404 100644 --- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java @@ -317,7 +317,7 @@ public final class PhysicalKeyboardFragment extends DashboardFragment final Preference pref = new Preference(getPrefContext()); pref.setTitle(hardKeyboardDeviceInfo.mDeviceName); String currentLayout = - NewKeyboardSettingsUtils.getSelectedKeyboardLayoutLabelForUser(context, + InputPeripheralsSettingsUtils.getSelectedKeyboardLayoutLabelForUser(context, UserHandle.myUserId(), hardKeyboardDeviceInfo.mDeviceIdentifier); if (currentLayout != null) { pref.setSummary(currentLayout); @@ -369,7 +369,7 @@ public final class PhysicalKeyboardFragment extends DashboardFragment private void showEnabledLocalesKeyboardLayoutList(InputDeviceIdentifier inputDeviceIdentifier) { Bundle arguments = new Bundle(); - arguments.putParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER, + arguments.putParcelable(InputPeripheralsSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER, inputDeviceIdentifier); new SubSettingLauncher(getContext()) .setSourceMetricsCategory(getMetricsCategory()) diff --git a/src/com/android/settings/inputmethod/PointerColorCustomizationFragment.java b/src/com/android/settings/inputmethod/PointerColorCustomizationFragment.java index 2324c5ec2a6..49c0413dfe8 100644 --- a/src/com/android/settings/inputmethod/PointerColorCustomizationFragment.java +++ b/src/com/android/settings/inputmethod/PointerColorCustomizationFragment.java @@ -16,8 +16,8 @@ package com.android.settings.inputmethod; -import static com.android.settings.inputmethod.NewKeyboardSettingsUtils.isMouse; -import static com.android.settings.inputmethod.NewKeyboardSettingsUtils.isTouchpad; +import static com.android.settings.inputmethod.InputPeripheralsSettingsUtils.isMouse; +import static com.android.settings.inputmethod.InputPeripheralsSettingsUtils.isTouchpad; import android.app.settings.SettingsEnums; import android.content.Context; diff --git a/src/com/android/settings/inputmethod/PointerTouchpadFragment.java b/src/com/android/settings/inputmethod/PointerTouchpadFragment.java index fc069caf604..890d9b68479 100644 --- a/src/com/android/settings/inputmethod/PointerTouchpadFragment.java +++ b/src/com/android/settings/inputmethod/PointerTouchpadFragment.java @@ -16,8 +16,8 @@ package com.android.settings.inputmethod; -import static com.android.settings.inputmethod.NewKeyboardSettingsUtils.isMouse; -import static com.android.settings.inputmethod.NewKeyboardSettingsUtils.isTouchpad; +import static com.android.settings.inputmethod.InputPeripheralsSettingsUtils.isMouse; +import static com.android.settings.inputmethod.InputPeripheralsSettingsUtils.isTouchpad; import android.app.settings.SettingsEnums; import android.content.Context; diff --git a/src/com/android/settings/inputmethod/PointerTouchpadPreferenceController.java b/src/com/android/settings/inputmethod/PointerTouchpadPreferenceController.java index b6ea063237a..9c44d1eed9c 100644 --- a/src/com/android/settings/inputmethod/PointerTouchpadPreferenceController.java +++ b/src/com/android/settings/inputmethod/PointerTouchpadPreferenceController.java @@ -32,8 +32,8 @@ public class PointerTouchpadPreferenceController extends BasePreferenceControlle @Override public int getAvailabilityStatus() { - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); - boolean isMouse = NewKeyboardSettingsUtils.isMouse(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); + boolean isMouse = InputPeripheralsSettingsUtils.isMouse(); return (isTouchpad || isMouse) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } } diff --git a/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java b/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java index 71fa28bf5ca..5154623ade4 100644 --- a/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java +++ b/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java @@ -74,7 +74,7 @@ public class TouchGesturesButtonPreferenceController extends BasePreferenceContr @Override public int getAvailabilityStatus() { - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); return isTouchpad ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java index a92ebd434a3..8e77e0cc2c2 100644 --- a/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java @@ -49,7 +49,7 @@ public class TrackpadBottomPreferenceController extends TogglePreferenceControll @Override public int getAvailabilityStatus() { - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); return isTouchpad ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java index ca086a98728..e752c1edbd0 100644 --- a/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java @@ -49,7 +49,7 @@ public class TrackpadReverseScrollingPreferenceController extends TogglePreferen @Override public int getAvailabilityStatus() { - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); return isTouchpad ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/src/com/android/settings/inputmethod/TrackpadSettings.java b/src/com/android/settings/inputmethod/TrackpadSettings.java index 0f9e9cf64a5..757a9540957 100644 --- a/src/com/android/settings/inputmethod/TrackpadSettings.java +++ b/src/com/android/settings/inputmethod/TrackpadSettings.java @@ -43,7 +43,7 @@ public class TrackpadSettings extends DashboardFragment { public void onCreate(@NonNull Bundle icicle) { super.onCreate(icicle); getPreferenceScreen().setTitle( - NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId()); + InputPeripheralsSettingsUtils.getTouchpadAndMouseTitleTitleResId()); } @Override @@ -67,7 +67,7 @@ public class TrackpadSettings extends DashboardFragment { protected boolean isPageSearchEnabled(Context context) { return FeatureFlagUtils .isEnabled(context, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_TRACKPAD) - && NewKeyboardSettingsUtils.isTouchpad(); + && InputPeripheralsSettingsUtils.isTouchpad(); } }; } diff --git a/src/com/android/settings/inputmethod/TrackpadSettingsController.java b/src/com/android/settings/inputmethod/TrackpadSettingsController.java index 9a549ead4f2..ba2ab99c092 100644 --- a/src/com/android/settings/inputmethod/TrackpadSettingsController.java +++ b/src/com/android/settings/inputmethod/TrackpadSettingsController.java @@ -77,17 +77,17 @@ public class TrackpadSettingsController extends BasePreferenceController return; } mPreference.setVisible(isAvailable()); - mPreference.setTitle(NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId()); + mPreference.setTitle(InputPeripheralsSettingsUtils.getTouchpadAndMouseTitleTitleResId()); } @Override public int getAvailabilityStatus() { boolean isFeatureOn = FeatureFlagUtils .isEnabled(mContext, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_TRACKPAD); - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); boolean isPointerCustomizationEnabled = android.view.flags.Flags.enableVectorCursorA11ySettings(); - boolean isMouse = NewKeyboardSettingsUtils.isMouse(); + boolean isMouse = InputPeripheralsSettingsUtils.isMouse(); return (isFeatureOn && isTouchpad) || (isPointerCustomizationEnabled && isMouse) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/src/com/android/settings/inputmethod/TrackpadTapDraggingPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadTapDraggingPreferenceController.java index b2bb61702a0..71c1638d30c 100644 --- a/src/com/android/settings/inputmethod/TrackpadTapDraggingPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadTapDraggingPreferenceController.java @@ -49,7 +49,7 @@ public class TrackpadTapDraggingPreferenceController extends TogglePreferenceCon @Override public int getAvailabilityStatus() { - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); return (InputSettings.isTouchpadTapDraggingFeatureFlagEnabled() && isTouchpad) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java index c25cc4ec2bf..86d73112598 100644 --- a/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java @@ -49,7 +49,7 @@ public class TrackpadTapToClickPreferenceController extends TogglePreferenceCont @Override public int getAvailabilityStatus() { - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); return isTouchpad ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/src/com/android/settings/inputmethod/TrackpadTouchGestureSettings.java b/src/com/android/settings/inputmethod/TrackpadTouchGestureSettings.java index a6af3f651ba..14bb484d470 100644 --- a/src/com/android/settings/inputmethod/TrackpadTouchGestureSettings.java +++ b/src/com/android/settings/inputmethod/TrackpadTouchGestureSettings.java @@ -59,7 +59,7 @@ public class TrackpadTouchGestureSettings extends DashboardFragment { .isEnabled( context, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_TRACKPAD_GESTURE) - && NewKeyboardSettingsUtils.isTouchpad(); + && InputPeripheralsSettingsUtils.isTouchpad(); } }; } diff --git a/src/com/android/settings/inputmethod/TrackpadTouchGestureSettingsController.java b/src/com/android/settings/inputmethod/TrackpadTouchGestureSettingsController.java index 79497276aba..ff6899049c0 100644 --- a/src/com/android/settings/inputmethod/TrackpadTouchGestureSettingsController.java +++ b/src/com/android/settings/inputmethod/TrackpadTouchGestureSettingsController.java @@ -31,7 +31,7 @@ public class TrackpadTouchGestureSettingsController extends BasePreferenceContro public int getAvailabilityStatus() { boolean isFeatureOn = FeatureFlagUtils .isEnabled(mContext, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_TRACKPAD_GESTURE); - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); return (isFeatureOn && isTouchpad) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } } diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSettingsControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSettingsControllerTest.java index 5308d1f8f78..727363f175c 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSettingsControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSettingsControllerTest.java @@ -72,7 +72,7 @@ public class TrackpadSettingsControllerTest { InputDevice.SOURCE_TOUCHPAD); ShadowInputDevice.addDevice(deviceId, device); String expectedTitle = mContext.getString( - NewKeyboardSettingsUtils.getTouchpadAndMouseTitleTitleResId()); + InputPeripheralsSettingsUtils.getTouchpadAndMouseTitleTitleResId()); mController.updateState(mPreference); From 472e415659eb3bb0928e2aa5cceab5a71d25925a Mon Sep 17 00:00:00 2001 From: Denis Kuznetsov Date: Thu, 21 Nov 2024 15:31:06 +0100 Subject: [PATCH 2/8] Control user switching UI visibility according to config Bug: 375394047 Test: atest UserDetailsSettingsTest UserSettingsTest Test: build platform with config overrides, check the result Flag: EXEMPT Desktop-only change Change-Id: Iaf1ac6c98a648066bf77b069039dcd59e243835f --- src/com/android/settings/users/UserCapabilities.java | 5 ++++- src/com/android/settings/users/UserDetailsSettings.java | 2 ++ src/com/android/settings/users/UserSettings.java | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/users/UserCapabilities.java b/src/com/android/settings/users/UserCapabilities.java index 60e92a8c2ce..9dd1f84c86a 100644 --- a/src/com/android/settings/users/UserCapabilities.java +++ b/src/com/android/settings/users/UserCapabilities.java @@ -36,6 +36,7 @@ public class UserCapabilities { boolean mIsAdmin; boolean mIsGuest; boolean mIsEphemeral; + boolean mUserSwitchingUiEnabled; boolean mUserSwitcherEnabled; boolean mCanAddGuest; boolean mDisallowAddUser; @@ -68,7 +69,8 @@ public class UserCapabilities { caps.mCanAddRestrictedProfile = offerRestricted && !dpm.isDeviceManaged() && userManager.isUserTypeEnabled( UserManager.USER_TYPE_FULL_RESTRICTED); - + caps.mUserSwitchingUiEnabled = context.getResources().getBoolean( + com.android.internal.R.bool.config_allowChangeUserSwitcherEnabled); caps.updateAddUserCapabilities(context); return caps; } @@ -134,6 +136,7 @@ public class UserCapabilities { ", mEnforcedAdmin=" + mEnforcedAdmin + ", mDisallowSwitchUser=" + mDisallowSwitchUser + ", mDisallowAddUserSetByAdmin=" + mDisallowAddUserSetByAdmin + + ", mUserSwitchingUiEnabled=" + mUserSwitchingUiEnabled + ", mUserSwitcherEnabled=" + mUserSwitcherEnabled + '}'; } diff --git a/src/com/android/settings/users/UserDetailsSettings.java b/src/com/android/settings/users/UserDetailsSettings.java index 8afab9678f4..ec4a4ff2558 100644 --- a/src/com/android/settings/users/UserDetailsSettings.java +++ b/src/com/android/settings/users/UserDetailsSettings.java @@ -354,6 +354,8 @@ public class UserDetailsSettings extends SettingsPreferenceFragment mGrantAdminPref.setChecked(mUserInfo.isAdmin()); + mSwitchUserPref.setVisible(mUserCaps.mUserSwitchingUiEnabled); + mSwitchUserPref.setTitle( context.getString(com.android.settingslib.R.string.user_switch_to_user, mUserInfo.name)); diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 0881b29a3b3..27d6699f890 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -287,7 +287,7 @@ public class UserSettings extends SettingsPreferenceFragment final SettingsActivity activity = (SettingsActivity) getActivity(); final SettingsMainSwitchBar switchBar = activity.getSwitchBar(); switchBar.setTitle(getContext().getString(R.string.multiple_users_main_switch_title)); - if (!mUserCaps.mIsGuest) { + if (!mUserCaps.mIsGuest && mUserCaps.mUserSwitchingUiEnabled) { switchBar.show(); } else { switchBar.hide(); From 4072d431232d1a9643f8a97e2d33e20bf53a8f67 Mon Sep 17 00:00:00 2001 From: Cam Bickel Date: Thu, 21 Nov 2024 23:16:32 +0000 Subject: [PATCH 3/8] Cleanup flag "never_restrict_a11y_activity" Full flag name: "never_restrict_accessibility_activity" Bug: b/331990900 Test: atest RestrictedPreferenceHelperTest Flag: EXEMPT flag cleanup Change-Id: I365ed105043cb4835075b8b9016b41862f82021c --- .../RestrictedPreferenceHelper.java | 15 +++------------ .../RestrictedPreferenceHelperTest.java | 18 ------------------ 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/src/com/android/settings/accessibility/RestrictedPreferenceHelper.java b/src/com/android/settings/accessibility/RestrictedPreferenceHelper.java index c324130bb3a..82aa0984a0b 100644 --- a/src/com/android/settings/accessibility/RestrictedPreferenceHelper.java +++ b/src/com/android/settings/accessibility/RestrictedPreferenceHelper.java @@ -110,10 +110,6 @@ public class RestrictedPreferenceHelper { */ public List createAccessibilityActivityPreferenceList( List installedShortcuts) { - final Set enabledServices = - AccessibilityUtils.getEnabledServicesFromSettings(mContext); - final List permittedServices = mDpm.getPermittedAccessibilityServices( - UserHandle.myUserId()); final int installedShortcutsSize = installedShortcuts.size(); final List preferenceList = new ArrayList<>( @@ -124,17 +120,12 @@ public class RestrictedPreferenceHelper { final ActivityInfo activityInfo = info.getActivityInfo(); final ComponentName componentName = info.getComponentName(); - final boolean serviceEnabled = enabledServices.contains(componentName); AccessibilityActivityPreference preference = new AccessibilityActivityPreference( mContext, componentName.getPackageName(), activityInfo.applicationInfo.uid, info); - if (Flags.neverRestrictAccessibilityActivity()) { - // Accessibility Activities do not have elevated privileges so restricting - // them based on ECM or device admin does not give any value. - preference.setEnabled(true); - } else { - setRestrictedPreferenceEnabled(preference, permittedServices, serviceEnabled); - } + // Accessibility Activities do not have elevated privileges so restricting + // them based on ECM or device admin does not give any value. + preference.setEnabled(true); preferenceList.add(preference); } return preferenceList; diff --git a/tests/robotests/src/com/android/settings/accessibility/RestrictedPreferenceHelperTest.java b/tests/robotests/src/com/android/settings/accessibility/RestrictedPreferenceHelperTest.java index 2a41e62e7ae..4eda58ebaf2 100644 --- a/tests/robotests/src/com/android/settings/accessibility/RestrictedPreferenceHelperTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/RestrictedPreferenceHelperTest.java @@ -31,7 +31,6 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; -import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; @@ -141,27 +140,10 @@ public class RestrictedPreferenceHelperTest { assertThat(preference.getKey()).isEqualTo(key); } - @Test - @EnableFlags(value = {android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS, - android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED}) - @DisableFlags(Flags.FLAG_NEVER_RESTRICT_ACCESSIBILITY_ACTIVITY) - public void createAccessibilityActivityPreference_ecmRestricted_prefIsEcmRestricted() { - setMockAccessibilityShortcutInfo(mShortcutInfo); - ShadowRestrictedLockUtilsInternal.setEcmRestrictedPkgs(PACKAGE_NAME); - - final List preferenceList = - mHelper.createAccessibilityActivityPreferenceList(List.of(mShortcutInfo)); - assertThat(preferenceList).hasSize(1); - final RestrictedPreference preference = preferenceList.get(0); - - assertThat(preference.isDisabledByEcm()).isTrue(); - } - @Test @EnableFlags(value = { android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS, android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED, - Flags.FLAG_NEVER_RESTRICT_ACCESSIBILITY_ACTIVITY, }) public void createAccessibilityActivityPreference_ecmRestricted_prefIsNotEcmRestricted() { setMockAccessibilityShortcutInfo(mShortcutInfo); From 5d8680e1937cd028f701194fa1412adbf8502470 Mon Sep 17 00:00:00 2001 From: yomna Date: Thu, 21 Nov 2024 05:07:58 +0000 Subject: [PATCH 4/8] Fix redirect to Mobile security page When the user first access the Mobile network security settings, they should not open in Safety Center even if Safety Center is supported. Until notifications are enabled for hardware security APIs, they should open in Settings. This is because the Safety Center redirect will fail if the Safety Source has not begun providing data to Safety Center. Also update the relevant unit test. Flag: EXEMPT bugfix Bug: 373942609 Test: m & atest CellularSecurityNotificationsDividerControllerTest CellularSecurityNotificationsPreferenceControllerTest CellularSecurityEncryptionDividerControllerTest CellularSecurityPreferenceControllerTest Change-Id: Ica87be4f1567541a6e3ccbe5dd5b674224aa1d8e --- .../network/CellularSecurityPreferenceController.java | 2 +- .../network/CellularSecurityPreferenceControllerTest.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/CellularSecurityPreferenceController.java b/src/com/android/settings/network/CellularSecurityPreferenceController.java index 0b0c2a7e948..e515339c68c 100644 --- a/src/com/android/settings/network/CellularSecurityPreferenceController.java +++ b/src/com/android/settings/network/CellularSecurityPreferenceController.java @@ -125,7 +125,7 @@ public class CellularSecurityPreferenceController extends BasePreferenceControll return super.handlePreferenceTreeClick(preference); } boolean isSafetyCenterSupported = isSafetyCenterSupported(); - if (isSafetyCenterSupported) { + if (isSafetyCenterSupported && areNotificationsEnabled()) { Intent safetyCenterIntent = new Intent(Intent.ACTION_SAFETY_CENTER); safetyCenterIntent.putExtra(SafetyCenterManager.EXTRA_SAFETY_SOURCES_GROUP_ID, "AndroidCellularNetworkSecuritySources"); diff --git a/tests/unit/src/com/android/settings/network/CellularSecurityPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/CellularSecurityPreferenceControllerTest.java index 59e10c36ec7..7f05913cd82 100644 --- a/tests/unit/src/com/android/settings/network/CellularSecurityPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/CellularSecurityPreferenceControllerTest.java @@ -152,6 +152,10 @@ public final class CellularSecurityPreferenceControllerTest { public void handlePreferenceTreeClick_safetyCenterSupported_shouldRedirectToSafetyCenter() { final ArgumentCaptor intentCaptor = ArgumentCaptor.forClass(Intent.class); + doReturn(true).when(mTelephonyManager).isNullCipherNotificationsEnabled(); + doReturn(true).when(mTelephonyManager) + .isCellularIdentifierDisclosureNotificationsEnabled(); + doReturn(true).when(mTelephonyManager).isNullCipherAndIntegrityPreferenceEnabled(); boolean prefHandled = mController.handlePreferenceTreeClick(mPreference); assertThat(prefHandled).isTrue(); From 6b28741c385c8f0b2058446329b7049e35697e46 Mon Sep 17 00:00:00 2001 From: Chun-Ku Lin Date: Fri, 22 Nov 2024 04:49:19 +0000 Subject: [PATCH 5/8] Top intro shouldn't be searchable Bug: 380361391 Test: manually search the top intro, it doesn't show up in the search result Flag: EXEMPT resource only Change-Id: Ia69db552faa4238276560172c10684705ef28f5e --- res/xml/accessibility_button_settings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/res/xml/accessibility_button_settings.xml b/res/xml/accessibility_button_settings.xml index 2b1392d4498..5be0cdb8124 100644 --- a/res/xml/accessibility_button_settings.xml +++ b/res/xml/accessibility_button_settings.xml @@ -20,7 +20,8 @@ + android:title="@string/accessibility_button_intro_text" + settings:searchable="false" /> Date: Wed, 13 Nov 2024 03:40:05 +0000 Subject: [PATCH 6/8] [Physical Keyboard] Add flag for deeplink keyboard layout picker page one pager: go/deeplink_pk_layout_picker Bug: 345399212 Test: N/A Flag: com.android.settings.keyboard.keyboard_layout_picker_activity_enabled Change-Id: Ia5bbef228b5ccf8614ebe29b88d87d116289fc32 --- .../settings_keyboard_layout_picker_features.aconfig | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 aconfig/keyboard/settings_keyboard_layout_picker_features.aconfig diff --git a/aconfig/keyboard/settings_keyboard_layout_picker_features.aconfig b/aconfig/keyboard/settings_keyboard_layout_picker_features.aconfig new file mode 100644 index 00000000000..18684ab7344 --- /dev/null +++ b/aconfig/keyboard/settings_keyboard_layout_picker_features.aconfig @@ -0,0 +1,9 @@ +package: "com.android.settings.keyboard" +container: "system" + +flag { + name: "keyboard_layout_picker_activity_enabled" + namespace: "input" + description: "This flag enables or disables exposed page of keyboard layout picker" + bug: "345399212" +} \ No newline at end of file From bc2f58f25626da8ec299e49323f3dea2c69a5d5e Mon Sep 17 00:00:00 2001 From: shaoweishen Date: Fri, 22 Nov 2024 07:33:28 +0000 Subject: [PATCH 7/8] [Keyboard Setting] Fix build break from util rename Bug: 380379870 Test: atest SettingsRoboTests Flag: NONE, build break fix. Change-Id: Iab66c248bebd41957805caa88dcb9031fb82afd4 --- .../settings/inputmethod/TouchpadThreeFingerTapFragment.java | 2 +- .../inputmethod/TouchpadThreeFingerTapPreferenceController.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/inputmethod/TouchpadThreeFingerTapFragment.java b/src/com/android/settings/inputmethod/TouchpadThreeFingerTapFragment.java index c9a2b5f0984..3aee4bf8927 100644 --- a/src/com/android/settings/inputmethod/TouchpadThreeFingerTapFragment.java +++ b/src/com/android/settings/inputmethod/TouchpadThreeFingerTapFragment.java @@ -16,7 +16,7 @@ package com.android.settings.inputmethod; -import static com.android.settings.inputmethod.NewKeyboardSettingsUtils.isTouchpad; +import static com.android.settings.inputmethod.InputPeripheralsSettingsUtils.isTouchpad; import android.app.settings.SettingsEnums; import android.content.Context; diff --git a/src/com/android/settings/inputmethod/TouchpadThreeFingerTapPreferenceController.java b/src/com/android/settings/inputmethod/TouchpadThreeFingerTapPreferenceController.java index 99db0e74ce1..7afd266b7ac 100644 --- a/src/com/android/settings/inputmethod/TouchpadThreeFingerTapPreferenceController.java +++ b/src/com/android/settings/inputmethod/TouchpadThreeFingerTapPreferenceController.java @@ -65,7 +65,7 @@ public class TouchpadThreeFingerTapPreferenceController extends BasePreferenceCo @Override public int getAvailabilityStatus() { - boolean isTouchpad = NewKeyboardSettingsUtils.isTouchpad(); + boolean isTouchpad = InputPeripheralsSettingsUtils.isTouchpad(); return (InputSettings.isTouchpadThreeFingerTapShortcutFeatureFlagEnabled() && isTouchpad) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } From bafd2cf5424822e985c7f26c6c1291d9ac83e124 Mon Sep 17 00:00:00 2001 From: Jason Chang Date: Sat, 16 Nov 2024 15:04:00 +0000 Subject: [PATCH 8/8] Fix in the scrollable Glif header design, the sub-title can not be read out automatically in the Udfps enrolling page 1. To set focus on description view when turned on A11y & description view invisible. 2. Get back the hiding description snippet and wrap it by aconfig flag condition. Flag: com.android.settings.flags.enroll_layout_truncate_improvement Bug: 379090673 Test: atest UdfpsEnrollEnrollingView Test: Build Forrest ROM then check the UI in different scenarios Change-Id: Ic76c15ccb82998781102492ef9894190aa824218 --- .../FingerprintEnrollEnrolling.java | 26 +++++++- .../fingerprint/UdfpsEnrollEnrollingView.java | 60 ++++++++++++++++--- 2 files changed, 77 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java index 1de8379bd76..2cbf8d089ff 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java @@ -270,7 +270,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { R.integer.config_biometrics_header_scroll_duration); layoutView.adjustScrollableHeaderHeight( headerScrollView, mShouldShowLottie); - layoutView.headerVerticalScrolling(headerScrollView, headerScrollDuration); + layoutView.headerVerticalScrolling(headerScrollView, headerScrollDuration, + mIsAccessibilityEnabled); } } } @@ -547,6 +548,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } private void updateTitleAndDescriptionForUdfps() { + final UdfpsEnrollEnrollingView layoutView = (UdfpsEnrollEnrollingView) getLayout(); + final boolean shouldSetFocusOnDescription = Flags.enrollLayoutTruncateImprovement() + && mIsAccessibilityEnabled; switch (getCurrentStage()) { case STAGE_CENTER: setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title); @@ -560,6 +564,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { ); configureEnrollmentStage(R.raw.udfps_center_hint_lottie); } + + if (shouldSetFocusOnDescription) { + layoutView.setFocusOnDescription(); + } break; case STAGE_GUIDED: @@ -574,6 +582,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { // TODO(b/228100413) Could customize guided lottie animation configureEnrollmentStage(R.raw.udfps_center_hint_lottie); } + + if (shouldSetFocusOnDescription) { + layoutView.setFocusOnDescription(); + } break; case STAGE_FINGERTIP: setHeaderText(R.string.security_settings_udfps_enroll_fingertip_title); @@ -584,6 +596,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { ); configureEnrollmentStage(R.raw.udfps_tip_hint_lottie); } + + if (shouldSetFocusOnDescription) { + layoutView.setFocusOnDescription(); + } break; case STAGE_LEFT_EDGE: setHeaderText(R.string.security_settings_udfps_enroll_left_edge_title); @@ -601,6 +617,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setDescriptionText(R.string.security_settings_udfps_enroll_edge_message); } } + + if (shouldSetFocusOnDescription) { + layoutView.setFocusOnDescription(); + } break; case STAGE_RIGHT_EDGE: setHeaderText(R.string.security_settings_udfps_enroll_right_edge_title); @@ -619,6 +639,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setDescriptionText(R.string.security_settings_udfps_enroll_edge_message); } } + + if (shouldSetFocusOnDescription) { + layoutView.setFocusOnDescription(); + } break; case STAGE_UNKNOWN: diff --git a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingView.java b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingView.java index 5b29fa5f1f6..931974eaf15 100644 --- a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingView.java +++ b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollEnrollingView.java @@ -25,6 +25,7 @@ import android.graphics.Insets; import android.graphics.Point; import android.graphics.Rect; import android.hardware.fingerprint.FingerprintSensorPropertiesInternal; +import android.os.Handler; import android.text.TextUtils; import android.util.AttributeSet; import android.util.DisplayMetrics; @@ -44,6 +45,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ScrollView; +import android.widget.TextView; import androidx.annotation.ColorInt; import androidx.annotation.LayoutRes; @@ -200,7 +202,26 @@ public class UdfpsEnrollEnrollingView extends GlifLayout { return footerBarMinHeight; } - void headerVerticalScrolling(ScrollView headerScrollView, long duration) { + void setFocusOnDescription() { + final ScrollView headerScrollView = findViewById(R.id.sud_header_scroll_view); + final TextView descriptionView = getDescriptionTextView(); + if (descriptionView != null && !descriptionView.getText().isEmpty()) { + descriptionView.post( + () -> { + Rect scrollBounds = new Rect(); + headerScrollView.getHitRect(scrollBounds); + boolean isVisible = descriptionView.getLocalVisibleRect(scrollBounds); + if (!isVisible) { + descriptionView.setFocusable(true); + descriptionView.setFocusableInTouchMode(true); + descriptionView.requestFocus(); + } + }); + } + } + + void headerVerticalScrolling(ScrollView headerScrollView, long duration, + boolean isAccessibilityEnabled) { headerScrollView.post(new Runnable() { @Override public void run() { @@ -216,13 +237,23 @@ public class UdfpsEnrollEnrollingView extends GlifLayout { @Override public void onAnimationEnd(@NonNull Animator animation) { - mHeaderScrollAnimator.removeAllListeners(); - headerScrollView.post(new Runnable() { - @Override - public void run() { - mHeaderScrollAnimator.reverse(); - } - }); + headerScrollView.post(new Runnable() { + @Override + public void run() { + mHeaderScrollAnimator.removeAllListeners(); + mHeaderScrollAnimator.reverse(); + if (isAccessibilityEnabled) { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + if (!mHeaderScrollAnimator.isRunning()) { + setFocusOnDescription(); + } + } + }, duration + 200); + } + } + }); } @Override @@ -320,6 +351,19 @@ public class UdfpsEnrollEnrollingView extends GlifLayout { R.id.udfps_enroll_animation_fp_view); fingerprintView.setPadding(0, -layoutLottieAnimationPadding, 0, layoutLottieAnimationPadding); + + // TODO(b/260970216) Instead of hiding the description text view, we should + // make the header view scrollable if the text is too long. + // If description text view has overlap with udfps progress view, hide it. + if (!Flags.enrollLayoutTruncateImprovement()) { + final View descView = getDescriptionTextView(); + getViewTreeObserver().addOnDrawListener(() -> { + if (descView.getVisibility() == View.VISIBLE + && hasOverlap(descView, mUdfpsEnrollView)) { + descView.setVisibility(View.GONE); + } + }); + } } private void setOnHoverListener() {