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

Commit e010b5d5 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Android (Google) Code Review
Browse files

Merge changes from topic "pre_run_enable_starting" into sc-dev

* changes:
  Enable SplashScreen flag
  Fix several test failures for the new starting window.(10/N)
  Implement default exit animation for splash screen.(9/N)
parents 9efe4fad 463d0b3e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2925,7 +2925,7 @@ package android.window {
    method @BinderThread public void onTaskInfoChanged(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method @BinderThread public void onTaskVanished(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method @CallSuper @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public java.util.List<android.window.TaskAppearedInfo> registerOrganizer();
    method @BinderThread public void removeStartingWindow(int);
    method @BinderThread public void removeStartingWindow(int, @Nullable android.view.SurfaceControl, @Nullable android.graphics.Rect, boolean);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void setInterceptBackPressedOnTaskRoot(@NonNull android.window.WindowContainerToken, boolean);
    method @CallSuper @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void unregisterOrganizer();
  }
+6 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.window;

import android.view.SurfaceControl;
import android.app.ActivityManager;
import android.graphics.Rect;
import android.window.StartingWindowInfo;
import android.window.WindowContainerToken;

@@ -38,8 +39,12 @@ oneway interface ITaskOrganizer {

    /**
     * Called when the Task want to remove the starting window.
     * @param leash A persistent leash for the top window in this task.
     * @param frame Window frame of the top window.
     * @param playRevealAnimation Play vanish animation.
     */
    void removeStartingWindow(int taskId);
    void removeStartingWindow(int taskId, in SurfaceControl leash, in Rect frame,
            in boolean playRevealAnimation);

    /**
     * Called when the Task want to copy the splash screen.
+6 −3
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@ import android.widget.FrameLayout;
import com.android.internal.R;
import com.android.internal.policy.DecorView;

import java.util.function.Consumer;

/**
 * <p>The view which allows an activity to customize its splash screen exit animation.</p>
 *
@@ -77,7 +79,8 @@ public final class SplashScreenView extends FrameLayout {

    private Animatable mAnimatableIcon;
    private ValueAnimator mAnimator;

    private Runnable mAnimationFinishListener;
    private Consumer<Canvas> mOnDrawCallback;
    // cache original window and status
    private Window mWindow;
    private boolean mDrawBarBackground;
@@ -85,7 +88,7 @@ public final class SplashScreenView extends FrameLayout {
    private int mNavigationBarColor;

    /**
     * Internal builder to create a SplashScreenWindowView object.
     * Internal builder to create a SplashScreenView object.
     * @hide
     */
    public static class Builder {
@@ -391,7 +394,7 @@ public final class SplashScreenView extends FrameLayout {
     * Get the initial background color of this view.
     * @hide
     */
    @ColorInt int getInitBackgroundColor() {
    public @ColorInt int getInitBackgroundColor() {
        return mInitBackgroundColor;
    }

+8 −0
Original line number Diff line number Diff line
@@ -126,6 +126,12 @@ public final class StartingWindowInfo implements Parcelable {
     */
    public int splashScreenThemeResId;

    /**
     * Is keyguard occluded on default display.
     * @hide
     */
    public boolean isKeyguardOccluded = false;

    public StartingWindowInfo() {

    }
@@ -147,6 +153,7 @@ public final class StartingWindowInfo implements Parcelable {
        dest.writeTypedObject(topOpaqueWindowLayoutParams, flags);
        dest.writeTypedObject(mainWindowLayoutParams, flags);
        dest.writeInt(splashScreenThemeResId);
        dest.writeBoolean(isKeyguardOccluded);
    }

    void readFromParcel(@NonNull Parcel source) {
@@ -157,6 +164,7 @@ public final class StartingWindowInfo implements Parcelable {
                WindowManager.LayoutParams.CREATOR);
        mainWindowLayoutParams = source.readTypedObject(WindowManager.LayoutParams.CREATOR);
        splashScreenThemeResId = source.readInt();
        isKeyguardOccluded = source.readBoolean();
    }

    @Override
+11 −4
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.annotation.TestApi;
import android.app.ActivityManager;
import android.graphics.Rect;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.SurfaceControl;
@@ -100,9 +101,14 @@ public class TaskOrganizer extends WindowOrganizer {

    /**
     * Called when the Task want to remove the starting window.
     * @param leash A persistent leash for the top window in this task. Release it once exit
     *              animation has finished.
     * @param frame Window frame of the top window.
     * @param playRevealAnimation Play vanish animation.
     */
    @BinderThread
    public void removeStartingWindow(int taskId) {}
    public void removeStartingWindow(int taskId, @Nullable SurfaceControl leash,
            @Nullable Rect frame, boolean playRevealAnimation) {}

    /**
     * Called when the Task want to copy the splash screen.
@@ -217,15 +223,16 @@ public class TaskOrganizer extends WindowOrganizer {

    private final ITaskOrganizer mInterface = new ITaskOrganizer.Stub() {
        @Override

        public void addStartingWindow(StartingWindowInfo windowInfo,
                IBinder appToken) {
            mExecutor.execute(() -> TaskOrganizer.this.addStartingWindow(windowInfo, appToken));
        }

        @Override
        public void removeStartingWindow(int taskId) {
            mExecutor.execute(() -> TaskOrganizer.this.removeStartingWindow(taskId));
        public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame,
                boolean playRevealAnimation) {
            mExecutor.execute(() -> TaskOrganizer.this.removeStartingWindow(taskId, leash, frame,
                    playRevealAnimation));
        }

        @Override
Loading