Merge "Change a11y shortcut default lockscreen behavior"
This commit is contained in:
@@ -143,6 +143,9 @@ public class AccessibilityShortcutController {
|
||||
mContext.getContentResolver().registerContentObserver(
|
||||
Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN),
|
||||
false, co, UserHandle.USER_ALL);
|
||||
mContext.getContentResolver().registerContentObserver(
|
||||
Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN),
|
||||
false, co, UserHandle.USER_ALL);
|
||||
setCurrentUser(mUserId);
|
||||
}
|
||||
|
||||
@@ -168,8 +171,12 @@ public class AccessibilityShortcutController {
|
||||
final ContentResolver cr = mContext.getContentResolver();
|
||||
final boolean enabled = Settings.Secure.getIntForUser(
|
||||
cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, 1, mUserId) == 1;
|
||||
// Enable the shortcut from the lockscreen by default if the dialog has been shown
|
||||
final int dialogAlreadyShown = Settings.Secure.getIntForUser(
|
||||
cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 0, mUserId);
|
||||
mEnabledOnLockScreen = Settings.Secure.getIntForUser(
|
||||
cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, 0, mUserId) == 1;
|
||||
cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN,
|
||||
dialogAlreadyShown, mUserId) == 1;
|
||||
mIsShortcutEnabled = enabled && haveValidService;
|
||||
}
|
||||
|
||||
|
||||
@@ -213,6 +213,20 @@ public class AccessibilityShortcutControllerTest {
|
||||
assertTrue(getController().isAccessibilityShortcutAvailable(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShortcutAvailable_onLockScreenAndLockScreenPreferenceUnset() {
|
||||
// When the user hasn't specified a lock screen preference, we allow from the lock screen
|
||||
// as long as the user has agreed to enable the shortcut
|
||||
configureValidShortcutService();
|
||||
configureShortcutEnabled(ENABLED_INCLUDING_LOCK_SCREEN);
|
||||
Settings.Secure.putString(
|
||||
mContentResolver, ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, null);
|
||||
Settings.Secure.putInt(mContentResolver, ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 0);
|
||||
assertFalse(getController().isAccessibilityShortcutAvailable(true));
|
||||
Settings.Secure.putInt(mContentResolver, ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 1);
|
||||
assertTrue(getController().isAccessibilityShortcutAvailable(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShortcutAvailable_whenServiceIdBecomesNull_shouldReturnFalse() {
|
||||
configureShortcutEnabled(ENABLED_EXCEPT_LOCK_SCREEN);
|
||||
|
||||
Reference in New Issue
Block a user