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

Commit 67914aff authored by Sunny Goyal's avatar Sunny Goyal Committed by Android (Google) Code Review
Browse files

Merge changes from topic "revert-14664190-JGHJCCJYPM" into sc-dev

* changes:
  Initiate taskbar only after the user is unlocked
  Revert "Revert "Renaming TaskbarController to LauncherTaskbarUIC..."
  Revert^2 "Moving taskbar lifecycle to TouchInteractionService"
parents 260c38c4 301eaf2b
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -22,10 +22,30 @@

    <com.android.launcher3.taskbar.TaskbarView
        android:id="@+id/taskbar_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:forceHasOverlappingRendering="false"
        android:layout_gravity="bottom" >

        <LinearLayout
            android:id="@+id/system_button_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="@dimen/taskbar_nav_buttons_spacing"
            android:paddingRight="@dimen/taskbar_nav_buttons_spacing"
            android:forceHasOverlappingRendering="false"
            android:gravity="center" />

        <LinearLayout
            android:id="@+id/hotseat_icons_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:forceHasOverlappingRendering="false"
            android:gravity="center" />

    </com.android.launcher3.taskbar.TaskbarView>

    <com.android.launcher3.taskbar.ImeBarView
        android:id="@+id/ime_bar_view"
        android:layout_width="wrap_content"
+0 −26
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- 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.
-->

<com.android.launcher3.taskbar.TaskbarView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/taskbar_view"
    android:layout_width="match_parent"
    android:layout_height="@dimen/taskbar_size"
    android:background="@android:color/transparent"
    android:layout_gravity="bottom"
    android:gravity="center"
    android:visibility="gone" />
+1 −0
Original line number Diff line number Diff line
@@ -149,4 +149,5 @@
    <!-- Note that this applies to both sides of all icons, so visible space is double this. -->
    <dimen name="taskbar_icon_spacing">8dp</dimen>
    <dimen name="taskbar_folder_margin">16dp</dimen>
    <dimen name="taskbar_nav_buttons_spacing">16dp</dimen>
