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

Commit cc82a02d authored by Yi Jiang's avatar Yi Jiang Committed by Android (Google) Code Review
Browse files

Merge "Adds one more feild into RotationResolutionRequest." into sc-dev

parents 0cdeb3b9 0f73fd49
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -9948,11 +9948,13 @@ package android.service.resumeonreboot {
package android.service.rotationresolver {
package android.service.rotationresolver {
  public final class RotationResolutionRequest implements android.os.Parcelable {
  public final class RotationResolutionRequest implements android.os.Parcelable {
    ctor public RotationResolutionRequest(@NonNull String, int, int, boolean, long);
    method public int describeContents();
    method public int describeContents();
    method public int getCurrentRotation();
    method public int getCurrentRotation();
    method @NonNull public String getPackageName();
    method @NonNull public String getPackageName();
    method public int getProposedRotation();
    method public int getProposedRotation();
    method public long getTimeoutMillis();
    method public long getTimeoutMillis();
    method public boolean shouldUseCamera();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.rotationresolver.RotationResolutionRequest> CREATOR;
    field @NonNull public static final android.os.Parcelable.Creator<android.service.rotationresolver.RotationResolutionRequest> CREATOR;
  }
  }
+180 −36
Original line number Original line Diff line number Diff line
@@ -16,12 +16,15 @@


package android.service.rotationresolver;
package android.service.rotationresolver;


import android.annotation.DurationMillisLong;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Parcelable;
import android.view.Surface;
import android.view.Surface;


import com.android.internal.util.DataClass;

/**
/**
 * This class represents a request to an {@link RotationResolverService}. The request contains
 * This class represents a request to an {@link RotationResolverService}. The request contains
 * information from the system that can help RotationResolverService to determine the appropriate
 * information from the system that can help RotationResolverService to determine the appropriate
@@ -33,68 +36,209 @@ import android.view.Surface;
 * @hide
 * @hide
 */
 */
@SystemApi
@SystemApi
@DataClass (
        genParcelable = true,
        genToString = true
)
public final class RotationResolutionRequest implements Parcelable {
public final class RotationResolutionRequest implements Parcelable {
    private final @NonNull String mPackageName;
    /** The Name of the package of the current fore-ground activity. */
    private final int mProposedRotation;
    @NonNull private final String mPackageName;
    private final int mCurrentRotation;

    private final long mTimeoutMillis;
    /** The current rotation of the screen. */
    @Surface.Rotation private final int mCurrentRotation;

    /** The proposed screen rotation in the system. */
    @Surface.Rotation private final int mProposedRotation;

    /** Whether should use camera signal to resolver rotation. */
    private final boolean mShouldUseCamera;

    /** The timeout of the request. */
    @DurationMillisLong private final long mTimeoutMillis;




    // Code below generated by codegen v1.0.22.
    //
    // DO NOT MODIFY!
    // CHECKSTYLE:OFF Generated code
    //
    // To regenerate run:
    // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/rotationresolver/RotationResolutionRequest.java
    //
    // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
    //   Settings > Editor > Code Style > Formatter Control
    //@formatter:off



    /**
    /**
     * @param proposedRotation The system proposed screen rotation.
     * Creates a new RotationResolutionRequest.
     * @param currentRotation  The current screen rotation of the phone.
     *
     * @param packageName The current package name of the activity that is running in
     * @param packageName
     *                    foreground.
     *   The Name of the package of the current fore-ground activity.
     * @param timeoutMillis    The timeout in millisecond for the rotation request.
     * @param currentRotation
     * @hide
     *   The current rotation of the screen.
     * @param proposedRotation
     *   The proposed screen rotation in the system.
     * @param shouldUseCamera
     *   Whether should use camera signal to resolver rotation.
     * @param timeoutMillis
     *   The timeout of the request.
     */
     */
    public RotationResolutionRequest(int proposedRotation, int currentRotation,
    @DataClass.Generated.Member
            @NonNull String packageName, long timeoutMillis) {
    public RotationResolutionRequest(
        mProposedRotation = proposedRotation;
            @NonNull String packageName,
        mCurrentRotation = currentRotation;
            @Surface.Rotation int currentRotation,
        mPackageName = packageName;
            @Surface.Rotation int proposedRotation,
        mTimeoutMillis = timeoutMillis;
            boolean shouldUseCamera,
            @DurationMillisLong long timeoutMillis) {
        this.mPackageName = packageName;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mPackageName);
        this.mCurrentRotation = currentRotation;
        com.android.internal.util.AnnotationValidations.validate(
                Surface.Rotation.class, null, mCurrentRotation);
        this.mProposedRotation = proposedRotation;
        com.android.internal.util.AnnotationValidations.validate(
                Surface.Rotation.class, null, mProposedRotation);
        this.mShouldUseCamera = shouldUseCamera;
        this.mTimeoutMillis = timeoutMillis;
        com.android.internal.util.AnnotationValidations.validate(
                DurationMillisLong.class, null, mTimeoutMillis);

        // onConstructed(); // You can define this method to get a callback
    }
    }


    @Surface.Rotation public int getProposedRotation() {
    /**
        return mProposedRotation;
     * The Name of the package of the current fore-ground activity.
     */
    @DataClass.Generated.Member
    public @NonNull String getPackageName() {
        return mPackageName;
    }
    }


    public int getCurrentRotation() {
    /**
     * The current rotation of the screen.
     */
    @DataClass.Generated.Member
    public @Surface.Rotation int getCurrentRotation() {
        return mCurrentRotation;
        return mCurrentRotation;
    }
    }


    public @NonNull String getPackageName() {
    /**
        return mPackageName;
     * The proposed screen rotation in the system.
     */
    @DataClass.Generated.Member
    public @Surface.Rotation int getProposedRotation() {
        return mProposedRotation;
    }
    }


    public long getTimeoutMillis() {
    /**
     * Whether should use camera signal to resolver rotation.
     */
    @DataClass.Generated.Member
    public boolean shouldUseCamera() {
        return mShouldUseCamera;
    }

    /**
     * The timeout of the request.
     */
    @DataClass.Generated.Member
    public @DurationMillisLong long getTimeoutMillis() {
        return mTimeoutMillis;
        return mTimeoutMillis;
    }
    }


    @Override
    @Override
    public int describeContents() {
    @DataClass.Generated.Member
        return 0;
    public String toString() {
        // You can override field toString logic by defining methods like:
        // String fieldNameToString() { ... }

        return "RotationResolutionRequest { " +
                "packageName = " + mPackageName + ", " +
                "currentRotation = " + mCurrentRotation + ", " +
                "proposedRotation = " + mProposedRotation + ", " +
                "shouldUseCamera = " + mShouldUseCamera + ", " +
                "timeoutMillis = " + mTimeoutMillis +
        " }";
    }
    }


    @Override
    @Override
    public void writeToParcel(@NonNull Parcel parcel, int flags) {
    @DataClass.Generated.Member
        parcel.writeInt(mProposedRotation);
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        parcel.writeInt(mCurrentRotation);
        // You can override field parcelling by defining methods like:
        parcel.writeString(mPackageName);
        // void parcelFieldName(Parcel dest, int flags) { ... }
        parcel.writeLong(mTimeoutMillis);

        byte flg = 0;
        if (mShouldUseCamera) flg |= 0x8;
        dest.writeByte(flg);
        dest.writeString(mPackageName);
        dest.writeInt(mCurrentRotation);
        dest.writeInt(mProposedRotation);
        dest.writeLong(mTimeoutMillis);
    }
    }


    public static final @NonNull Creator<RotationResolutionRequest> CREATOR =
            new Creator<RotationResolutionRequest>() {
    @Override
    @Override
        public RotationResolutionRequest createFromParcel(Parcel source) {
    @DataClass.Generated.Member
            return new RotationResolutionRequest(source.readInt(), source.readInt(),
    public int describeContents() { return 0; }
                    source.readString(), source.readLong());

    /** @hide */
    @SuppressWarnings({"unchecked", "RedundantCast"})
    @DataClass.Generated.Member
    /* package-private */ RotationResolutionRequest(@NonNull Parcel in) {
        // You can override field unparcelling by defining methods like:
        // static FieldType unparcelFieldName(Parcel in) { ... }

        byte flg = in.readByte();
        boolean shouldUseCamera = (flg & 0x8) != 0;
        String packageName = in.readString();
        int currentRotation = in.readInt();
        int proposedRotation = in.readInt();
        long timeoutMillis = in.readLong();

        this.mPackageName = packageName;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mPackageName);
        this.mCurrentRotation = currentRotation;
        com.android.internal.util.AnnotationValidations.validate(
                Surface.Rotation.class, null, mCurrentRotation);
        this.mProposedRotation = proposedRotation;
        com.android.internal.util.AnnotationValidations.validate(
                Surface.Rotation.class, null, mProposedRotation);
        this.mShouldUseCamera = shouldUseCamera;
        this.mTimeoutMillis = timeoutMillis;
        com.android.internal.util.AnnotationValidations.validate(
                DurationMillisLong.class, null, mTimeoutMillis);

        // onConstructed(); // You can define this method to get a callback
    }
    }


    @DataClass.Generated.Member
    public static final @NonNull Parcelable.Creator<RotationResolutionRequest> CREATOR
            = new Parcelable.Creator<RotationResolutionRequest>() {
        @Override
        @Override
        public RotationResolutionRequest[] newArray(int size) {
        public RotationResolutionRequest[] newArray(int size) {
            return new RotationResolutionRequest[size];
            return new RotationResolutionRequest[size];
        }
        }

        @Override
        public RotationResolutionRequest createFromParcel(@NonNull Parcel in) {
            return new RotationResolutionRequest(in);
        }
    };
    };

    @DataClass.Generated(
            time = 1615402421314L,
            codegenVersion = "1.0.22",
            sourceFile = "frameworks/base/core/java/android/service/rotationresolver/RotationResolutionRequest.java",
            inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.view.Surface.Rotation int mCurrentRotation\nprivate final @android.view.Surface.Rotation int mProposedRotation\nprivate final  boolean mShouldUseCamera\nprivate final @android.annotation.DurationMillisLong long mTimeoutMillis\nclass RotationResolutionRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)")
    @Deprecated
    private void __metadata() {}


    //@formatter:on
    // End of generated code

}
}
+11 −22
Original line number Original line Diff line number Diff line
@@ -77,9 +77,7 @@ class RemoteRotationResolverService extends ServiceConnector.Impl<IRotationResol


    @GuardedBy("mLock")
    @GuardedBy("mLock")
    public void resolveRotationLocked(RotationRequest request) {
    public void resolveRotationLocked(RotationRequest request) {
        final RotationResolutionRequest remoteRequest = new RotationResolutionRequest(
        final RotationResolutionRequest remoteRequest = request.mRemoteRequest;
                request.mProposedRotation, request.mCurrentRotation, request.mPackageName,
                request.mTimeoutMillis);
        post(service -> service.resolveRotation(request.mIRotationResolverCallback, remoteRequest));
        post(service -> service.resolveRotation(request.mIRotationResolverCallback, remoteRequest));


        // schedule a timeout.
        // schedule a timeout.
@@ -91,7 +89,7 @@ class RemoteRotationResolverService extends ServiceConnector.Impl<IRotationResol
                    request.cancelInternal();
                    request.cancelInternal();
                }
                }
            }
            }
        }, request.mTimeoutMillis);
        }, request.mRemoteRequest.getTimeoutMillis());
    }
    }


    @VisibleForTesting
    @VisibleForTesting
