summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nicolò Mazzucato <nicomazz@google.com> 2023-11-20 21:50:01 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-11-20 21:50:01 +0000
commitc914beed5fe5055d4aea2a227b064c45fdbd96ce (patch)
tree8bdf3283af4f0404c8998fa65022f3a929468702
parentbcec31dd765c0e5e7d61513a528df3389f0c5ad6 (diff)
parent6ae88d0efde2970ce3599786dc952d52f16614e4 (diff)
Merge "Log DeviceStateManager callbacks in client processes" into main
-rw-r--r--core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java26
-rw-r--r--services/core/java/com/android/server/devicestate/DeviceStateManagerService.java10
2 files changed, 34 insertions, 2 deletions
diff --git a/core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java b/core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java
index 7756b9ca7e5a..c3791888b44f 100644
--- a/core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java
+++ b/core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java
@@ -22,9 +22,11 @@ import android.annotation.RequiresPermission;
import android.content.Context;
import android.hardware.devicestate.DeviceStateManager.DeviceStateCallback;
import android.os.Binder;
+import android.os.Build;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.Trace;
import android.util.ArrayMap;
import com.android.internal.annotations.GuardedBy;
@@ -45,6 +47,8 @@ import java.util.concurrent.Executor;
@VisibleForTesting(visibility = Visibility.PACKAGE)
public final class DeviceStateManagerGlobal {
private static DeviceStateManagerGlobal sInstance;
+ private static final String TAG = "DeviceStateManagerGlobal";
+ private static final boolean DEBUG = Build.IS_DEBUGGABLE;
/**
* Returns an instance of {@link DeviceStateManagerGlobal}. May return {@code null} if a
@@ -400,11 +404,29 @@ public final class DeviceStateManagerGlobal {
}
void notifyBaseStateChanged(int newBaseState) {
- mExecutor.execute(() -> mDeviceStateCallback.onBaseStateChanged(newBaseState));
+ execute("notifyBaseStateChanged",
+ () -> mDeviceStateCallback.onBaseStateChanged(newBaseState));
}
void notifyStateChanged(int newDeviceState) {
- mExecutor.execute(() -> mDeviceStateCallback.onStateChanged(newDeviceState));
+ execute("notifyStateChanged",
+ () -> mDeviceStateCallback.onStateChanged(newDeviceState));
+ }
+
+ private void execute(String traceName, Runnable r) {
+ mExecutor.execute(() -> {
+ if (DEBUG) {
+ Trace.beginSection(
+ mDeviceStateCallback.getClass().getSimpleName() + "#" + traceName);
+ }
+ try {
+ r.run();
+ } finally {
+ if (DEBUG) {
+ Trace.endSection();
+ }
+ }
+ });
}
}
diff --git a/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java b/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
index fac727f17283..dff14b5fbdd0 100644
--- a/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
+++ b/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
@@ -1114,12 +1114,22 @@ public final class DeviceStateManagerService extends SystemService {
public void notifyDeviceStateInfoAsync(@NonNull DeviceStateInfo info) {
mHandler.post(() -> {
+ boolean tracingEnabled = Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER);
+ if (tracingEnabled) { // To avoid creating the string when not needed.
+ Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER,
+ "notifyDeviceStateInfoAsync(pid=" + mPid + ")");
+ }
try {
mCallback.onDeviceStateInfoChanged(info);
} catch (RemoteException ex) {
Slog.w(TAG, "Failed to notify process " + mPid + " that device state changed.",
ex);
}
+ finally {
+ if (tracingEnabled) {
+ Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
+ }
+ }
});
}