Merge "DO NOT MERGE - Use TimingsTraceLog on SystemServiceManager and VoiceInteractionManagerService." into qt-qpr1-dev

This commit is contained in:
TreeHugger Robot
2020-02-11 22:39:07 +00:00
committed by Android (Google) Code Review
2 changed files with 50 additions and 16 deletions

View File

@@ -22,6 +22,7 @@ import android.os.Environment;
import android.os.SystemClock; import android.os.SystemClock;
import android.os.Trace; import android.os.Trace;
import android.util.Slog; import android.util.Slog;
import android.util.TimingsTraceLog;
import java.io.File; import java.io.File;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
@@ -178,12 +179,13 @@ public class SystemServiceManager {
} }
public void startUser(final int userHandle) { public void startUser(final int userHandle) {
final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
t.traceBegin("ssm.startUser-" + userHandle);
Slog.i(TAG, "Calling onStartUser u" + userHandle); Slog.i(TAG, "Calling onStartUser u" + userHandle);
final int serviceLen = mServices.size(); final int serviceLen = mServices.size();
for (int i = 0; i < serviceLen; i++) { for (int i = 0; i < serviceLen; i++) {
final SystemService service = mServices.get(i); final SystemService service = mServices.get(i);
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onStartUser " t.traceBegin("onStartUser-" + userHandle + " " + service.getClass().getName());
+ service.getClass().getName());
long time = SystemClock.elapsedRealtime(); long time = SystemClock.elapsedRealtime();
try { try {
service.onStartUser(userHandle); service.onStartUser(userHandle);
@@ -192,17 +194,19 @@ public class SystemServiceManager {
+ " to service " + service.getClass().getName(), ex); + " to service " + service.getClass().getName(), ex);
} }
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStartUser "); warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStartUser ");
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); t.traceEnd();
} }
t.traceEnd();
} }
public void unlockUser(final int userHandle) { public void unlockUser(final int userHandle) {
final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
t.traceBegin("ssm.unlockUser-" + userHandle);
Slog.i(TAG, "Calling onUnlockUser u" + userHandle); Slog.i(TAG, "Calling onUnlockUser u" + userHandle);
final int serviceLen = mServices.size(); final int serviceLen = mServices.size();
for (int i = 0; i < serviceLen; i++) { for (int i = 0; i < serviceLen; i++) {
final SystemService service = mServices.get(i); final SystemService service = mServices.get(i);
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onUnlockUser " t.traceBegin("onUnlockUser-" + userHandle + " " + service.getClass().getName());
+ service.getClass().getName());
long time = SystemClock.elapsedRealtime(); long time = SystemClock.elapsedRealtime();
try { try {
service.onUnlockUser(userHandle); service.onUnlockUser(userHandle);
@@ -211,17 +215,19 @@ public class SystemServiceManager {
+ " to service " + service.getClass().getName(), ex); + " to service " + service.getClass().getName(), ex);
} }
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onUnlockUser "); warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onUnlockUser ");
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); t.traceEnd();
} }
t.traceEnd();
} }
public void switchUser(final int userHandle) { public void switchUser(final int userHandle) {
final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
t.traceBegin("ssm.switchUser-" + userHandle);
Slog.i(TAG, "Calling switchUser u" + userHandle); Slog.i(TAG, "Calling switchUser u" + userHandle);
final int serviceLen = mServices.size(); final int serviceLen = mServices.size();
for (int i = 0; i < serviceLen; i++) { for (int i = 0; i < serviceLen; i++) {
final SystemService service = mServices.get(i); final SystemService service = mServices.get(i);
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onSwitchUser " t.traceBegin("onSwitchUser-" + userHandle + " " + service.getClass().getName());
+ service.getClass().getName());
long time = SystemClock.elapsedRealtime(); long time = SystemClock.elapsedRealtime();
try { try {
service.onSwitchUser(userHandle); service.onSwitchUser(userHandle);
@@ -230,17 +236,19 @@ public class SystemServiceManager {
+ " to service " + service.getClass().getName(), ex); + " to service " + service.getClass().getName(), ex);
} }
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onSwitchUser"); warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onSwitchUser");
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); t.traceEnd();
} }
t.traceEnd();
} }
public void stopUser(final int userHandle) { public void stopUser(final int userHandle) {
final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
t.traceBegin("ssm.stopUser-" + userHandle);
Slog.i(TAG, "Calling onStopUser u" + userHandle); Slog.i(TAG, "Calling onStopUser u" + userHandle);
final int serviceLen = mServices.size(); final int serviceLen = mServices.size();
for (int i = 0; i < serviceLen; i++) { for (int i = 0; i < serviceLen; i++) {
final SystemService service = mServices.get(i); final SystemService service = mServices.get(i);
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onStopUser " t.traceBegin("onStopUser-" + userHandle + " " + service.getClass().getName());
+ service.getClass().getName());
long time = SystemClock.elapsedRealtime(); long time = SystemClock.elapsedRealtime();
try { try {
service.onStopUser(userHandle); service.onStopUser(userHandle);
@@ -249,17 +257,19 @@ public class SystemServiceManager {
+ " to service " + service.getClass().getName(), ex); + " to service " + service.getClass().getName(), ex);
} }
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStopUser"); warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStopUser");
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); t.traceEnd();
} }
t.traceEnd();
} }
public void cleanupUser(final int userHandle) { public void cleanupUser(final int userHandle) {
final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
t.traceBegin("ssm.cleanupUser-" + userHandle);
Slog.i(TAG, "Calling onCleanupUser u" + userHandle); Slog.i(TAG, "Calling onCleanupUser u" + userHandle);
final int serviceLen = mServices.size(); final int serviceLen = mServices.size();
for (int i = 0; i < serviceLen; i++) { for (int i = 0; i < serviceLen; i++) {
final SystemService service = mServices.get(i); final SystemService service = mServices.get(i);
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onCleanupUser " t.traceBegin("onCleanupUser-" + userHandle + " " + service.getClass().getName());
+ service.getClass().getName());
long time = SystemClock.elapsedRealtime(); long time = SystemClock.elapsedRealtime();
try { try {
service.onCleanupUser(userHandle); service.onCleanupUser(userHandle);
@@ -268,8 +278,9 @@ public class SystemServiceManager {
+ " to service " + service.getClass().getName(), ex); + " to service " + service.getClass().getName(), ex);
} }
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onCleanupUser"); warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onCleanupUser");
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); t.traceEnd();
} }
t.traceEnd();
} }
/** Sets the safe mode flag for services to query. */ /** Sets the safe mode flag for services to query. */