</resources>
+31 −75
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static com.android.launcher3.LauncherState.FLAG_HIDE_BACK_BUTTON;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.NO_OFFSET;
import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID;
import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.quickstep.SysUINavigationMode.Mode.TWO_BUTTONS;
import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
@@ -31,7 +30,6 @@ import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.app.ActivityOptions;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
import android.content.ServiceConnection;
@@ -52,13 +50,11 @@ import com.android.launcher3.proxy.StartActivityParams;
import com.android.launcher3.statehandlers.BackButtonAlphaHandler;
import com.android.launcher3.statehandlers.DepthController;
import com.android.launcher3.statemanager.StateManager.StateHandler;
import com.android.launcher3.taskbar.TaskbarActivityContext;
import com.android.launcher3.taskbar.TaskbarController;
import com.android.launcher3.taskbar.LauncherTaskbarUIController;
import com.android.launcher3.taskbar.TaskbarManager;
import com.android.launcher3.taskbar.TaskbarStateHandler;
import com.android.launcher3.taskbar.TaskbarView;
import com.android.launcher3.uioverrides.RecentsViewStateController;
import com.android.launcher3.util.ActivityOptionsWrapper;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.ObjectWrapper;
import com.android.launcher3.util.UiThreadHelper;
import com.android.quickstep.RecentsModel;
@@ -68,6 +64,7 @@ import com.android.quickstep.SysUINavigationMode.NavigationModeChangeListener;
import com.android.quickstep.SystemUiProxy;
import com.android.quickstep.TaskUtils;
import com.android.quickstep.TouchInteractionService;
import com.android.quickstep.TouchInteractionService.TISBinder;
import com.android.quickstep.util.RemoteAnimationProvider;
import com.android.quickstep.util.RemoteFadeOutAnimationListener;
import com.android.quickstep.util.SplitSelectStateController;
@@ -89,8 +86,6 @@ public abstract class BaseQuickstepLauncher extends Launcher

    private DepthController mDepthController = new DepthController(this);
    private QuickstepTransitionManager mAppTransitionManager;
    private ServiceConnection mTisBinderConnection;
    protected TouchInteractionService.TISBinder mTisBinder;

    /**
     * Reusable command for applying the back button alpha on the background thread.
@@ -101,8 +96,20 @@ public abstract class BaseQuickstepLauncher extends Launcher

    private OverviewActionsView mActionsView;

    private @Nullable TaskbarController mTaskbarController;
    private @Nullable TaskbarManager mTaskbarManager;
    private @Nullable LauncherTaskbarUIController mTaskbarUIController;
    private final ServiceConnection mTisBinderConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            mTaskbarManager = ((TISBinder) iBinder).getTaskbarManager();
            mTaskbarManager.setLauncher(BaseQuickstepLauncher.this);
        }

        @Override
        public void onServiceDisconnected(ComponentName componentName) { }
    };
    private final TaskbarStateHandler mTaskbarStateHandler = new TaskbarStateHandler(this);

    // Will be updated when dragging from taskbar.
    private @Nullable DragOptions mNextWorkspaceDragOptions = null;
    private SplitPlaceholderView mSplitPlaceholderView;
@@ -112,24 +119,6 @@ public abstract class BaseQuickstepLauncher extends Launcher
        super.onCreate(savedInstanceState);
        SysUINavigationMode.INSTANCE.get(this).addModeChangeListener(this);
        addMultiWindowModeChangedListener(mDepthController);
        setupTouchInteractionServiceBinder();
    }

    private void setupTouchInteractionServiceBinder() {
        Intent intent = new Intent(this, TouchInteractionService.class);
        mTisBinderConnection = new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName componentName, IBinder binder) {
                mTisBinder = ((TouchInteractionService.TISBinder) binder);
                mTisBinder.setTaskbarOverviewProxyDelegate(mTaskbarController);
            }

            @Override
            public void onServiceDisconnected(ComponentName componentName) {
                mTisBinder = null;
            }
        };
        bindService(intent, mTisBinderConnection, 0);
    }

    @Override
@@ -137,15 +126,12 @@ public abstract class BaseQuickstepLauncher extends Launcher
        mAppTransitionManager.onActivityDestroyed();

        SysUINavigationMode.INSTANCE.get(this).removeModeChangeListener(this);
        if (mTaskbarController != null) {
            mTaskbarController.cleanup();
            mTaskbarController = null;
            if (mTisBinder != null) {
                mTisBinder.setTaskbarOverviewProxyDelegate(null);


        unbindService(mTisBinderConnection);
        if (mTaskbarManager != null) {
            mTaskbarManager.setLauncher(null);
        }
        }

        super.onDestroy();
    }

@@ -272,37 +258,12 @@ public abstract class BaseQuickstepLauncher extends Launcher
        mAppTransitionManager = new QuickstepTransitionManager(this);
        mAppTransitionManager.registerRemoteAnimations();

        addTaskbarIfNecessary();
        addOnDeviceProfileChangeListener(newDp -> addTaskbarIfNecessary());
    }
        bindService(new Intent(this, TouchInteractionService.class), mTisBinderConnection, 0);

    @Override
    public void onDisplayInfoChanged(Context context, DisplayController.Info info,
            int flags) {
        super.onDisplayInfoChanged(context, info, flags);
        if ((flags & CHANGE_ACTIVE_SCREEN) != 0) {
            addTaskbarIfNecessary();
        }
    }

    private void addTaskbarIfNecessary() {
        if (mTaskbarController != null) {
            mTaskbarController.cleanup();
            if (mTisBinder != null) {
                mTisBinder.setTaskbarOverviewProxyDelegate(null);
            }
            mTaskbarController = null;
        }
        if (mDeviceProfile.isTaskbarPresent) {
            TaskbarView taskbarViewOnHome = (TaskbarView) mHotseat.getTaskbarView();
            TaskbarActivityContext taskbarActivityContext = new TaskbarActivityContext(this);
            mTaskbarController = new TaskbarController(this,
                    taskbarActivityContext.getTaskbarContainerView(), taskbarViewOnHome);
            mTaskbarController.init();
            if (mTisBinder != null) {
                mTisBinder.setTaskbarOverviewProxyDelegate(mTaskbarController);
            }
        }
    public void setTaskbarUIController(LauncherTaskbarUIController taskbarUIController) {
        mTaskbarUIController = taskbarUIController;
    }

    public <T extends OverviewActionsView> T getActionsView() {
@@ -332,8 +293,8 @@ public abstract class BaseQuickstepLauncher extends Launcher
        return mDepthController;
    }

    public @Nullable TaskbarController getTaskbarController() {
        return mTaskbarController;
    public @Nullable LauncherTaskbarUIController getTaskbarUIController() {
        return mTaskbarUIController;
    }

    public TaskbarStateHandler getTaskbarStateHandler() {
@@ -341,14 +302,9 @@ public abstract class BaseQuickstepLauncher extends Launcher
    }

    @Override
    public boolean isViewInTaskbar(View v) {
        return mTaskbarController != null && mTaskbarController.isViewInTaskbar(v);
    }

    public boolean supportsAdaptiveIconAnimation(View clickedView) {
        return mAppTransitionManager.hasControlRemoteAppTransitionPermission()
                && FeatureFlags.ADAPTIVE_ICON_WINDOW_ANIM.get()
                && !isViewInTaskbar(clickedView);
                && FeatureFlags.ADAPTIVE_ICON_WINDOW_ANIM.get();
    }

    @Override
@@ -394,8 +350,8 @@ public abstract class BaseQuickstepLauncher extends Launcher

    @Override
    public float getNormalTaskbarScale() {
        if (mTaskbarController != null) {
            return mTaskbarController.getTaskbarScaleOnHome();
        if (mTaskbarUIController != null) {
            return mTaskbarUIController.getTaskbarScaleOnHome();
        }
        return super.getNormalTaskbarScale();
    }
@@ -417,8 +373,8 @@ public abstract class BaseQuickstepLauncher extends Launcher
        }

        if ((changeBits & ACTIVITY_STATE_RESUMED) != 0) {
            if (mTaskbarController != null) {
                mTaskbarController.onLauncherResumedOrPaused(hasBeenResumed());
            if (mTaskbarUIController != null) {
                mTaskbarUIController.onLauncherResumedOrPaused(hasBeenResumed());
            }
        }

+0 −3
Original line number Diff line number Diff line
@@ -1252,7 +1252,6 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener

            final boolean launchingFromWidget = mV instanceof LauncherAppWidgetHostView;
            final boolean launchingFromRecents = isLaunchingFromRecents(mV, appTargets);
            final boolean launchingFromTaskbar = mLauncher.isViewInTaskbar(mV);
            if (launchingFromWidget) {
                composeWidgetLaunchAnimator(anim, (LauncherAppWidgetHostView) mV, appTargets,
                        wallpaperTargets, nonAppTargets);
@@ -1263,8 +1262,6 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
                        launcherClosing);
                addCujInstrumentation(
                        anim, InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_RECENTS);
            } else if (launchingFromTaskbar) {
                // TODO
            } else {
                composeIconLaunchAnimator(anim, mV, appTargets, wallpaperTargets, nonAppTargets,
                        launcherClosing);
Loading