Merge "Fix that holding volume buttons to activate Extra dim feature doesn't do anything." into tm-dev
diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
index a25c4a6..34e1fb0 100644
--- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
@@ -333,6 +333,10 @@
mShortcutPreference.setChecked(shortcutAssigned);
mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
+ if (mHardwareTypeCheckBox.isChecked()) {
+ AccessibilityUtil.skipVolumeShortcutDialogTimeoutRestriction(getPrefContext());
+ }
+
// Show the quick setting tooltip if the shortcut assigned in the first time
if (shortcutAssigned) {
showQuickSettingsTooltipIfNeeded();
diff --git a/src/com/android/settings/accessibility/AccessibilityUtil.java b/src/com/android/settings/accessibility/AccessibilityUtil.java
index 3e97edc..e2e2933 100644
--- a/src/com/android/settings/accessibility/AccessibilityUtil.java
+++ b/src/com/android/settings/accessibility/AccessibilityUtil.java
@@ -434,4 +434,15 @@
public static boolean isSystemApp(@NonNull AccessibilityServiceInfo info) {
return info.getResolveInfo().serviceInfo.applicationInfo.isSystemApp();
}
+
+ /**
+ * Bypasses the timeout restriction if volume key shortcut assigned.
+ *
+ * @param context the current context.
+ */
+ public static void skipVolumeShortcutDialogTimeoutRestriction(Context context) {
+ Settings.Secure.putInt(context.getContentResolver(),
+ Settings.Secure.SKIP_ACCESSIBILITY_SHORTCUT_DIALOG_TIMEOUT_RESTRICTION, /*
+ true */ 1);
+ }
}
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index e123a53..bd8ee66 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -725,6 +725,10 @@
mShortcutPreference.setChecked(shortcutAssigned);
mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
+ if (mHardwareTypeCheckBox.isChecked()) {
+ AccessibilityUtil.skipVolumeShortcutDialogTimeoutRestriction(getPrefContext());
+ }
+
// Show the quick setting tooltip if the shortcut assigned in the first time
if (shortcutAssigned) {
showQuickSettingsTooltipIfNeeded();
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index d2d6a33..bf47658 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -367,6 +367,10 @@
mShortcutPreference.setChecked(value != UserShortcutType.EMPTY);
mShortcutPreference.setSummary(
getShortcutTypeSummary(getPrefContext()));
+
+ if (mHardwareTypeCheckBox.isChecked()) {
+ AccessibilityUtil.skipVolumeShortcutDialogTimeoutRestriction(getPrefContext());
+ }
}
@Override
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
index 114f969..fea28d1 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
@@ -38,6 +38,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.CheckBox;
import android.widget.PopupWindow;
import androidx.annotation.XmlRes;
@@ -184,6 +185,28 @@
}
@Test
+ public void dialogCheckboxClicked_hardwareType_skipTimeoutRestriction() {
+ mContext.setTheme(R.style.Theme_AppCompat);
+ final ShortcutPreference shortcutPreference = new ShortcutPreference(mContext, /* attrs= */
+ null);
+ mFragment.mComponentName = PLACEHOLDER_COMPONENT_NAME;
+ mFragment.mShortcutPreference = shortcutPreference;
+ final AlertDialog dialog = AccessibilityDialogUtils.showEditShortcutDialog(
+ mContext, DialogType.EDIT_SHORTCUT_GENERIC, PLACEHOLDER_DIALOG_TITLE,
+ mFragment::callOnAlertDialogCheckboxClicked);
+ mFragment.setupEditShortcutDialog(dialog);
+
+ final View dialogHardwareView = dialog.findViewById(R.id.hardware_shortcut);
+ final CheckBox hardwareTypeCheckBox = dialogHardwareView.findViewById(R.id.checkbox);
+ hardwareTypeCheckBox.setChecked(true);
+ dialog.getButton(DialogInterface.BUTTON_POSITIVE).callOnClick();
+ final boolean skipTimeoutRestriction = Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.SKIP_ACCESSIBILITY_SHORTCUT_DIALOG_TIMEOUT_RESTRICTION, 0) != 0;
+
+ assertThat(skipTimeoutRestriction).isTrue();
+ }
+
+ @Test
public void setupEditShortcutDialog_shortcutPreferenceOff_checkboxIsEmptyValue() {
mContext.setTheme(R.style.Theme_AppCompat);
final AlertDialog dialog = AccessibilityDialogUtils.showEditShortcutDialog(