DO NOT MERGE - Use TimingsTraceLog on SystemServiceManager and VoiceInteractionManagerService.
(NOTE: this change is manually cherry-picked from master - master has the same trace calls, but they were introduced by larger changes) Bug: 145626101 Bug: 145027829 Test: manual verification Change-Id: I5cae10c9c7e5ed6f733c72659643708dfa826fc7
This commit is contained in:
@@ -22,6 +22,7 @@ import android.os.Environment;
|
||||
import android.os.SystemClock;
|
||||
import android.os.Trace;
|
||||
import android.util.Slog;
|
||||
import android.util.TimingsTraceLog;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Constructor;
|
||||
@@ -178,12 +179,13 @@ public class SystemServiceManager {
|
||||
}
|
||||
|
||||
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);
|
||||
final int serviceLen = mServices.size();
|
||||
for (int i = 0; i < serviceLen; i++) {
|
||||
final SystemService service = mServices.get(i);
|
||||
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onStartUser "
|
||||
+ service.getClass().getName());
|
||||
t.traceBegin("onStartUser-" + userHandle + " " + service.getClass().getName());
|
||||
long time = SystemClock.elapsedRealtime();
|
||||
try {
|
||||
service.onStartUser(userHandle);
|
||||
@@ -192,17 +194,19 @@ public class SystemServiceManager {
|
||||
+ " to service " + service.getClass().getName(), ex);
|
||||
}
|
||||
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStartUser ");
|
||||
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
|
||||
t.traceEnd();
|
||||
}
|
||||
t.traceEnd();
|
||||
}
|
||||
|
||||
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);
|
||||
final int serviceLen = mServices.size();
|
||||
for (int i = 0; i < serviceLen; i++) {
|
||||
final SystemService service = mServices.get(i);
|
||||
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onUnlockUser "
|
||||
+ service.getClass().getName());
|
||||
t.traceBegin("onUnlockUser-" + userHandle + " " + service.getClass().getName());
|
||||
long time = SystemClock.elapsedRealtime();
|
||||
try {
|
||||
service.onUnlockUser(userHandle);
|
||||
@@ -211,17 +215,19 @@ public class SystemServiceManager {
|
||||
+ " to service " + service.getClass().getName(), ex);
|
||||
}
|
||||
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onUnlockUser ");
|
||||
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
|
||||
t.traceEnd();
|
||||
}
|
||||
t.traceEnd();
|
||||
}
|
||||
|
||||
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);
|
||||
final int serviceLen = mServices.size();
|
||||
for (int i = 0; i < serviceLen; i++) {
|
||||
final SystemService service = mServices.get(i);
|
||||
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onSwitchUser "
|
||||
+ service.getClass().getName());
|
||||
t.traceBegin("onSwitchUser-" + userHandle + " " + service.getClass().getName());
|
||||
long time = SystemClock.elapsedRealtime();
|
||||
try {
|
||||
service.onSwitchUser(userHandle);
|
||||
@@ -230,17 +236,19 @@ public class SystemServiceManager {
|
||||
+ " to service " + service.getClass().getName(), ex);
|
||||
}
|
||||
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onSwitchUser");
|
||||
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
|
||||
t.traceEnd();
|
||||
}
|
||||
t.traceEnd();
|
||||
}
|
||||
|
||||
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);
|
||||
final int serviceLen = mServices.size();
|
||||
for (int i = 0; i < serviceLen; i++) {
|
||||
final SystemService service = mServices.get(i);
|
||||
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onStopUser "
|
||||
+ service.getClass().getName());
|
||||
t.traceBegin("onStopUser-" + userHandle + " " + service.getClass().getName());
|
||||
long time = SystemClock.elapsedRealtime();
|
||||
try {
|
||||
service.onStopUser(userHandle);
|
||||
@@ -249,17 +257,19 @@ public class SystemServiceManager {
|
||||
+ " to service " + service.getClass().getName(), ex);
|
||||
}
|
||||
warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStopUser");
|
||||
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
|
||||
t.traceEnd();
|
||||
}
|
||||
t.traceEnd();
|
||||
}
|
||||
|
||||
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);
|
||||
final int serviceLen = mServices.size();
|
||||
for (int i = 0; i < serviceLen; i++) {
|
||||
final SystemService service = mServices.get(i);
|
||||
Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onCleanupUser "
|
||||
+ service.getClass().getName());
|
||||
t.traceBegin("onCleanupUser-" + userHandle + " " + service.getClass().getName());
|
||||
long time = SystemClock.elapsedRealtime();
|
||||
try {
|
||||
service.onCleanupUser(userHandle);
|
||||
@@ -268,8 +278,9 @@ public class SystemServiceManager {
|
||||
+ " to service " + service.getClass().getName(), ex);
|
||||
}
|
||||
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. */
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.Manifest;
|
||||
import android.annotation.CallbackExecutor;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.UserIdInt;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityManagerInternal;
|
||||
import android.app.AppGlobals;
|
||||
@@ -51,6 +52,7 @@ import android.os.Parcel;
|
||||
import android.os.RemoteCallback;
|
||||
import android.os.RemoteCallbackList;
|
||||
import android.os.RemoteException;
|
||||
import android.os.Trace;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
@@ -65,6 +67,7 @@ import android.text.TextUtils;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
import android.util.Slog;
|
||||
import android.util.TimingsTraceLog;
|
||||
|
||||
import com.android.internal.app.IVoiceActionCheckCallback;
|
||||
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);
|
||||
String curInteractorStr = Settings.Secure.getStringForUser(
|
||||
mContext.getContentResolver(),
|
||||
@@ -426,6 +439,16 @@ public class VoiceInteractionManagerService extends SystemService {
|
||||
}
|
||||
|
||||
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) {
|
||||
String curService = Settings.Secure.getStringForUser(
|
||||
mResolver, Settings.Secure.VOICE_INTERACTION_SERVICE, mCurUser);
|
||||
|
||||
Reference in New Issue
Block a user