Multiuser perfetto metric: Settings tracepoints

Add tracepoints in Settings for user switches and creation, for the
primary purpose of performance metrics in trace_processor.

Bug: 192001071
Test: manual
Change-Id: I1ecaccdaba3b14c42a45fefeb9b5568f7c7d6bf6
This commit is contained in:
Adam Bookatz
2021-11-08 17:11:52 -08:00
parent e4e252aa95
commit c2efde5fb0
2 changed files with 12 additions and 0 deletions

View File

@@ -25,6 +25,7 @@ import android.content.Context;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.os.Bundle; import android.os.Bundle;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.Trace;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.util.Log; import android.util.Log;
@@ -344,6 +345,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
@VisibleForTesting @VisibleForTesting
void switchUser() { void switchUser() {
Trace.beginSection("UserDetailSettings.switchUser");
try { try {
if (mUserInfo.isGuest()) { if (mUserInfo.isGuest()) {
mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_SWITCH_TO_GUEST); mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_SWITCH_TO_GUEST);
@@ -352,6 +354,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
} catch (RemoteException re) { } catch (RemoteException re) {
Log.e(TAG, "Error while switching to other user."); Log.e(TAG, "Error while switching to other user.");
} finally { } finally {
Trace.endSection();
finishFragment(); finishFragment();
} }
} }

View File

@@ -40,6 +40,7 @@ import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.os.Process; import android.os.Process;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.Trace;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.ContactsContract; import android.provider.ContactsContract;
@@ -798,6 +799,7 @@ public class UserSettings extends SettingsPreferenceFragment
} }
private void addUserNow(final int userType) { private void addUserNow(final int userType) {
Trace.beginAsyncSection("UserSettings.addUserNow", 0);
synchronized (mUserLock) { synchronized (mUserLock) {
mAddingUser = true; mAddingUser = true;
mAddingUserName = userType == USER_TYPE_USER mAddingUserName = userType == USER_TYPE_USER
@@ -824,6 +826,11 @@ public class UserSettings extends SettingsPreferenceFragment
@Override @Override
public void run() { public void run() {
runAddUser();
Trace.endAsyncSection("UserSettings.addUserNow", 0);
}
private void runAddUser() {
UserInfo user; UserInfo user;
String username; String username;
@@ -1198,8 +1205,10 @@ public class UserSettings extends SettingsPreferenceFragment
} else if (pref == mAddGuest) { } else if (pref == mAddGuest) {
mAddGuest.setEnabled(false); // prevent multiple tap issue mAddGuest.setEnabled(false); // prevent multiple tap issue
mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_USER_GUEST_ADD); mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_USER_GUEST_ADD);
Trace.beginSection("UserSettings.addGuest");
UserInfo guest = mUserManager.createGuest( UserInfo guest = mUserManager.createGuest(
getContext(), getString(com.android.settingslib.R.string.user_guest)); getContext(), getString(com.android.settingslib.R.string.user_guest));
Trace.endSection();
if (guest == null) { if (guest == null) {
Toast.makeText(getContext(), Toast.makeText(getContext(),
com.android.settingslib.R.string.add_user_failed, com.android.settingslib.R.string.add_user_failed,