Postpone getting Metrics Category until it is needed

Test: manual

Bug: 226105654
Change-Id: I9473ddfd72e38bff4f93b43d539c467b2e13e258
This commit is contained in:
Yuri Ufimtsev
2022-03-23 15:38:15 +00:00
parent b39ab3e1c4
commit af22553089
6 changed files with 32 additions and 35 deletions

View File

@@ -62,7 +62,8 @@ public final class LockScreenSafetySource {
final RestrictedLockUtils.EnforcedAdmin admin = RestrictedLockUtilsInternal final RestrictedLockUtils.EnforcedAdmin admin = RestrictedLockUtilsInternal
.checkIfPasswordQualityIsSet(context, userId); .checkIfPasswordQualityIsSet(context, userId);
final PendingIntent pendingIntent = createPendingIntent(context, final PendingIntent pendingIntent = createPendingIntent(context,
screenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent()); screenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent(
SettingsEnums.SAFETY_CENTER));
final IconAction gearMenuIconAction = createGearMenuIconAction(context, final IconAction gearMenuIconAction = createGearMenuIconAction(context,
screenLockPreferenceDetailsUtils); screenLockPreferenceDetailsUtils);
final boolean enabled = final boolean enabled =
@@ -100,8 +101,7 @@ public final class LockScreenSafetySource {
/** Notifies Safety Center of a change in lock screen settings. */ /** Notifies Safety Center of a change in lock screen settings. */
public static void onLockScreenChange(Context context) { public static void onLockScreenChange(Context context) {
setSafetySourceData( setSafetySourceData(
context, context, new ScreenLockPreferenceDetailsUtils(context),
new ScreenLockPreferenceDetailsUtils(context, SettingsEnums.SAFETY_CENTER),
new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build()); new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build());
// Also send refreshed safety center data for biometrics, since changing lockscreen settings // Also send refreshed safety center data for biometrics, since changing lockscreen settings
@@ -114,7 +114,8 @@ public final class LockScreenSafetySource {
return screenLockPreferenceDetailsUtils.shouldShowGearMenu() ? new IconAction( return screenLockPreferenceDetailsUtils.shouldShowGearMenu() ? new IconAction(
IconAction.ICON_TYPE_GEAR, IconAction.ICON_TYPE_GEAR,
createPendingIntent(context, createPendingIntent(context,
screenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent())) screenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent(
SettingsEnums.SAFETY_CENTER)))
: null; : null;
} }

View File

@@ -22,7 +22,6 @@ import static android.safetycenter.SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOUR
import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_DEVICE_REBOOTED; import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_DEVICE_REBOOTED;
import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED; import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -74,8 +73,7 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver {
SafetyEvent safetyEvent) { SafetyEvent safetyEvent) {
if (sourceIds.contains(LockScreenSafetySource.SAFETY_SOURCE_ID)) { if (sourceIds.contains(LockScreenSafetySource.SAFETY_SOURCE_ID)) {
LockScreenSafetySource.setSafetySourceData(context, LockScreenSafetySource.setSafetySourceData(context,
new ScreenLockPreferenceDetailsUtils(context, SettingsEnums.SAFETY_CENTER), new ScreenLockPreferenceDetailsUtils(context), safetyEvent);
safetyEvent);
} }
if (sourceIds.contains(BiometricsSafetySource.SAFETY_SOURCE_ID)) { if (sourceIds.contains(BiometricsSafetySource.SAFETY_SOURCE_ID)) {
@@ -85,8 +83,7 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver {
private static void refreshAllSafetySources(Context context, SafetyEvent safetyEvent) { private static void refreshAllSafetySources(Context context, SafetyEvent safetyEvent) {
LockScreenSafetySource.setSafetySourceData(context, LockScreenSafetySource.setSafetySourceData(context,
new ScreenLockPreferenceDetailsUtils(context, SettingsEnums.SAFETY_CENTER), new ScreenLockPreferenceDetailsUtils(context), safetyEvent);
safetyEvent);
BiometricsSafetySource.setSafetySourceData(context, safetyEvent); BiometricsSafetySource.setSafetySourceData(context, safetyEvent);
} }
} }

View File

@@ -62,8 +62,7 @@ public class ChangeScreenLockPreferenceController extends AbstractPreferenceCont
mHost = host; mHost = host;
mProfileChallengeUserId = Utils.getManagedProfileId(mUm, mUserId); mProfileChallengeUserId = Utils.getManagedProfileId(mUm, mUserId);
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
mScreenLockPreferenceDetailUtils = mScreenLockPreferenceDetailUtils = new ScreenLockPreferenceDetailsUtils(context);
new ScreenLockPreferenceDetailsUtils(context, host.getMetricsCategory());
} }
@Override @Override
@@ -106,7 +105,7 @@ public class ChangeScreenLockPreferenceController extends AbstractPreferenceCont
if (TextUtils.equals(p.getKey(), getPreferenceKey())) { if (TextUtils.equals(p.getKey(), getPreferenceKey())) {
mMetricsFeatureProvider.logClickedPreference(p, mMetricsFeatureProvider.logClickedPreference(p,
p.getExtras().getInt(DashboardFragment.CATEGORY)); p.getExtras().getInt(DashboardFragment.CATEGORY));
mScreenLockPreferenceDetailUtils.openScreenLockSettings(); mScreenLockPreferenceDetailUtils.openScreenLockSettings(mHost.getMetricsCategory());
} }
} }
@@ -115,7 +114,8 @@ public class ChangeScreenLockPreferenceController extends AbstractPreferenceCont
if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) { if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
return super.handlePreferenceTreeClick(preference); return super.handlePreferenceTreeClick(preference);
} }
return mScreenLockPreferenceDetailUtils.openChooseLockGenericFragment(); return mScreenLockPreferenceDetailUtils.openChooseLockGenericFragment(
mHost.getMetricsCategory());
} }
protected void updateSummary(Preference preference, int userId) { protected void updateSummary(Preference preference, int userId) {

View File

@@ -46,16 +46,14 @@ public class ScreenLockPreferenceDetailsUtils {
private final LockPatternUtils mLockPatternUtils; private final LockPatternUtils mLockPatternUtils;
private final int mProfileChallengeUserId; private final int mProfileChallengeUserId;
private final UserManager mUm; private final UserManager mUm;
private final int mSourceMetricsCategory;
public ScreenLockPreferenceDetailsUtils(Context context, int sourceMetricsCategory) { public ScreenLockPreferenceDetailsUtils(Context context) {
mContext = context; mContext = context;
mUm = context.getSystemService(UserManager.class); mUm = context.getSystemService(UserManager.class);
mLockPatternUtils = FeatureFactory.getFactory(context) mLockPatternUtils = FeatureFactory.getFactory(context)
.getSecurityFeatureProvider() .getSecurityFeatureProvider()
.getLockPatternUtils(context); .getLockPatternUtils(context);
mProfileChallengeUserId = Utils.getManagedProfileId(mUm, mUserId); mProfileChallengeUserId = Utils.getManagedProfileId(mUm, mUserId);
mSourceMetricsCategory = sourceMetricsCategory;
} }
/** /**
@@ -100,17 +98,17 @@ public class ScreenLockPreferenceDetailsUtils {
/** /**
* Launches the {@link ScreenLockSettings}. * Launches the {@link ScreenLockSettings}.
*/ */
public void openScreenLockSettings() { public void openScreenLockSettings(int sourceMetricsCategory) {
mContext.startActivity(getLaunchScreenLockSettingsIntent()); mContext.startActivity(getLaunchScreenLockSettingsIntent(sourceMetricsCategory));
} }
/** /**
* Returns {@link Intent} to launch the {@link ScreenLockSettings}. * Returns {@link Intent} to launch the {@link ScreenLockSettings}.
*/ */
public Intent getLaunchScreenLockSettingsIntent() { public Intent getLaunchScreenLockSettingsIntent(int sourceMetricsCategory) {
return new SubSettingLauncher(mContext) return new SubSettingLauncher(mContext)
.setDestination(ScreenLockSettings.class.getName()) .setDestination(ScreenLockSettings.class.getName())
.setSourceMetricsCategory(mSourceMetricsCategory) .setSourceMetricsCategory(sourceMetricsCategory)
.toIntent(); .toIntent();
} }
@@ -120,13 +118,13 @@ public class ScreenLockPreferenceDetailsUtils {
* *
* @return true if the {@link ChooseLockGenericFragment} is launching. * @return true if the {@link ChooseLockGenericFragment} is launching.
*/ */
public boolean openChooseLockGenericFragment() { public boolean openChooseLockGenericFragment(int sourceMetricsCategory) {
final Intent quietModeDialogIntent = getQuietModeDialogIntent(); final Intent quietModeDialogIntent = getQuietModeDialogIntent();
if (quietModeDialogIntent != null) { if (quietModeDialogIntent != null) {
mContext.startActivity(quietModeDialogIntent); mContext.startActivity(quietModeDialogIntent);
return false; return false;
} }
mContext.startActivity(getChooseLockGenericFragmentIntent()); mContext.startActivity(getChooseLockGenericFragmentIntent(sourceMetricsCategory));
return true; return true;
} }
@@ -137,10 +135,10 @@ public class ScreenLockPreferenceDetailsUtils {
* to disable the Quiet Mode, otherwise returns {@link Intent} to launch * to disable the Quiet Mode, otherwise returns {@link Intent} to launch
* {@link ChooseLockGenericFragment}. * {@link ChooseLockGenericFragment}.
*/ */
public Intent getLaunchChooseLockGenericFragmentIntent() { public Intent getLaunchChooseLockGenericFragmentIntent(int sourceMetricsCategory) {
final Intent quietModeDialogIntent = getQuietModeDialogIntent(); final Intent quietModeDialogIntent = getQuietModeDialogIntent();
return quietModeDialogIntent != null ? quietModeDialogIntent return quietModeDialogIntent != null ? quietModeDialogIntent
: getChooseLockGenericFragmentIntent(); : getChooseLockGenericFragmentIntent(sourceMetricsCategory);
} }
private Intent getQuietModeDialogIntent() { private Intent getQuietModeDialogIntent() {
@@ -159,10 +157,10 @@ public class ScreenLockPreferenceDetailsUtils {
return null; return null;
} }
private Intent getChooseLockGenericFragmentIntent() { private Intent getChooseLockGenericFragmentIntent(int sourceMetricsCategory) {
return new SubSettingLauncher(mContext) return new SubSettingLauncher(mContext)
.setDestination(ChooseLockGenericFragment.class.getName()) .setDestination(ChooseLockGenericFragment.class.getName())
.setSourceMetricsCategory(mSourceMetricsCategory) .setSourceMetricsCategory(sourceMetricsCategory)
.setTransitionType(SettingsTransitionHelper.TransitionType.TRANSITION_SLIDE) .setTransitionType(SettingsTransitionHelper.TransitionType.TRANSITION_SLIDE)
.toIntent(); .toIntent();
} }

View File

@@ -384,7 +384,7 @@ public class LockScreenSafetySourceTest {
whenScreenLockIsEnabled(); whenScreenLockIsEnabled();
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
final Intent launchScreenLockSettings = new Intent(FAKE_ACTION_SCREEN_LOCK_SETTINGS); final Intent launchScreenLockSettings = new Intent(FAKE_ACTION_SCREEN_LOCK_SETTINGS);
when(mScreenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent()) when(mScreenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent(anyInt()))
.thenReturn(launchScreenLockSettings); .thenReturn(launchScreenLockSettings);
when(mScreenLockPreferenceDetailsUtils.shouldShowGearMenu()).thenReturn(true); when(mScreenLockPreferenceDetailsUtils.shouldShowGearMenu()).thenReturn(true);
@@ -450,7 +450,7 @@ public class LockScreenSafetySourceTest {
Intent launchChooseLockGenericFragment = new Intent( Intent launchChooseLockGenericFragment = new Intent(
FAKE_ACTION_CHOOSE_LOCK_GENERIC_FRAGMENT); FAKE_ACTION_CHOOSE_LOCK_GENERIC_FRAGMENT);
when(mScreenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent()) when(mScreenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent(anyInt()))
.thenReturn(launchChooseLockGenericFragment); .thenReturn(launchChooseLockGenericFragment);
} }
} }

View File

@@ -91,8 +91,7 @@ public class ScreenLockPreferenceDetailsUtilsTest {
when(featureFactory.securityFeatureProvider.getLockPatternUtils(mContext)) when(featureFactory.securityFeatureProvider.getLockPatternUtils(mContext))
.thenReturn(mLockPatternUtils); .thenReturn(mLockPatternUtils);
mScreenLockPreferenceDetailsUtils = mScreenLockPreferenceDetailsUtils = new ScreenLockPreferenceDetailsUtils(mContext);
new ScreenLockPreferenceDetailsUtils(mContext, SOURCE_METRICS_CATEGORY);
} }
@Test @Test
@@ -283,14 +282,15 @@ public class ScreenLockPreferenceDetailsUtilsTest {
@Test @Test
public void openScreenLockSettings_shouldSendIntent() { public void openScreenLockSettings_shouldSendIntent() {
mScreenLockPreferenceDetailsUtils.openScreenLockSettings(); mScreenLockPreferenceDetailsUtils.openScreenLockSettings(SOURCE_METRICS_CATEGORY);
assertFragmentLaunchRequested(ScreenLockSettings.class.getName()); assertFragmentLaunchRequested(ScreenLockSettings.class.getName());
} }
@Test @Test
public void getLaunchScreenLockSettingsIntent_returnsIntent() { public void getLaunchScreenLockSettingsIntent_returnsIntent() {
final Intent intent = mScreenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent(); final Intent intent = mScreenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent(
SOURCE_METRICS_CATEGORY);
assertFragmentLaunchIntent(intent, ScreenLockSettings.class.getName()); assertFragmentLaunchIntent(intent, ScreenLockSettings.class.getName());
} }
@@ -299,7 +299,8 @@ public class ScreenLockPreferenceDetailsUtilsTest {
public void openChooseLockGenericFragment_noQuietMode_shouldSendIntent_shouldReturnTrue() { public void openChooseLockGenericFragment_noQuietMode_shouldSendIntent_shouldReturnTrue() {
when(mUserManager.isQuietModeEnabled(any())).thenReturn(false); when(mUserManager.isQuietModeEnabled(any())).thenReturn(false);
assertThat(mScreenLockPreferenceDetailsUtils.openChooseLockGenericFragment()).isTrue(); assertThat(mScreenLockPreferenceDetailsUtils
.openChooseLockGenericFragment(SOURCE_METRICS_CATEGORY)).isTrue();
assertFragmentLaunchRequested(ChooseLockGeneric.ChooseLockGenericFragment.class.getName()); assertFragmentLaunchRequested(ChooseLockGeneric.ChooseLockGenericFragment.class.getName());
} }
@@ -307,8 +308,8 @@ public class ScreenLockPreferenceDetailsUtilsTest {
public void getLaunchChooseLockGenericFragmentIntent_noQuietMode_returnsIntent() { public void getLaunchChooseLockGenericFragmentIntent_noQuietMode_returnsIntent() {
when(mUserManager.isQuietModeEnabled(any())).thenReturn(false); when(mUserManager.isQuietModeEnabled(any())).thenReturn(false);
final Intent intent = final Intent intent = mScreenLockPreferenceDetailsUtils
mScreenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent(); .getLaunchChooseLockGenericFragmentIntent(SOURCE_METRICS_CATEGORY);
assertFragmentLaunchIntent(intent, assertFragmentLaunchIntent(intent,
ChooseLockGeneric.ChooseLockGenericFragment.class.getName()); ChooseLockGeneric.ChooseLockGenericFragment.class.getName());