@@ -109,28 +107,18 @@ class RemoteRotationResolverService extends ServiceConnector.Impl<IRotationResol
        @GuardedBy("mLock")
        @GuardedBy("mLock")
        boolean mIsFulfilled;
        boolean mIsFulfilled;


        private final long mTimeoutMillis;

        @VisibleForTesting
        @VisibleForTesting
        final int mProposedRotation;
        final RotationResolutionRequest mRemoteRequest;

        private final int mCurrentRotation;
        private final String mPackageName;


        boolean mIsDispatched;
        boolean mIsDispatched;
        private final Object mLock = new Object();
        private final Object mLock = new Object();
        private final long mRequestStartTimeMillis;
        private final long mRequestStartTimeMillis;


        RotationRequest(
        RotationRequest(
                @NonNull RotationResolverInternal.RotationResolverCallbackInternal
                @NonNull RotationResolverInternal.RotationResolverCallbackInternal callbackInternal,
                        callbackInternal, int proposedRotation, int currentRotation,
                RotationResolutionRequest request, @NonNull CancellationSignal cancellationSignal) {
                String packageName, long timeoutMillis,
                @NonNull CancellationSignal cancellationSignal) {
            mTimeoutMillis = timeoutMillis;
            mCallbackInternal = callbackInternal;
            mCallbackInternal = callbackInternal;
            mProposedRotation = proposedRotation;
            mRemoteRequest = request;
            mCurrentRotation = currentRotation;
            mPackageName = packageName;
            mIRotationResolverCallback = new RotationResolverCallback(this);
            mIRotationResolverCallback = new RotationResolverCallback(this);
            mCancellationSignalInternal = cancellationSignal;
            mCancellationSignalInternal = cancellationSignal;
            mRequestStartTimeMillis = SystemClock.elapsedRealtime();
            mRequestStartTimeMillis = SystemClock.elapsedRealtime();
@@ -185,8 +173,8 @@ class RemoteRotationResolverService extends ServiceConnector.Impl<IRotationResol
                    request.mCallbackInternal.onSuccess(rotation);
                    request.mCallbackInternal.onSuccess(rotation);
                    final long timeToCalculate =
                    final long timeToCalculate =
                            SystemClock.elapsedRealtime() - request.mRequestStartTimeMillis;
                            SystemClock.elapsedRealtime() - request.mRequestStartTimeMillis;
                    logRotationStats(request.mProposedRotation, request.mCurrentRotation, rotation,
                    logRotationStats(request.mRemoteRequest.getProposedRotation(),
                            timeToCalculate);
                            request.mRemoteRequest.getCurrentRotation(), rotation, timeToCalculate);
                    Slog.d(TAG, "onSuccess:" + rotation);
                    Slog.d(TAG, "onSuccess:" + rotation);
                    Slog.d(TAG, "timeToCalculate:" + timeToCalculate);
                    Slog.d(TAG, "timeToCalculate:" + timeToCalculate);
                }
                }
