Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 36214384 authored by Nick Chameyev's avatar Nick Chameyev
Browse files

Add dumpsys and extra logging to FoldableDeviceStateProvider

Adds more debug information for bugreports and
more logging to better understand issues
when the device state switch doesn't happen
when expected.

Bug: 321875690
Test: manual fold/unfolds
Test: check dumpsys, logcat
Change-Id: Ibca507dc93d0f6db9ea545301cf94d73e3405739
parent a6699b14
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -910,6 +910,9 @@ public final class DeviceStateManagerService extends SystemService {
            }

            mOverrideRequestController.dumpInternal(pw);
            pw.println();

            mDeviceStatePolicy.dump(pw, /* args= */ null);
        }
    }

+2 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
import android.content.Context;
import android.content.res.Resources;
import android.text.TextUtils;
import android.util.Dumpable;

import com.android.server.policy.DeviceStatePolicyImpl;

@@ -29,7 +30,7 @@ import com.android.server.policy.DeviceStatePolicyImpl;
 *
 * @see DeviceStateManagerService
 */
public abstract class DeviceStatePolicy {
public abstract class DeviceStatePolicy implements Dumpable {
    protected final Context mContext;

    protected DeviceStatePolicy(@NonNull Context context) {
+2 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.hardware.devicestate.DeviceStateManager.MINIMUM_DEVICE_STA

import android.annotation.IntDef;
import android.annotation.IntRange;
import android.util.Dumpable;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -31,7 +32,7 @@ import java.lang.annotation.RetentionPolicy;
 *
 * @see DeviceStatePolicy
 */
public interface DeviceStateProvider {
public interface DeviceStateProvider extends Dumpable {
    int SUPPORTED_DEVICE_STATES_CHANGED_DEFAULT = 0;

    /**
+8 −0
Original line number Diff line number Diff line
@@ -17,11 +17,14 @@
package com.android.server.policy;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;

import com.android.server.devicestate.DeviceStatePolicy;
import com.android.server.devicestate.DeviceStateProvider;

import java.io.PrintWriter;

/**
 * Default empty implementation of {@link DeviceStatePolicy}.
 *
@@ -43,4 +46,9 @@ public final class DeviceStatePolicyImpl extends DeviceStatePolicy {
    public void configureDeviceForState(int state, @NonNull Runnable onComplete) {
        onComplete.run();
    }

    @Override
    public void dump(@NonNull PrintWriter writer, @Nullable String[] args) {
        mProvider.dump(writer, args);
    }
}
+26 −5
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
@@ -503,6 +504,24 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider,
        // Do nothing.
    }

    @Override
    public void dump(@NonNull PrintWriter writer, @Nullable String[] args) {
        writer.println("DeviceStateProviderImpl");

        synchronized (mLock) {
            writer.println("  mLastReportedState = " + mLastReportedState);
            writer.println("  mPowerSaveModeEnabled = " + mPowerSaveModeEnabled);
            writer.println("  mThermalStatus = " + mThermalStatus);
            writer.println("  mIsLidOpen = " + mIsLidOpen);
            writer.println("  Sensor values:");

            for (Sensor sensor : mLatestSensorEvent.keySet()) {
                SensorEvent sensorEvent = mLatestSensorEvent.get(sensor);
                writer.println("   - " + toSensorValueString(sensor, sensorEvent));
            }
        }
    }

    /**
     * Implementation of {@link BooleanSupplier} that returns {@code true} if the expected lid
     * switch open state matches {@link #mIsLidOpen}.
@@ -669,12 +688,14 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider,
        Slog.i(TAG, "Sensor values:");
        for (Sensor sensor : mLatestSensorEvent.keySet()) {
            SensorEvent sensorEvent = mLatestSensorEvent.get(sensor);
            if (sensorEvent != null) {
                Slog.i(TAG, sensor.getName() + ": " + Arrays.toString(sensorEvent.values));
            } else {
                Slog.i(TAG, sensor.getName() + ": null");
            Slog.i(TAG, toSensorValueString(sensor, sensorEvent));
        }
    }

    private String toSensorValueString(Sensor sensor, @Nullable SensorEvent event) {
        String sensorString = sensor == null ? "null" : sensor.getName();
        String eventValues = event == null ? "null" : Arrays.toString(event.values);
        return sensorString + " : " + eventValues;
    }

    /**
Loading