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

Commit a5f24d70 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Clean up RECEIVE_UNFOLD_EVENTS_FROM_SYSUI flag" into udc-qpr-dev

parents b038bac6 5442cbc3
Loading
Loading
Loading
Loading
+2 −46
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK;
import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT;
import static com.android.launcher3.compat.AccessibilityManagerCompat.sendCustomAccessibilityEvent;
import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE;
import static com.android.launcher3.config.FeatureFlags.RECEIVE_UNFOLD_EVENTS_FROM_SYSUI;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_LAUNCH_TAP;
import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID;
import static com.android.launcher3.popup.QuickstepSystemShortcut.getSplitSelectShortcutByPosition;
@@ -58,7 +57,6 @@ import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SY
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
@@ -68,8 +66,6 @@ import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.RectF;
import android.hardware.SensorManager;
import android.hardware.devicestate.DeviceStateManager;
import android.hardware.display.DisplayManager;
import android.media.permission.SafeCloseable;
import android.os.Build;
@@ -157,7 +153,6 @@ import com.android.quickstep.TaskUtils;
import com.android.quickstep.TouchInteractionService.TISBinder;
import com.android.quickstep.util.GroupTask;
import com.android.quickstep.util.LauncherUnfoldAnimationController;
import com.android.quickstep.util.ProxyScreenStatusProvider;
import com.android.quickstep.util.QuickstepOnboardingPrefs;
import com.android.quickstep.util.SplitSelectStateController;
import com.android.quickstep.util.SplitToWorkspaceController;
@@ -171,14 +166,11 @@ import com.android.quickstep.views.TaskView;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.unfold.RemoteUnfoldSharedComponent;
import com.android.systemui.unfold.UnfoldSharedComponent;
import com.android.systemui.unfold.UnfoldTransitionFactory;
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
import com.android.systemui.unfold.config.ResourceUnfoldTransitionConfig;
import com.android.systemui.unfold.config.UnfoldTransitionConfig;
import com.android.systemui.unfold.progress.RemoteUnfoldTransitionReceiver;
import com.android.systemui.unfold.system.ActivityManagerActivityTypeProvider;
import com.android.systemui.unfold.system.DeviceStateManagerFoldProvider;
import com.android.systemui.unfold.updates.RotationChangeProvider;