@@ -204,8 +192,9 @@ class RemoteRotationResolverService extends ServiceConnector.Impl<IRotationResol
                    request.mCallbackInternal.onFailure(error);
                    request.mCallbackInternal.onFailure(error);
                    final long timeToCalculate =
                    final long timeToCalculate =
                            SystemClock.elapsedRealtime() - request.mRequestStartTimeMillis;
                            SystemClock.elapsedRealtime() - request.mRequestStartTimeMillis;
                    logRotationStats(request.mProposedRotation, request.mCurrentRotation,
                    logRotationStats(request.mRemoteRequest.getProposedRotation(),
                            RESOLUTION_FAILURE, timeToCalculate);
                            request.mRemoteRequest.getCurrentRotation(), RESOLUTION_FAILURE,
                            timeToCalculate);
                    Slog.d(TAG, "onFailure:" + error);
                    Slog.d(TAG, "onFailure:" + error);
                    Slog.d(TAG, "timeToCalculate:" + timeToCalculate);
                    Slog.d(TAG, "timeToCalculate:" + timeToCalculate);
                }
                }
+5 −6
Original line number Original line Diff line number Diff line
@@ -34,11 +34,11 @@ import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.ServiceInfo;
import android.os.CancellationSignal;
import android.os.CancellationSignal;
import android.rotationresolver.RotationResolverInternal;
import android.rotationresolver.RotationResolverInternal;
import android.service.rotationresolver.RotationResolutionRequest;
import android.service.rotationresolver.RotationResolverService;
import android.service.rotationresolver.RotationResolverService;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.IndentingPrintWriter;
import android.util.IndentingPrintWriter;
import android.util.Slog;
import android.util.Slog;
import android.view.Surface;


