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

Commit 4af733d6 authored by Johannes Gallmann's avatar Johannes Gallmann Committed by Android (Google) Code Review
Browse files

Merge "Only register Launcher back-callback when ROLE_HOME is held." into main

parents 7005aff0 0610c625
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.launcher3;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.app.role.RoleManager.ROLE_HOME;
import static android.provider.Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.RemoteAnimationTarget.MODE_OPENING;
@@ -74,6 +75,7 @@ import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.app.ActivityOptions;
import android.app.WindowConfiguration;
import android.app.role.RoleManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.res.Resources;
@@ -1194,9 +1196,11 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
                .registerRemoteTransition(mLauncherOpenTransition, homeCheck);
        if (mBackAnimationController != null) {
            mBackAnimationController.registerComponentCallbacks();
            if (isHomeRoleHeld()) {
                mBackAnimationController.registerBackCallbacks(mHandler);
            }
        }
    }

    public void onActivityDestroyed() {
        unregisterRemoteAnimations();
@@ -1207,6 +1211,22 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
                .unregisterContentObserver(mAnimationRemovalObserver));
    }

    /**
     * Called when the overview-target changes. Updates the back callback registration state.
     */
    public void onOverviewTargetChange() {
        if (isHomeRoleHeld()) {
            mBackAnimationController.registerBackCallbacks(mHandler);
        } else {
            mBackAnimationController.unregisterBackCallbacks();
        }
    }

    private boolean isHomeRoleHeld() {
        RoleManager roleManager = mLauncher.getSystemService(RoleManager.class);
        return roleManager == null || roleManager.isRoleHeld(ROLE_HOME);
    }

    private void unregisterRemoteAnimations() {
        if (SEPARATE_RECENTS_ACTIVITY.get()) {
            return;
+14 −0
Original line number Diff line number Diff line
@@ -264,6 +264,8 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer,

    private boolean mIsOverlayVisible;

    private final Runnable mOverviewTargetChangeRunnable = this::onOverviewTargetChanged;

    public static QuickstepLauncher getLauncher(Context context) {
        return fromContext(context);
    }
@@ -550,6 +552,10 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer,
            mUnfoldTransitionProgressProvider.destroy();
        }

        TISBinder binder = mTISBindHelper.getBinder();
        if (binder != null) {
            binder.unregisterOverviewTargetChangeListener(mOverviewTargetChangeRunnable);
        }
        mTISBindHelper.onDestroy();

        if (mLauncherUnfoldAnimationController != null) {
@@ -1025,12 +1031,20 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer,
        }
    }

    private void onOverviewTargetChanged() {
        QuickstepTransitionManager transitionManager = getAppTransitionManager();
        if (transitionManager != null) {
            transitionManager.onOverviewTargetChange();
        }
    }

    private void onTISConnected(TISBinder binder) {
        TaskbarManager taskbarManager = mTISBindHelper.getTaskbarManager();
        if (taskbarManager != null) {
            taskbarManager.setActivity(this);
        }
        mTISBindHelper.setPredictiveBackToHomeInProgress(mIsPredictiveBackToHomeInProgress);
        binder.registerOverviewTargetChangeListener(mOverviewTargetChangeRunnable);
    }

    @Override
+12 −7
Original line number Diff line number Diff line
@@ -137,6 +137,7 @@ import com.android.wm.shell.startingsurface.IStartingWindow;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -163,7 +164,7 @@ public class TouchInteractionService extends Service {

        private final WeakReference<TouchInteractionService> mTis;

        @Nullable private Runnable mOnOverviewTargetChangeListener = null;
        private final Set<Runnable> mOnOverviewTargetChangeListeners = new HashSet<>();

        private TISBinder(TouchInteractionService tis) {
            mTis = new WeakReference<>(tis);
@@ -512,15 +513,19 @@ public class TouchInteractionService extends Service {
                    tis -> tis.mDeviceState.setGestureBlockingTaskId(taskId));
        }

        /** Sets a listener to be run on Overview Target updates. */
        public void setOverviewTargetChangeListener(@Nullable Runnable listener) {
            mOnOverviewTargetChangeListener = listener;
        /** Registers a listener to be run on Overview Target updates. */
        public void registerOverviewTargetChangeListener(@NonNull Runnable listener) {
            mOnOverviewTargetChangeListeners.add(listener);
        }

        /** Unregisters an OverviewTargetChange listener. */
        public void unregisterOverviewTargetChangeListener(@NonNull Runnable listener) {
            mOnOverviewTargetChangeListeners.remove(listener);
        }

        protected void onOverviewTargetChange() {
            if (mOnOverviewTargetChangeListener != null) {
                mOnOverviewTargetChangeListener.run();
                mOnOverviewTargetChangeListener = null;
            for (Runnable listener : mOnOverviewTargetChangeListeners) {
                listener.run();
            }
        }

+12 −2
Original line number Diff line number Diff line
@@ -121,6 +121,8 @@ public class AllSetActivity extends Activity {

    private TextView mHintView;

    private final Runnable mOverviewTargetChangeRunnable = this::onOverviewTargetChanged;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -285,7 +287,7 @@ public class AllSetActivity extends Activity {
    private void onTISConnected(TISBinder binder) {
        setSetupUIVisible(isResumed());
        binder.setSwipeUpProxy(isResumed() ? this::createSwipeUpProxy : null);
        binder.setOverviewTargetChangeListener(binder::preloadOverviewForSUWAllSet);
        binder.registerOverviewTargetChangeListener(mOverviewTargetChangeRunnable);
        binder.preloadOverviewForSUWAllSet();
        TaskbarManager taskbarManager = binder.getTaskbarManager();
        if (taskbarManager != null) {
@@ -293,6 +295,14 @@ public class AllSetActivity extends Activity {
        }
    }

    private void onOverviewTargetChanged() {
        TISBinder binder = mTISBindHelper.getBinder();
        if (binder != null) {
            binder.preloadOverviewForSUWAllSet();
            binder.unregisterOverviewTargetChangeListener(mOverviewTargetChangeRunnable);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
@@ -309,7 +319,7 @@ public class AllSetActivity extends Activity {
        if (binder != null) {
            setSetupUIVisible(false);
            binder.setSwipeUpProxy(null);
            binder.setOverviewTargetChangeListener(null);
            binder.unregisterOverviewTargetChangeListener(mOverviewTargetChangeRunnable);
        }
    }