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

Commit 6ea16de9 authored by Yi Jiang's avatar Yi Jiang
Browse files

Grabs foreground activity's package name

Passes the foreground activity's package name to Rotation Reosolver.

Test: printed package name locally and it correctly shows the foreground
package.

Bug:181151868
Bug:181150530

Change-Id: Ib6e6504f784283b2d4255da8e54929c6a26cb207
parent a9bb9e1b
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ public abstract class RotationResolverInternal {
     *
     * @param callback the callback that will be called when the result is computed or an
     *                 error is captured. {@link RotationResolverCallbackInternal}
     * @param packageName the package name of the fore ground activity.
     * @param proposedRotation the screen rotation that is proposed by the system.
     * @param currentRotation the current screen rotation.
     * @param timeoutMillis the timeout in millisecond for the query. If the query doesn't get
@@ -53,8 +54,10 @@ public abstract class RotationResolverInternal {
     * @param cancellationSignal a cancellation signal that notifies the rotation resolver manger
     */
    public abstract void resolveRotation(@NonNull RotationResolverCallbackInternal callback,
            @Surface.Rotation int proposedRotation, @Surface.Rotation int currentRotation,
            @DurationMillisLong long timeoutMillis, @NonNull CancellationSignal cancellationSignal);
            String packageName, @Surface.Rotation int proposedRotation,
            @Surface.Rotation int currentRotation, @DurationMillisLong long timeoutMillis,
            @NonNull CancellationSignal cancellationSignal);


    /**
     * Internal interfaces for the rotation resolver callback.
+12 −4
Original line number Diff line number Diff line
@@ -153,8 +153,8 @@ public class RotationResolverManagerService extends

        @Override
        public void resolveRotation(
                @NonNull RotationResolverCallbackInternal callbackInternal, int proposedRotation,
                int currentRotation, long timeout,
                @NonNull RotationResolverCallbackInternal callbackInternal, String packageName,
                int proposedRotation, int currentRotation, long timeout,
                @NonNull CancellationSignal cancellationSignalInternal) {
            Objects.requireNonNull(callbackInternal);
            Objects.requireNonNull(cancellationSignalInternal);
@@ -165,8 +165,16 @@ public class RotationResolverManagerService extends
                    final RotationResolverManagerPerUserService service =
                            getServiceForUserLocked(
                                    UserHandle.getCallingUserId());
                    final RotationResolutionRequest request = new RotationResolutionRequest("",
                            currentRotation, proposedRotation, true, timeout);
                    final RotationResolutionRequest request;
                    if (packageName == null) {
                        request = new RotationResolutionRequest(/* packageName */ "",
                                currentRotation, proposedRotation, /* shouldUseCamera */ true,
                                timeout);
                    } else {
                        request = new RotationResolutionRequest(packageName, currentRotation,
                                proposedRotation, /* shouldUseCamera */ true, timeout);
                    }

                    service.resolveRotationLocked(callbackInternal, request,
                            cancellationSignalInternal);
                } else {
+17 −1
Original line number Diff line number Diff line
@@ -1079,10 +1079,13 @@ public abstract class WindowOrientationListener {
        private int mDesiredRotation = -1;
        private boolean mRotationEvaluationScheduled;
        private long mRotationResolverTimeoutMillis;

        private final ActivityTaskManagerInternal mActivityTaskManagerInternal;
        OrientationSensorJudge() {
            super();
            setupRotationResolverParameters();

            mActivityTaskManagerInternal =
                    LocalServices.getService(ActivityTaskManagerInternal.class);
        }

        private void setupRotationResolverParameters() {
@@ -1149,6 +1152,18 @@ public abstract class WindowOrientationListener {
                }

                final CancellationSignal cancellationSignal = new CancellationSignal();

                String packageName = null;
                if (mActivityTaskManagerInternal != null) {
                    final WindowProcessController controller =
                            mActivityTaskManagerInternal.getTopApp();
                    if (controller != null
                            && controller.mInfo != null
                            && controller.mInfo.packageName != null) {
                        packageName = controller.mInfo.packageName;
                    }
                }

                mRotationResolverService.resolveRotation(
                        new RotationResolverInternal.RotationResolverCallbackInternal() {
                            @Override
@@ -1161,6 +1176,7 @@ public abstract class WindowOrientationListener {
                                finalizeRotation(reportedRotation);
                            }
                        },
                        packageName,
                        reportedRotation,
                        mCurrentRotation,
                        mRotationResolverTimeoutMillis,
+2 −2
Original line number Diff line number Diff line
@@ -106,8 +106,8 @@ public class WindowOrientationListenerTest {

        @Override
        public void resolveRotation(@NonNull RotationResolverCallbackInternal callback,
                @Surface.Rotation int proposedRotation, @Surface.Rotation int currentRotation,
                @DurationMillisLong long timeoutMillis,
                String packageName, @Surface.Rotation int proposedRotation,
                @Surface.Rotation int currentRotation, @DurationMillisLong long timeoutMillis,
                @NonNull CancellationSignal cancellationSignal) {
            callback.onSuccess(mResult);
        }