import java.io.FileDescriptor;
@@ -465,10 +457,7 @@ public class QuickstepLauncher extends Launcher {
    public void onDestroy() {
        mAppTransitionManager.onActivityDestroyed();
        if (mUnfoldTransitionProgressProvider != null) {
            if (FeatureFlags.RECEIVE_UNFOLD_EVENTS_FROM_SYSUI.get()) {
            SystemUiProxy.INSTANCE.get(this).setUnfoldAnimationListener(null);
            }

            mUnfoldTransitionProgressProvider.destroy();
        }

@@ -905,43 +894,10 @@ public class QuickstepLauncher extends Launcher {
    private void initUnfoldTransitionProgressProvider() {
        final UnfoldTransitionConfig config = new ResourceUnfoldTransitionConfig();
        if (config.isEnabled()) {
            if (RECEIVE_UNFOLD_EVENTS_FROM_SYSUI.get()) {
            initRemotelyCalculatedUnfoldAnimation(config);
            } else {
                initLocallyCalculatedUnfoldAnimation(config);
            }

        }
    }

    /** Registers hinge angle listener and calculates the animation progress in this process. */
    private void initLocallyCalculatedUnfoldAnimation(UnfoldTransitionConfig config) {
        UnfoldSharedComponent unfoldComponent =
                UnfoldTransitionFactory.createUnfoldSharedComponent(
                        /* context= */ this,
                        config,
                        ProxyScreenStatusProvider.INSTANCE,
                        new DeviceStateManagerFoldProvider(
                                getSystemService(DeviceStateManager.class), /* context= */ this),
                        new ActivityManagerActivityTypeProvider(
                                getSystemService(ActivityManager.class)),
                        getSystemService(SensorManager.class),
                        getMainThreadHandler(),
                        getMainExecutor(),
                        /* backgroundExecutor= */ UI_HELPER_EXECUTOR,
                        /* tracingTagPrefix= */ "launcher",
                        getSystemService(DisplayManager.class)
                );

        mUnfoldTransitionProgressProvider = unfoldComponent.getUnfoldTransitionProvider()
                .orElseThrow(() -> new IllegalStateException(
                        "Trying to create UnfoldTransitionProgressProvider when the "
                                + "transition is disabled"));

        initUnfoldAnimationController(mUnfoldTransitionProgressProvider,
                unfoldComponent.getRotationChangeProvider());
    }

    /** Receives animation progress from sysui process. */
    private void initRemotelyCalculatedUnfoldAnimation(UnfoldTransitionConfig config) {
        RemoteUnfoldSharedComponent unfoldComponent =
+0 −19
Original line number Diff line number Diff line
@@ -116,7 +116,6 @@ import com.android.quickstep.inputconsumers.TaskbarUnstashInputConsumer;
import com.android.quickstep.inputconsumers.TrackpadStatusBarInputConsumer;
import com.android.quickstep.util.ActiveGestureLog;
import com.android.quickstep.util.ActiveGestureLog.CompoundString;
import com.android.quickstep.util.ProxyScreenStatusProvider;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.system.ActivityManagerWrapper;
@@ -300,24 +299,6 @@ public class TouchInteractionService extends Service {
                    tis -> tis.mDeviceState.setDeferredGestureRegion(region)));
        }

        @BinderThread
        @Override
        public void onScreenTurnedOn() {
            MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurnedOn);
        }

        @BinderThread
        @Override
        public void onScreenTurningOn() {
            MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurningOn);
        }

        @BinderThread
        @Override
        public void onScreenTurningOff() {
            MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurningOff);
        }

        @BinderThread
        @Override
        public void enterStageSplitFromRunningApp(boolean leftOrTop) {
+0 −61
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.quickstep.util;

import androidx.annotation.NonNull;

import com.android.systemui.unfold.updates.screen.ScreenStatusProvider;

import java.util.ArrayList;
import java.util.List;

/**
 * Screen status provider implementation that exposes methods to provide screen
 * status updates to listeners. It is used to receive screen turned on event from
 * SystemUI to Launcher.
 */
public class ProxyScreenStatusProvider implements ScreenStatusProvider {

    public static final ProxyScreenStatusProvider INSTANCE = new ProxyScreenStatusProvider();
    private final List<ScreenListener> mListeners = new ArrayList<>();

    /**
     * Called when the screen is on and ready (windows are drawn and screen blocker is removed)
     */
    public void onScreenTurnedOn() {
        mListeners.forEach(ScreenListener::onScreenTurnedOn);
    }

    /** Called when the screen is starting to turn on. */
    public void onScreenTurningOn() {
        mListeners.forEach(ScreenListener::onScreenTurningOn);
    }

    /** Called when the screen is starting to turn off. */
    public void onScreenTurningOff() {
        mListeners.forEach(ScreenListener::onScreenTurningOff);
    }

    @Override
    public void addCallback(@NonNull ScreenListener listener) {
        mListeners.add(listener);
    }

    @Override
    public void removeCallback(@NonNull ScreenListener listener) {
        mListeners.remove(listener);
    }
}
+0 −5
Original line number Diff line number Diff line
@@ -297,11 +297,6 @@ public final class FeatureFlags {
            "ENABLE_APP_ICON_IN_INLINE_SHORTCUTS", DISABLED, "Show app icon for inline shortcut");

    // TODO(Block 22): Clean up flags
    public static final BooleanFlag RECEIVE_UNFOLD_EVENTS_FROM_SYSUI = getDebugFlag(270397209,
            "RECEIVE_UNFOLD_EVENTS_FROM_SYSUI", ENABLED,
            "Enables receiving unfold animation events from sysui instead of calculating "
                    + "them in launcher process using hinge sensor values.");

    public static final BooleanFlag ENABLE_WIDGET_TRANSITION_FOR_RESIZING = getDebugFlag(268553314,
            "ENABLE_WIDGET_TRANSITION_FOR_RESIZING", DISABLED,
            "Enable widget transition animation when resizing the widgets");