From 3a0ebebac40fd3da7c7d689562c7b42701651416 Mon Sep 17 00:00:00 2001 From: Yasin Kilicdere Date: Thu, 6 Jan 2022 22:32:31 +0000 Subject: [PATCH] Add logging for settings entrypoint to add supervised user. Bug: 213442701 Test: croot && make RunSettingsRoboTests -j40 ROBOTEST_FILTER="com.android.settings.users.UserSettingsTest" Change-Id: Ie6110b0ef5c16c9f83e3d939f78f21f003e55e35 --- .../android/settings/users/UserSettings.java | 3 ++ .../settings/users/UserSettingsTest.java | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 767a328ec0b..255b85fe0bf 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -1251,7 +1251,10 @@ public class UserSettings extends SettingsPreferenceFragment } return true; } else if (pref == mAddSupervisedUser) { + mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_USER_SUPERVISED_ADD); + Trace.beginSection("UserSettings.addSupervisedUser"); onAddSupervisedUserClicked(); + Trace.endSection(); return true; } else if (pref == mAddGuest) { mAddGuest.setEnabled(false); // prevent multiple tap issue diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java index d8f3959c6d7..5c13e2f8de6 100644 --- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java +++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java @@ -27,6 +27,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.notNull; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -40,6 +41,8 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; @@ -122,6 +125,8 @@ public class UserSettingsTest { @Mock private UserManager mUserManager; @Mock + private PackageManager mPackageManager; + @Mock private MetricsFeatureProvider mMetricsFeatureProvider; private FragmentActivity mActivity; @@ -149,11 +154,13 @@ public class UserSettingsTest { ReflectionHelpers.setField(mFragment, "mMetricsFeatureProvider", mMetricsFeatureProvider); doReturn(mUserManager).when(mActivity).getSystemService(UserManager.class); + doReturn(mPackageManager).when(mActivity).getPackageManager(); doReturn(mActivity).when(mFragment).getActivity(); doReturn(mContext).when(mFragment).getContext(); doReturn(mMockPreferenceManager).when(mFragment).getPreferenceManager(); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); + doReturn(mPackageManager).when(mContext).getPackageManager(); mProvisionedBackupValue = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0); @@ -653,6 +660,29 @@ public class UserSettingsTest { verify(mMetricsFeatureProvider).action(any(), eq(SettingsEnums.ACTION_USER_GUEST_ADD)); } + @Test + public void onPreferenceClick_addSupervisedUserClicked_startIntentWithAction() { + final String intentPackage = "testPackage"; + final String intentAction = UserManager.ACTION_CREATE_SUPERVISED_USER; + final int metricsAction = SettingsEnums.ACTION_USER_SUPERVISED_ADD; + try { + setConfigSupervisedUserCreationPackage(intentPackage); + doReturn(new ResolveInfo()).when(mPackageManager).resolveActivity(any(), anyInt()); + doNothing().when(mFragment).startActivity(any()); + + mFragment.onPreferenceClick(mAddSupervisedUserPreference); + + final ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class); + verify(mFragment).startActivity(captor.capture()); + assertThat(captor.getValue().getPackage()).isEqualTo(intentPackage); + assertThat(captor.getValue().getAction()).isEqualTo(intentAction); + + verify(mMetricsFeatureProvider).action(any(), eq(metricsAction)); + } finally { + SettingsShadowResources.reset(); + } + } + @Test public void getRealUsersCount_onlyAdmin_shouldCount() { givenUsers(getAdminUser(true));