View File

@@ -20,6 +20,7 @@ import android.Manifest;
import android.annotation.CallbackExecutor; import android.annotation.CallbackExecutor;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.ActivityManagerInternal; import android.app.ActivityManagerInternal;
import android.app.AppGlobals; import android.app.AppGlobals;
@@ -51,6 +52,7 @@ import android.os.Parcel;
import android.os.RemoteCallback; import android.os.RemoteCallback;
import android.os.RemoteCallbackList; import android.os.RemoteCallbackList;
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.Settings; import android.provider.Settings;
@@ -65,6 +67,7 @@ import android.text.TextUtils;
import android.util.ArraySet; import android.util.ArraySet;
import android.util.Log; import android.util.Log;
import android.util.Slog; import android.util.Slog;
import android.util.TimingsTraceLog;
import com.android.internal.app.IVoiceActionCheckCallback; import com.android.internal.app.IVoiceActionCheckCallback;
import com.android.internal.app.IVoiceInteractionManagerService; import com.android.internal.app.IVoiceInteractionManagerService;
@@ -269,7 +272,17 @@ public class VoiceInteractionManagerService extends SystemService {
} }
} }
public void initForUser(int userHandle) { public void initForUser(@UserIdInt int userHandle) {
final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
t.traceBegin("initForUser(" + userHandle + ")");
try {
initForUserNoTracing(userHandle);
} finally {
t.traceEnd();
}
}
private void initForUserNoTracing(@UserIdInt int userHandle) {
if (DEBUG) Slog.d(TAG, "**************** initForUser user=" + userHandle); if (DEBUG) Slog.d(TAG, "**************** initForUser user=" + userHandle);
String curInteractorStr = Settings.Secure.getStringForUser( String curInteractorStr = Settings.Secure.getStringForUser(
mContext.getContentResolver(), mContext.getContentResolver(),
@@ -426,6 +439,16 @@ public class VoiceInteractionManagerService extends SystemService {
} }
void switchImplementationIfNeededLocked(boolean force) { void switchImplementationIfNeededLocked(boolean force) {
final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
t.traceBegin("switchImplementation(" + mCurUser + ")");
try {
switchImplementationIfNeededNoTracingLocked(force);
} finally {
t.traceEnd();
}
}
void switchImplementationIfNeededNoTracingLocked(boolean force) {
if (!mSafeMode) { if (!mSafeMode) {
String curService = Settings.Secure.getStringForUser( String curService = Settings.Secure.getStringForUser(
mResolver, Settings.Secure.VOICE_INTERACTION_SERVICE, mCurUser); mResolver, Settings.Secure.VOICE_INTERACTION_SERVICE, mCurUser);