Merge "Migrate DozeSensor logcat logging to LogBuffer" into tm-qpr-dev

This commit is contained in:
Beverly Tai
2022-10-24 12:51:22 +00:00
committed by Android (Google) Code Review
6 changed files with 99 additions and 31 deletions

View File

@@ -287,8 +287,8 @@ public class DozeLog implements Dumpable {
/** /**
* Appends sensor event dropped event to logs * Appends sensor event dropped event to logs
*/ */
public void traceSensorEventDropped(int sensorEvent, String reason) { public void traceSensorEventDropped(@Reason int pulseReason, String reason) {
mLogger.logSensorEventDropped(sensorEvent, reason); mLogger.logSensorEventDropped(pulseReason, reason);
} }
/** /**
@@ -386,6 +386,47 @@ public class DozeLog implements Dumpable {
mLogger.logSetAodDimmingScrim((long) scrimOpacity); mLogger.logSetAodDimmingScrim((long) scrimOpacity);
} }
/**
* Appends sensor attempted to register and whether it was a successful registration.
*/
public void traceSensorRegisterAttempt(String sensorName, boolean successfulRegistration) {
mLogger.logSensorRegisterAttempt(sensorName, successfulRegistration);
}
/**
* Appends sensor attempted to unregister and whether it was successfully unregistered.
*/
public void traceSensorUnregisterAttempt(String sensorInfo, boolean successfullyUnregistered) {
mLogger.logSensorUnregisterAttempt(sensorInfo, successfullyUnregistered);
}
/**
* Appends sensor attempted to unregister and whether it was successfully unregistered
* with a reason the sensor is being unregistered.
*/
public void traceSensorUnregisterAttempt(String sensorInfo, boolean successfullyUnregistered,
String reason) {
mLogger.logSensorUnregisterAttempt(sensorInfo, successfullyUnregistered, reason);
}
/**
* Appends the event of skipping a sensor registration since it's already registered.
*/
public void traceSkipRegisterSensor(String sensorInfo) {
mLogger.logSkipSensorRegistration(sensorInfo);
}
/**
* Appends a plugin sensor was registered or unregistered event.
*/
public void tracePluginSensorUpdate(boolean registered) {
if (registered) {
mLogger.log("register plugin sensor");
} else {
mLogger.log("unregister plugin sensor");
}
}
private class SummaryStats { private class SummaryStats {
private int mCount; private int mCount;

View File

@@ -25,6 +25,7 @@ import com.android.systemui.plugins.log.LogLevel.ERROR
import com.android.systemui.plugins.log.LogLevel.INFO import com.android.systemui.plugins.log.LogLevel.INFO
import com.android.systemui.log.dagger.DozeLog import com.android.systemui.log.dagger.DozeLog
import com.android.systemui.statusbar.policy.DevicePostureController import com.android.systemui.statusbar.policy.DevicePostureController
import com.google.errorprone.annotations.CompileTimeConstant
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
import java.util.Locale import java.util.Locale
@@ -324,6 +325,50 @@ class DozeLogger @Inject constructor(
"Doze car mode started" "Doze car mode started"
}) })
} }
fun logSensorRegisterAttempt(sensorInfo: String, successfulRegistration: Boolean) {
buffer.log(TAG, INFO, {
str1 = sensorInfo
bool1 = successfulRegistration
}, {
"Register sensor. Success=$bool1 sensor=$str1"
})
}
fun logSensorUnregisterAttempt(sensorInfo: String, successfulUnregister: Boolean) {
buffer.log(TAG, INFO, {
str1 = sensorInfo
bool1 = successfulUnregister
}, {
"Unregister sensor. Success=$bool1 sensor=$str1"
})
}
fun logSensorUnregisterAttempt(
sensorInfo: String,
successfulUnregister: Boolean,
reason: String
) {
buffer.log(TAG, INFO, {
str1 = sensorInfo
bool1 = successfulUnregister
str2 = reason
}, {
"Unregister sensor. reason=$str2. Success=$bool1 sensor=$str1"
})
}
fun logSkipSensorRegistration(sensor: String) {
buffer.log(TAG, DEBUG, {
str1 = sensor
}, {
"Skipping sensor registration because its already registered. sensor=$str1"
})
}
fun log(@CompileTimeConstant msg: String) {
buffer.log(TAG, DEBUG, msg)
}
} }
private const val TAG = "DozeLog" private const val TAG = "DozeLog"

View File

