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
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" />
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/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() {
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/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;
}
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/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/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 589f512ac23..28d2f4f33bd 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();
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);
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);
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();