summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-08-20 05:50:27 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-08-20 05:50:27 +0000
commit47fc7357b5608f68f1d06c5462af9f652f0551fc (patch)
tree1600731733aa54255d0e45b850d27bd88ed03968
parentc1da99b4279435fa0a37cddac7e1ae9960a41627 (diff)
parent3e99d40d9681a1cf07a76b0218dc58f5aa7b9b71 (diff)
Merge "Refactor SystemServiceManager.xxxUser() methods."
-rw-r--r--services/core/java/com/android/server/SystemServiceManager.java114
1 files changed, 26 insertions, 88 deletions
diff --git a/services/core/java/com/android/server/SystemServiceManager.java b/services/core/java/com/android/server/SystemServiceManager.java
index ebe23f61cb2a..b085946899bd 100644
--- a/services/core/java/com/android/server/SystemServiceManager.java
+++ b/services/core/java/com/android/server/SystemServiceManager.java
@@ -212,129 +212,67 @@ public class SystemServiceManager {
* Starts the given user.
*/
public void startUser(final @NonNull TimingsTraceAndSlog t, final @UserIdInt int userHandle) {
- t.traceBegin("ssm.startUser-" + userHandle);
- Slog.i(TAG, "Calling onStartUser u" + userHandle);
- final UserInfo userInfo = getUserInfo(userHandle);
- final int serviceLen = mServices.size();
- for (int i = 0; i < serviceLen; i++) {
- final SystemService service = mServices.get(i);
- final String serviceName = service.getClass().getName();
- t.traceBegin("onStartUser-" + userHandle + " " + serviceName);
- long time = SystemClock.elapsedRealtime();
- try {
- service.onStartUser(userInfo);
- } catch (Exception ex) {
- Slog.wtf(TAG, "Failure reporting start of user " + userHandle
- + " to service " + service.getClass().getName(), ex);
- }
- warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStartUser ");
- t.traceEnd();
- }
- t.traceEnd();
+ onUser(t, "Start", userHandle, (s, u) -> s.onStartUser(u));
}
/**
* Unlocks the given user.
*/
public void unlockUser(final @UserIdInt int userHandle) {
- final TimingsTraceAndSlog t = TimingsTraceAndSlog.newAsyncLog();
- t.traceBegin("ssm.unlockUser-" + userHandle);
- Slog.i(TAG, "Calling onUnlockUser u" + userHandle);
- final UserInfo userInfo = getUserInfo(userHandle);
- final int serviceLen = mServices.size();
- for (int i = 0; i < serviceLen; i++) {
- final SystemService service = mServices.get(i);
- final String serviceName = service.getClass().getName();
- t.traceBegin("onUnlockUser-" + userHandle + " " + serviceName);
- long time = SystemClock.elapsedRealtime();
- try {
- service.onUnlockUser(userInfo);
- } catch (Exception ex) {
- Slog.wtf(TAG, "Failure reporting unlock of user " + userHandle
- + " to service " + serviceName, ex);
- }
- warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onUnlockUser ");
- t.traceEnd();
- }
- t.traceEnd();
+ onUser("Unlock", userHandle, (s, u) -> s.onUnlockUser(u));
}
/**
* Switches to the given user.
*/
public void switchUser(final @UserIdInt int userHandle) {
- final TimingsTraceAndSlog t = TimingsTraceAndSlog.newAsyncLog();
- t.traceBegin("ssm.switchUser-" + userHandle);
- Slog.i(TAG, "Calling switchUser u" + userHandle);
- final UserInfo userInfo = getUserInfo(userHandle);
- final int serviceLen = mServices.size();
- for (int i = 0; i < serviceLen; i++) {
- final SystemService service = mServices.get(i);
- final String serviceName = service.getClass().getName();
- t.traceBegin("onSwitchUser-" + userHandle + " " + serviceName);
- long time = SystemClock.elapsedRealtime();
- try {
- service.onSwitchUser(userInfo);
- } catch (Exception ex) {
- Slog.wtf(TAG, "Failure reporting switch of user " + userHandle
- + " to service " + serviceName, ex);
- }
- warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onSwitchUser");
- t.traceEnd();
- }
- t.traceEnd();
+ onUser("Switch", userHandle, (s, u) -> s.onSwitchUser(u));
}
/**
* Stops the given user.
*/
public void stopUser(final @UserIdInt int userHandle) {
- final TimingsTraceAndSlog t = TimingsTraceAndSlog.newAsyncLog();
- t.traceBegin("ssm.stopUser-" + userHandle);
- Slog.i(TAG, "Calling onStopUser u" + userHandle);
- final UserInfo userInfo = getUserInfo(userHandle);
- final int serviceLen = mServices.size();
- for (int i = 0; i < serviceLen; i++) {
- final SystemService service = mServices.get(i);
- final String serviceName = service.getClass().getName();
- t.traceBegin("onStopUser-" + userHandle + " " + serviceName);
- long time = SystemClock.elapsedRealtime();
- try {
- service.onStopUser(userInfo);
- } catch (Exception ex) {
- Slog.wtf(TAG, "Failure reporting stop of user " + userHandle
- + " to service " + serviceName, ex);
- }
- warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStopUser");
- t.traceEnd();
- }
- t.traceEnd();
+ onUser("Stop", userHandle, (s, u) -> s.onStopUser(u));
}
/**
* Cleans up the given user.
*/
public void cleanupUser(final @UserIdInt int userHandle) {
- final TimingsTraceAndSlog t = TimingsTraceAndSlog.newAsyncLog();
- t.traceBegin("ssm.cleanupUser-" + userHandle);
- Slog.i(TAG, "Calling onCleanupUser u" + userHandle);
+ onUser("Cleanup", userHandle, (s, u) -> s.onCleanupUser(u));
+ }
+
+ private interface ServiceVisitor {
+ void visit(@NonNull SystemService service, @NonNull UserInfo userInfo);
+ }
+
+ private void onUser(@NonNull String onWhat, @UserIdInt int userHandle,
+ @NonNull ServiceVisitor visitor) {
+ onUser(TimingsTraceAndSlog.newAsyncLog(), onWhat, userHandle, visitor);
+ }
+
+ private void onUser(@NonNull TimingsTraceAndSlog t, @NonNull String onWhat,
+ @UserIdInt int userHandle, @NonNull ServiceVisitor visitor) {
+ t.traceBegin("ssm." + onWhat + "User-" + userHandle);
+ Slog.i(TAG, "Calling on" + onWhat + "User u" + userHandle);
final UserInfo userInfo = getUserInfo(userHandle);
final int serviceLen = mServices.size();
for (int i = 0; i < serviceLen; i++) {
final SystemService service = mServices.get(i);
final String serviceName = service.getClass().getName();
- t.traceBegin("onCleanupUser-" + userHandle + " " + serviceName);
+ t.traceBegin("ssm.on" + onWhat + "User-" + userHandle + " " + serviceName);
long time = SystemClock.elapsedRealtime();
try {
- service.onCleanupUser(userInfo);
+ visitor.visit(service, userInfo);
} catch (Exception ex) {
- Slog.wtf(TAG, "Failure reporting cleanup of user " + userHandle
+ Slog.wtf(TAG, "Failure reporting " + onWhat + " of user " + userHandle
+ " to service " + serviceName, ex);
}
- warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onCleanupUser");
- t.traceEnd();
+ warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "on" + onWhat + "User ");
+ t.traceEnd(); // what on service
}
- t.traceEnd();
+ t.traceEnd(); // main entry
}
/** Sets the safe mode flag for services to query. */