@@ -23,7 +23,6 @@ import static com.android.systemui.plugins.SensorManagerPlugin.Sensor.TYPE_WAKE_
import android.annotation.AnyThread; import android.annotation.AnyThread;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Context;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.hardware.Sensor; import android.hardware.Sensor;
import android.hardware.SensorManager; import android.hardware.SensorManager;
@@ -37,7 +36,6 @@ import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.IndentingPrintWriter; import android.util.IndentingPrintWriter;
import android.util.Log;
import android.view.Display; import android.view.Display;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -88,12 +86,9 @@ import java.util.function.Consumer;
* trigger callbacks on the provided {@link mProxCallback}. * trigger callbacks on the provided {@link mProxCallback}.
*/ */
public class DozeSensors { public class DozeSensors {
private static final boolean DEBUG = DozeService.DEBUG;
private static final String TAG = "DozeSensors"; private static final String TAG = "DozeSensors";
private static final UiEventLogger UI_EVENT_LOGGER = new UiEventLoggerImpl(); private static final UiEventLogger UI_EVENT_LOGGER = new UiEventLoggerImpl();
private final Context mContext;
private final AsyncSensorManager mSensorManager; private final AsyncSensorManager mSensorManager;
private final AmbientDisplayConfiguration mConfig; private final AmbientDisplayConfiguration mConfig;
private final WakeLock mWakeLock; private final WakeLock mWakeLock;
@@ -144,7 +139,6 @@ public class DozeSensors {
} }
DozeSensors( DozeSensors(
Context context,
AsyncSensorManager sensorManager, AsyncSensorManager sensorManager,
DozeParameters dozeParameters, DozeParameters dozeParameters,
AmbientDisplayConfiguration config, AmbientDisplayConfiguration config,
@@ -157,7 +151,6 @@ public class DozeSensors {
AuthController authController, AuthController authController,
DevicePostureController devicePostureController DevicePostureController devicePostureController
) { ) {
mContext = context;
mSensorManager = sensorManager; mSensorManager = sensorManager;
mConfig = config; mConfig = config;
mWakeLock = wakeLock; mWakeLock = wakeLock;
@@ -605,10 +598,7 @@ public class DozeSensors {
// cancel the previous sensor: // cancel the previous sensor:
if (mRegistered) { if (mRegistered) {
final boolean rt = mSensorManager.cancelTriggerSensor(this, oldSensor); final boolean rt = mSensorManager.cancelTriggerSensor(this, oldSensor);
if (DEBUG) { mDozeLog.traceSensorUnregisterAttempt(oldSensor.toString(), rt, "posture changed");
Log.d(TAG, "posture changed, cancelTriggerSensor[" + oldSensor + "] "
+ rt);
}
mRegistered = false; mRegistered = false;
} }
@@ -654,19 +644,13 @@ public class DozeSensors {
if (mRequested && !mDisabled && (enabledBySetting() || mIgnoresSetting)) { if (mRequested && !mDisabled && (enabledBySetting() || mIgnoresSetting)) {
if (!mRegistered) { if (!mRegistered) {
mRegistered = mSensorManager.requestTriggerSensor(this, sensor); mRegistered = mSensorManager.requestTriggerSensor(this, sensor);
if (DEBUG) { mDozeLog.traceSensorRegisterAttempt(sensor.toString(), mRegistered);
Log.d(TAG, "requestTriggerSensor[" + sensor + "] " + mRegistered);
}
} else { } else {
if (DEBUG) { mDozeLog.traceSkipRegisterSensor(sensor.toString());
Log.d(TAG, "requestTriggerSensor[" + sensor + "] already registered");
}
} }
} else if (mRegistered) { } else if (mRegistered) {
final boolean rt = mSensorManager.cancelTriggerSensor(this, sensor); final boolean rt = mSensorManager.cancelTriggerSensor(this, sensor);
if (DEBUG) { mDozeLog.traceSensorUnregisterAttempt(sensor.toString(), rt);
Log.d(TAG, "cancelTriggerSensor[" + sensor + "] " + rt);
}
mRegistered = false; mRegistered = false;
} }
} }
@@ -704,7 +688,6 @@ public class DozeSensors {
final Sensor sensor = mSensors[mPosture]; final Sensor sensor = mSensors[mPosture];
mDozeLog.traceSensor(mPulseReason); mDozeLog.traceSensor(mPulseReason);
mHandler.post(mWakeLock.wrap(() -> { mHandler.post(mWakeLock.wrap(() -> {
if (DEBUG) Log.d(TAG, "onTrigger: " + triggerEventToString(event));
if (sensor != null && sensor.getType() == Sensor.TYPE_PICK_UP_GESTURE) { if (sensor != null && sensor.getType() == Sensor.TYPE_PICK_UP_GESTURE) {
UI_EVENT_LOGGER.log(DozeSensorsUiEvent.ACTION_AMBIENT_GESTURE_PICKUP); UI_EVENT_LOGGER.log(DozeSensorsUiEvent.ACTION_AMBIENT_GESTURE_PICKUP);
} }
@@ -776,11 +759,11 @@ public class DozeSensors {
&& !mRegistered) { && !mRegistered) {
asyncSensorManager.registerPluginListener(mPluginSensor, this); asyncSensorManager.registerPluginListener(mPluginSensor, this);
mRegistered = true; mRegistered = true;
if (DEBUG) Log.d(TAG, "registerPluginListener"); mDozeLog.tracePluginSensorUpdate(true /* registered */);
} else if (mRegistered) { } else if (mRegistered) {
asyncSensorManager.unregisterPluginListener(mPluginSensor, this); asyncSensorManager.unregisterPluginListener(mPluginSensor, this);
mRegistered = false; mRegistered = false;
if (DEBUG) Log.d(TAG, "unregisterPluginListener"); mDozeLog.tracePluginSensorUpdate(false /* registered */);
} }
} }
@@ -813,10 +796,9 @@ public class DozeSensors {
mHandler.post(mWakeLock.wrap(() -> { mHandler.post(mWakeLock.wrap(() -> {
final long now = SystemClock.uptimeMillis(); final long now = SystemClock.uptimeMillis();
if (now < mDebounceFrom + mDebounce) { if (now < mDebounceFrom + mDebounce) {
Log.d(TAG, "onSensorEvent dropped: " + triggerEventToString(event)); mDozeLog.traceSensorEventDropped(mPulseReason, "debounce");
return; return;
} }
if (DEBUG) Log.d(TAG, "onSensorEvent: " + triggerEventToString(event));
mSensorCallback.onSensorPulse(mPulseReason, -1, -1, event.getValues()); mSensorCallback.onSensorPulse(mPulseReason, -1, -1, event.getValues());
})); }));
} }

View File

@@ -198,7 +198,7 @@ public class DozeTriggers implements DozeMachine.Part {
mAllowPulseTriggers = true; mAllowPulseTriggers = true;
mSessionTracker = sessionTracker; mSessionTracker = sessionTracker;
mDozeSensors = new DozeSensors(context, mSensorManager, dozeParameters, mDozeSensors = new DozeSensors(mSensorManager, dozeParameters,
config, wakeLock, this::onSensor, this::onProximityFar, dozeLog, proximitySensor, config, wakeLock, this::onSensor, this::onProximityFar, dozeLog, proximitySensor,
secureSettings, authController, devicePostureController); secureSettings, authController, devicePostureController);
mDockManager = dockManager; mDockManager = dockManager;

View File

@@ -43,7 +43,7 @@ public class LogModule {
@SysUISingleton @SysUISingleton
@DozeLog @DozeLog
public static LogBuffer provideDozeLogBuffer(LogBufferFactory factory) { public static LogBuffer provideDozeLogBuffer(LogBufferFactory factory) {
return factory.create("DozeLog", 120); return factory.create("DozeLog", 150);
} }
/** Provides a logging buffer for all logs related to the data layer of notifications. */ /** Provides a logging buffer for all logs related to the data layer of notifications. */

View File

@@ -423,7 +423,7 @@ public class DozeSensorsTest extends SysuiTestCase {
@Test @Test
public void testGesturesAllInitiallyRespectSettings() { public void testGesturesAllInitiallyRespectSettings() {
DozeSensors dozeSensors = new DozeSensors(getContext(), mSensorManager, mDozeParameters, DozeSensors dozeSensors = new DozeSensors(mSensorManager, mDozeParameters,
mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog, mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog,
mProximitySensor, mFakeSettings, mAuthController, mProximitySensor, mFakeSettings, mAuthController,
mDevicePostureController); mDevicePostureController);
@@ -435,7 +435,7 @@ public class DozeSensorsTest extends SysuiTestCase {
private class TestableDozeSensors extends DozeSensors { private class TestableDozeSensors extends DozeSensors {
TestableDozeSensors() { TestableDozeSensors() {
super(getContext(), mSensorManager, mDozeParameters, super(mSensorManager, mDozeParameters,
mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog, mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog,
mProximitySensor, mFakeSettings, mAuthController, mProximitySensor, mFakeSettings, mAuthController,
mDevicePostureController); mDevicePostureController);