From f7ffa201f467efc263eb3d4ae68212591241d6bc Mon Sep 17 00:00:00 2001 From: Diya Bera Date: Thu, 8 Feb 2024 17:11:39 -0800 Subject: [PATCH 1/3] Use parent profile for device credential Flag: Flags.ENABLE_BIOMETRICS_TO_UNLOCK_PRIVATE_SPACE Bug: 320458435 Test: N/A Change-Id: I9ee46d53df5f0617da643f1cf51db811a5eec478 --- .../android/settings/password/BiometricFragment.java | 11 +++++++++-- .../password/ConfirmDeviceCredentialActivity.java | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java index 379ce80ad6d..90a1feba1f1 100644 --- a/src/com/android/settings/password/BiometricFragment.java +++ b/src/com/android/settings/password/BiometricFragment.java @@ -21,6 +21,7 @@ import android.hardware.biometrics.BiometricPrompt; import android.hardware.biometrics.BiometricPrompt.AuthenticationCallback; import android.hardware.biometrics.BiometricPrompt.AuthenticationResult; import android.hardware.biometrics.PromptInfo; +import android.multiuser.Flags; import android.os.Bundle; import android.os.CancellationSignal; @@ -140,8 +141,14 @@ public class BiometricFragment extends InstrumentedFragment { .setDisallowBiometricsIfPolicyExists( promptInfo.isDisallowBiometricsIfPolicyExists()) .setShowEmergencyCallButton(promptInfo.isShowEmergencyCallButton()) - .setReceiveSystemEvents(true) - .setAllowBackgroundAuthentication(true); + .setReceiveSystemEvents(true); + + if (Flags.enableBiometricsToUnlockPrivateSpace()) { + promptBuilder = promptBuilder.setAllowBackgroundAuthentication(true /* allow */, + promptInfo.shouldUseParentProfileForDeviceCredential()); + } else { + promptBuilder = promptBuilder.setAllowBackgroundAuthentication(true /* allow */); + } // Check if the default subtitle should be used if subtitle is null/empty if (promptInfo.isUseDefaultSubtitle()) { diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java index 4a760add79e..f2ebd1f6b3d 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java @@ -311,6 +311,7 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity { mForceVerifyPath = userProperties.isCredentialShareableWithParent(); if (android.multiuser.Flags.enableBiometricsToUnlockPrivateSpace() && isBiometricAllowed(effectiveUserId, mUserId)) { + promptInfo.setUseParentProfileForDeviceCredential(true); showBiometricPrompt(promptInfo, effectiveUserId); launchedBiometric = true; } else { From 9489a977540fd30b5addf12fab269dc1df1acf02 Mon Sep 17 00:00:00 2001 From: David Liu Date: Fri, 16 Feb 2024 19:08:02 +0000 Subject: [PATCH 2/3] Fix keyboard navigation issue, searchbar not able to be selected. - make search toolbar focusable - set next tab navigation element to homepage_container Bug: 324420544 Test: manual Change-Id: I991390e9d980092dfe11b15dcb81563ed3b0d4d1 --- res/layout/search_bar.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/res/layout/search_bar.xml b/res/layout/search_bar.xml index dfc9596d9fc..1e83e22156c 100644 --- a/res/layout/search_bar.xml +++ b/res/layout/search_bar.xml @@ -34,6 +34,9 @@ android:paddingStart="@dimen/search_bar_padding_start" android:paddingEnd="@dimen/search_bar_padding_end" android:background="@drawable/search_bar_selected_background" + android:focusable="true" + android:focusableInTouchMode="true" + android:nextFocusForward="@+id/homepage_container" android:contentInsetStartWithNavigation="@dimen/search_bar_content_inset" android:navigationIcon="@drawable/ic_homepage_search"> Date: Sat, 17 Feb 2024 00:10:56 +0000 Subject: [PATCH 3/3] Disable APP_ARCHIVING flag for specific test APP_ARCHIVING flag was introduced to control archiving feature in Settings separately from OS. The broken test was expecting archiving feature flag be disabled but it didn't take into account a newly introduced flag which was automatically rolled out in ag/26270549 Test: AppButtonsTest Bug: 325632047 Change-Id: I02a1f4e2e2bfa1b85f2d993c4127698c8a6195dc --- .../com/android/settings/spa/app/appinfo/AppButtonsTest.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppButtonsTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppButtonsTest.kt index c742bd7a3a8..69acee89a00 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppButtonsTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppButtonsTest.kt @@ -24,6 +24,7 @@ import android.content.pm.Flags import android.content.pm.PackageInfo import android.content.pm.PackageInstaller import android.content.pm.PackageManager +import android.platform.test.flag.junit.SetFlagsRule import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.assertIsEnabled import androidx.compose.ui.test.assertIsNotDisplayed @@ -34,6 +35,7 @@ import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.dx.mockito.inline.extended.ExtendedMockito import com.android.settings.R +import com.android.settings.flags.Flags as SettingsFlags import com.android.settingslib.applications.AppUtils import com.android.settingslib.spa.testutils.delay import kotlinx.coroutines.flow.MutableStateFlow @@ -54,6 +56,8 @@ class AppButtonsTest { @get:Rule val composeTestRule = createComposeRule() + @get:Rule val setFlagsRule: SetFlagsRule = SetFlagsRule() + private lateinit var mockSession: MockitoSession @Spy @@ -113,6 +117,7 @@ class AppButtonsTest { fun launchButton_displayed_archivingDisabled() { whenever(packageManager.getLaunchIntentForPackage(PACKAGE_NAME)).thenReturn(Intent()) featureFlags.setFlag(Flags.FLAG_ARCHIVING, false) + setFlagsRule.disableFlags(SettingsFlags.FLAG_APP_ARCHIVING) setContent() composeTestRule.onNodeWithText(context.getString(R.string.launch_instant_app))