Merge "Change a11y shortcut default lockscreen behavior"

This commit is contained in:
Phil Weaver
2018-03-03 03:35:34 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 1 deletions

View File

@@ -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;
}

View File

@@ -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);