Merge "Fixed remote validation shows SetupRedaction" into main

This commit is contained in:
Treehugger Robot
2024-08-07 17:54:27 +00:00
committed by Android (Google) Code Review
4 changed files with 65 additions and 0 deletions

View File

@@ -64,6 +64,7 @@ import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockscreenCredential;
import com.android.internal.widget.TextViewInputDisabler;
import com.android.settings.R;
import com.android.settings.SetupRedactionInterstitial;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.animation.DisappearAnimationUtils;
@@ -723,6 +724,7 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
Intent result = new Intent();
if (mRemoteValidation && containsGatekeeperPasswordHandle(resultData)) {
result.putExtra(EXTRA_KEY_GK_PW_HANDLE, getGatekeeperPasswordHandle(resultData));
SetupRedactionInterstitial.setEnabled(getContext(), true);
}
mCredentialCheckResultTracker.setResult(/* matched= */ true, result,
/* timeoutMs= */ 0, mEffectiveUserId);

View File

@@ -54,6 +54,7 @@ import com.android.internal.widget.LockPatternView;
import com.android.internal.widget.LockPatternView.Cell;
import com.android.internal.widget.LockscreenCredential;
import com.android.settings.R;
import com.android.settings.SetupRedactionInterstitial;
import com.android.settingslib.animation.AppearAnimationCreator;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.animation.DisappearAnimationUtils;
@@ -751,6 +752,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
Intent result = new Intent();
if (mRemoteValidation && containsGatekeeperPasswordHandle(resultData)) {
result.putExtra(EXTRA_KEY_GK_PW_HANDLE, getGatekeeperPasswordHandle(resultData));
SetupRedactionInterstitial.setEnabled(getContext(), true);
}
mCredentialCheckResultTracker.setResult(/* matched= */ true, result,
/* timeoutMs= */ 0, mEffectiveUserId);

View File

@@ -16,6 +16,8 @@
package com.android.settings.password;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
import static com.android.settings.password.ConfirmLockPassword.ConfirmLockPasswordFragment;
import static com.android.settings.password.TestUtils.GUESS_INVALID_RESULT;
import static com.android.settings.password.TestUtils.GUESS_VALID_RESULT;
@@ -42,6 +44,7 @@ import static org.mockito.Mockito.verifyNoInteractions;
import android.Manifest;
import android.app.KeyguardManager;
import android.app.admin.ManagedSubscriptionsPolicy;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
@@ -55,6 +58,7 @@ import androidx.test.core.app.ApplicationProvider;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
import com.android.settings.SetupRedactionInterstitial;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
import com.android.settings.testutils.shadow.ShadowUserManager;
@@ -305,6 +309,32 @@ public class ConfirmLockPasswordTest {
assertThat(mLockPatternUtils.isSecure(fragment.mEffectiveUserId)).isFalse();
}
@Test
public void onChosenLockSaveFinished_setsRedactionInterstitial() throws Exception {
// This test verifies that the RedactionInterstitial is available. This is the screen
// responsible for allowing the user to show sensitive lockscreen content. This
// also allows the Settings tile for RedactionInterstitial to appear in the "anything else"
// page during SUW.
final ConfirmDeviceCredentialBaseActivity activity =
buildConfirmDeviceCredentialBaseActivity(
ConfirmLockPassword.class,
createRemoteLockscreenValidationIntent(
KeyguardManager.PASSWORD, VALID_REMAINING_ATTEMPTS));
final ConfirmLockPasswordFragment fragment =
(ConfirmLockPasswordFragment) getConfirmDeviceCredentialBaseFragment(activity);
final Intent intent = new Intent();
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE, 1L);
fragment.onChosenLockSaveFinished(true, intent);
final ComponentName componentName =
new ComponentName(mContext, SetupRedactionInterstitial.class);
final int isEnabled = mContext.getPackageManager()
.getComponentEnabledSetting(componentName);
assertThat(isEnabled).isEqualTo(COMPONENT_ENABLED_STATE_ENABLED);
}
private void triggerHandleNext(
ConfirmLockPasswordFragment fragment, ImeAwareEditText passwordEntry) {
passwordEntry.setText("Password");

View File

@@ -16,6 +16,9 @@
package com.android.settings.password;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
import static com.android.settings.password.ConfirmLockPattern.ConfirmLockPatternFragment;
import static com.android.settings.password.TestUtils.GUESS_INVALID_RESULT;
import static com.android.settings.password.TestUtils.GUESS_VALID_RESULT;
import static com.android.settings.password.TestUtils.LOCKOUT_RESULT;
@@ -39,6 +42,7 @@ import static org.mockito.Mockito.verifyNoInteractions;
import android.Manifest;
import android.app.KeyguardManager;
import android.app.admin.ManagedSubscriptionsPolicy;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
@@ -51,6 +55,7 @@ import androidx.test.core.app.ApplicationProvider;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternView;
import com.android.settings.R;
import com.android.settings.SetupRedactionInterstitial;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
import com.android.settings.testutils.shadow.ShadowUserManager;
@@ -284,6 +289,32 @@ public class ConfirmLockPatternTest {
assertThat(mLockPatternUtils.isSecure(fragment.mEffectiveUserId)).isFalse();
}
@Test
public void onChosenLockSaveFinished_setsRedactionInterstitial() throws Exception {
// This test verifies that the RedactionInterstitial is available. This is the screen
// responsible for allowing the user to show sensitive lockscreen content. This
// also allows the Settings tile for RedactionInterstitial to appear in the "anything else"
// page during SUW.
final ConfirmDeviceCredentialBaseActivity activity =
buildConfirmDeviceCredentialBaseActivity(
ConfirmLockPattern.class,
createRemoteLockscreenValidationIntent(
KeyguardManager.PATTERN, VALID_REMAINING_ATTEMPTS));
final ConfirmLockPatternFragment fragment = (ConfirmLockPatternFragment)
getConfirmDeviceCredentialBaseFragment(activity);
final Intent intent = new Intent();
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE, 1L);
fragment.onChosenLockSaveFinished(true, intent);
final ComponentName componentName =
new ComponentName(mContext, SetupRedactionInterstitial.class);
final int isEnabled = mContext.getPackageManager()
.getComponentEnabledSetting(componentName);
assertThat(isEnabled).isEqualTo(COMPONENT_ENABLED_STATE_ENABLED);
}
private void triggerOnPatternDetected(LockPatternView lockPatternView) {
List<LockPatternView.Cell> pattern = List.of(LockPatternView.Cell.of(0, 0));
lockPatternView.setPattern(LockPatternView.DisplayMode.Correct, pattern);