import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
@@ -95,14 +95,14 @@ final class RotationResolverManagerPerUserService extends
    @VisibleForTesting
    @VisibleForTesting
    void resolveRotationLocked(
    void resolveRotationLocked(
            @NonNull RotationResolverInternal.RotationResolverCallbackInternal callbackInternal,
            @NonNull RotationResolverInternal.RotationResolverCallbackInternal callbackInternal,
            @Surface.Rotation int proposedRotation, @Surface.Rotation int currentRotation,
            @NonNull RotationResolutionRequest request,
            String packageName, long timeoutMillis,
            @NonNull CancellationSignal cancellationSignalInternal) {
            @NonNull CancellationSignal cancellationSignalInternal) {


        if (!isServiceAvailableLocked()) {
        if (!isServiceAvailableLocked()) {
            Slog.w(TAG, "Service is not available at this moment.");
            Slog.w(TAG, "Service is not available at this moment.");
            callbackInternal.onFailure(ROTATION_RESULT_FAILURE_CANCELLED);
            callbackInternal.onFailure(ROTATION_RESULT_FAILURE_CANCELLED);
            logRotationStats(proposedRotation, currentRotation, RESOLUTION_UNAVAILABLE);
            logRotationStats(request.getProposedRotation(), request.getCurrentRotation(),
                    RESOLUTION_UNAVAILABLE);
            return;
            return;
        }
        }


@@ -114,8 +114,7 @@ final class RotationResolverManagerPerUserService extends
        }
        }


        mCurrentRequest = new RemoteRotationResolverService.RotationRequest(callbackInternal,
        mCurrentRequest = new RemoteRotationResolverService.RotationRequest(callbackInternal,
                proposedRotation, currentRotation, packageName, timeoutMillis,
                request, cancellationSignalInternal);
                cancellationSignalInternal);


        cancellationSignalInternal.setOnCancelListener(() -> {
        cancellationSignalInternal.setOnCancelListener(() -> {
            synchronized (mLock) {
            synchronized (mLock) {
+4 −2
Original line number Original line Diff line number Diff line
@@ -35,6 +35,7 @@ import android.os.ShellCallback;
import android.os.UserHandle;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.provider.DeviceConfig;
import android.rotationresolver.RotationResolverInternal;
import android.rotationresolver.RotationResolverInternal;
import android.service.rotationresolver.RotationResolutionRequest;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.IndentingPrintWriter;
import android.util.IndentingPrintWriter;
import android.util.Slog;
import android.util.Slog;
@@ -158,8 +159,9 @@ public class RotationResolverManagerService extends
                if (mIsServiceEnabled) {
                if (mIsServiceEnabled) {
                    final RotationResolverManagerPerUserService service = getServiceForUserLocked(
                    final RotationResolverManagerPerUserService service = getServiceForUserLocked(
                            UserHandle.getCallingUserId());
                            UserHandle.getCallingUserId());
                    service.resolveRotationLocked(callbackInternal, proposedRotation,
                    final RotationResolutionRequest request = new RotationResolutionRequest("",
                            currentRotation, /* packageName */ "", timeout,
                            currentRotation, proposedRotation, true, timeout);
                    service.resolveRotationLocked(callbackInternal, request,
                            cancellationSignalInternal);
                            cancellationSignalInternal);
                } else {
                } else {
                    Slog.w(TAG, "Rotation Resolver service is disabled.");
                    Slog.w(TAG, "Rotation Resolver service is disabled.");
Loading