From 16e04e84eb49af21d6673abc1b1365ddcc8d90f6 Mon Sep 17 00:00:00 2001 From: Sukesh Ram Date: Fri, 14 Mar 2025 04:20:30 -0700 Subject: [PATCH] [CD Taskbar] Move DisplayController method calls to BaseTaskbarContext To ensure consistent, controllable Taskbar in Connected Displays Behavior, move all independent calls to the singleton DisplayController's various methods into one place in BaseTaskbarContext, where we have access to the parent context and can override default behaviors of these methods throughout taskbar if in external display. Flag: EXEMPT not adding new behavior Bug: 401553128 Test: m Change-Id: If9efc0cfc18bac3ee75bb64bf5280ea979d1faa2 --- .../launcher3/taskbar/BaseTaskbarContext.java | 46 +++++++++++++++---- .../taskbar/LauncherTaskbarUIController.java | 3 +- .../taskbar/TaskbarActivityContext.java | 45 ++++++++++++++---- .../taskbar/TaskbarDesktopModeController.kt | 6 +-- .../taskbar/TaskbarEduTooltipController.kt | 3 +- .../taskbar/TaskbarInsetsController.kt | 3 +- .../TaskbarLauncherStateController.java | 27 +++++------ .../launcher3/taskbar/TaskbarManager.java | 2 +- .../taskbar/TaskbarStashController.java | 9 ++-- .../taskbar/TaskbarViewCallbacks.java | 8 ++-- .../taskbar/TaskbarViewController.java | 5 +- .../overlay/TaskbarOverlayContext.java | 36 +++++++++++++++ 12 files changed, 138 insertions(+), 55 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/BaseTaskbarContext.java b/quickstep/src/com/android/launcher3/taskbar/BaseTaskbarContext.java index aa3feb7614..b82e6edd7c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/BaseTaskbarContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/BaseTaskbarContext.java @@ -23,7 +23,7 @@ import android.view.LayoutInflater; import com.android.launcher3.popup.SystemShortcut; import com.android.launcher3.util.BaseContext; -import com.android.launcher3.util.DisplayController; +import com.android.launcher3.util.NavigationMode; import com.android.launcher3.util.Themes; import com.android.quickstep.SystemUiProxy; @@ -33,21 +33,49 @@ public abstract class BaseTaskbarContext extends BaseContext implements SystemShortcut.BubbleActivityStarter { protected final LayoutInflater mLayoutInflater; - private final boolean mIsPrimaryDisplay; public BaseTaskbarContext(Context windowContext, boolean isPrimaryDisplay) { super(windowContext, Themes.getActivityThemeRes(windowContext)); mLayoutInflater = LayoutInflater.from(this).cloneInContext(this); - mIsPrimaryDisplay = isPrimaryDisplay; } - public boolean isTransientTaskbar() { - return DisplayController.isTransientTaskbar(this) && mIsPrimaryDisplay; - } + /** + * Returns whether taskbar is transient or persistent. External displays will be persistent. + * + * @return {@code true} if transient, {@code false} if persistent. + */ + public abstract boolean isTransientTaskbar(); - public boolean isPrimaryDisplay() { - return mIsPrimaryDisplay; - } + /** + * Returns whether the taskbar is pinned in gesture navigation mode. + */ + public abstract boolean isPinnedTaskbar(); + + /** + * Returns the current navigation mode. External displays will be in THREE_BUTTONS mode. + */ + public abstract NavigationMode getNavigationMode(); + + /** + * Returns whether the taskbar is in desktop mode. + */ + public abstract boolean isInDesktopMode(); + + /** + * Returns whether the taskbar is forced to be pinned when home is visible. + */ + public abstract boolean showLockedTaskbarOnHome(); + + /** + * Returns whether desktop taskbar (pinned taskbar that shows desktop tasks) is to be used on + * the display because the display is a freeform display. + */ + public abstract boolean showDesktopTaskbarForFreeformDisplay(); + + /** + * Returns whether the taskbar is displayed on primary or external display. + */ + public abstract boolean isPrimaryDisplay(); @Override public final LayoutInflater getLayoutInflater() { diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 6e210e337d..913035ae21 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -223,7 +223,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController { if (!Flags.predictiveBackToHomePolish()) { shouldOverrideToFastAnimation |= mLauncher.getPredictiveBackToHomeInProgress(); } - boolean isPinnedTaskbar = DisplayController.isPinnedTaskbar(mLauncher); + boolean isPinnedTaskbar = + mControllers.taskbarActivityContext.isPinnedTaskbar(); if (isVisible || isPinnedTaskbar) { return getTaskbarToHomeDuration(shouldOverrideToFastAnimation, isPinnedTaskbar); } else { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index e41b2d2748..ce92d9401d 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -405,9 +405,41 @@ public class TaskbarActivityContext extends BaseTaskbarContext { dispatchDeviceProfileChanged(); } - /** Returns whether current taskbar is transient. */ + @Override public boolean isTransientTaskbar() { - return super.isTransientTaskbar() && !isPhoneMode(); + return DisplayController.isTransientTaskbar(this) && mIsPrimaryDisplay && !isPhoneMode(); + } + + @Override + public boolean isPinnedTaskbar() { + return DisplayController.isPinnedTaskbar(this); + } + + @Override + public NavigationMode getNavigationMode() { + return isPrimaryDisplay() ? DisplayController.getNavigationMode(this) + : NavigationMode.THREE_BUTTONS; + } + + @Override + public boolean isInDesktopMode() { + return mControllers != null + && mControllers.taskbarDesktopModeController.isInDesktopMode(getDisplayId()); + } + + @Override + public boolean showLockedTaskbarOnHome() { + return DisplayController.showLockedTaskbarOnHome(this); + } + + @Override + public boolean showDesktopTaskbarForFreeformDisplay() { + return DisplayController.showDesktopTaskbarForFreeformDisplay(this); + } + + @Override + public boolean isPrimaryDisplay() { + return mIsPrimaryDisplay; } /** @@ -443,9 +475,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { .setIsTransientTaskbar(true) .build(); } - mNavMode = (DesktopExperienceFlags.ENABLE_TASKBAR_CONNECTED_DISPLAYS.isTrue() - && !mIsPrimaryDisplay) ? NavigationMode.THREE_BUTTONS - : DisplayController.getNavigationMode(this); + mNavMode = getNavigationMode(); } /** Called when the visibility of the bubble bar changed. */ @@ -1338,11 +1368,6 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mControllers.uiController.startSplitSelection(splitSelectSource); } - boolean isInDesktopMode() { - return mControllers != null - && mControllers.taskbarDesktopModeController.isInDesktopMode(getDisplayId()); - } - protected void onTaskbarIconClicked(View view) { TaskbarUIController taskbarUIController = mControllers.uiController; RecentsView recents = taskbarUIController.getRecentsView(); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDesktopModeController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarDesktopModeController.kt index ca8e4cad9f..c8392a8639 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDesktopModeController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDesktopModeController.kt @@ -20,7 +20,6 @@ import android.content.Context import com.android.launcher3.statehandlers.DesktopVisibilityController import com.android.launcher3.statehandlers.DesktopVisibilityController.TaskbarDesktopModeListener import com.android.launcher3.taskbar.TaskbarBackgroundRenderer.Companion.MAX_ROUNDNESS -import com.android.launcher3.util.DisplayController /** Handles Taskbar in Desktop Windowing mode. */ class TaskbarDesktopModeController( @@ -52,9 +51,10 @@ class TaskbarDesktopModeController( } fun shouldShowDesktopTasksInTaskbar(): Boolean { + val activityContext = taskbarControllers.taskbarActivityContext return isInDesktopMode(context.displayId) || - DisplayController.showDesktopTaskbarForFreeformDisplay(context) || - (DisplayController.showLockedTaskbarOnHome(context) && + activityContext.showDesktopTaskbarForFreeformDisplay() || + (activityContext.showLockedTaskbarOnHome() && taskbarControllers.taskbarStashController.isOnHome) } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt index 7a23006b4f..038e374a64 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt @@ -44,7 +44,6 @@ import com.android.launcher3.Utilities import com.android.launcher3.config.FeatureFlags.enableTaskbarPinning import com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_EDU_OPEN import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController -import com.android.launcher3.util.DisplayController import com.android.launcher3.util.OnboardingPrefs.TASKBAR_EDU_TOOLTIP_STEP import com.android.launcher3.util.OnboardingPrefs.TASKBAR_SEARCH_EDU_SEEN import com.android.launcher3.util.ResourceBasedOverride @@ -319,7 +318,7 @@ open class TaskbarEduTooltipController(context: Context) : fun maybeShowSearchEdu() { if ( !enableTaskbarPinning() || - !DisplayController.isPinnedTaskbar(activityContext) || + !activityContext.isPinnedTaskbar || !isTooltipEnabled || !shouldShowSearchEdu || userHasSeenSearchEdu || diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt index 3af2ab6d3c..f342fa52b3 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt @@ -51,7 +51,6 @@ import com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATI import com.android.launcher3.config.FeatureFlags.enableTaskbarNoRecreate import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController import com.android.launcher3.testing.shared.ResourceUtils -import com.android.launcher3.util.DisplayController import com.android.launcher3.util.Executors import java.io.PrintWriter import kotlin.jvm.optionals.getOrNull @@ -150,7 +149,7 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas if ( taskbarStashController.isInApp || controllers.uiController.isInOverviewUi || - DisplayController.showLockedTaskbarOnHome(context) + context.showLockedTaskbarOnHome() ) { // only add the taskbar touch region if not on home val bottom = windowLayoutParams.height diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index b510e7ebb5..98415d1a71 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -40,7 +40,6 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; -import android.content.Context; import android.os.SystemClock; import android.util.Log; import android.view.animation.Interpolator; @@ -61,7 +60,6 @@ import com.android.launcher3.anim.AnimatorListeners; import com.android.launcher3.statemanager.StateManager; import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.BubbleLauncherState; import com.android.launcher3.uioverrides.QuickstepLauncher; -import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; import com.android.quickstep.RecentsAnimationCallbacks; import com.android.quickstep.RecentsAnimationController; @@ -225,11 +223,9 @@ public class TaskbarLauncherStateController { updateStateForFlag(FLAG_LAUNCHER_IN_STATE_TRANSITION, true); if (!mShouldDelayLauncherStateAnim) { if (toState == LauncherState.NORMAL) { + TaskbarActivityContext activity = mControllers.taskbarActivityContext; boolean isPinnedTaskbarAndNotInDesktopMode = - DisplayController.isPinnedTaskbar( - mControllers.taskbarActivityContext) - && !DisplayController.isInDesktopMode( - mControllers.taskbarActivityContext); + !activity.isInDesktopMode() && activity.isPinnedTaskbar(); applyState(QuickstepTransitionManager.getTaskbarToHomeDuration( isPinnedTaskbarAndNotInDesktopMode)); } else { @@ -475,8 +471,8 @@ public class TaskbarLauncherStateController { final boolean isIconAlignedWithHotseat = isIconAlignedWithHotseat(); final float toAlignment = isIconAlignedWithHotseat ? 1 : 0; boolean handleOpenFloatingViews = false; - boolean isPinnedTaskbar = DisplayController.isPinnedTaskbar( - mControllers.taskbarActivityContext); + boolean isPinnedTaskbar = + mControllers.taskbarActivityContext.isPinnedTaskbar(); if (DEBUG) { Log.d(TAG, "onStateChangeApplied - isInLauncher: " + isInLauncher + ", mLauncherState: " + mLauncherState @@ -590,7 +586,8 @@ public class TaskbarLauncherStateController { float backgroundAlpha = isInLauncher && isTaskbarAlignedWithHotseat() ? 0 : 1; AnimatedFloat taskbarBgOffset = mControllers.taskbarDragLayerController.getTaskbarBackgroundOffset(); - boolean showTaskbar = shouldShowTaskbar(mLauncher, isInLauncher, isInOverview); + boolean showTaskbar = shouldShowTaskbar(mControllers.taskbarActivityContext, isInLauncher, + isInOverview); float taskbarBgOffsetEnd = showTaskbar ? 0f : 1f; float taskbarBgOffsetStart = showTaskbar ? 1f : 0f; @@ -727,13 +724,13 @@ public class TaskbarLauncherStateController { return animatorSet; } - private static boolean shouldShowTaskbar(Context context, boolean isInLauncher, - boolean isInOverview) { - if (DisplayController.showDesktopTaskbarForFreeformDisplay(context)) { + private static boolean shouldShowTaskbar(TaskbarActivityContext activityContext, + boolean isInLauncher, boolean isInOverview) { + if (activityContext.showDesktopTaskbarForFreeformDisplay()) { return true; } - if (DisplayController.showLockedTaskbarOnHome(context) && isInLauncher) { + if (activityContext.showLockedTaskbarOnHome() && isInLauncher) { return true; } return !isInLauncher || isInOverview; @@ -788,11 +785,11 @@ public class TaskbarLauncherStateController { * This refers to the intended state - a transition to this state might be in progress. */ public boolean isTaskbarAlignedWithHotseat() { - if (DisplayController.showDesktopTaskbarForFreeformDisplay(mLauncher)) { + if (mControllers.taskbarActivityContext.showDesktopTaskbarForFreeformDisplay()) { return false; } - if (DisplayController.showLockedTaskbarOnHome(mLauncher) && isInLauncher()) { + if (mControllers.taskbarActivityContext.showLockedTaskbarOnHome() && isInLauncher()) { return false; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index b5e271d07f..1521715ce0 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -227,7 +227,7 @@ public class TaskbarManager { } // Only Handles Special Exit Cases for Desktop Mode Taskbar Recreation. if (taskbarActivityContext != null - && !DisplayController.showLockedTaskbarOnHome(context)) { + && !taskbarActivityContext.showLockedTaskbarOnHome()) { recreateTaskbars(); } } else { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index ad59c2e9d7..c89042d98c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -65,7 +65,6 @@ import com.android.launcher3.R; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.anim.AnimationSuccessListener; import com.android.launcher3.anim.AnimatorListeners; -import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.util.SystemUiFlagUtils; @@ -306,8 +305,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba // TODO(b/390665752): Feature to "lock" pinned taskbar to home screen will be superseded by // pinning, in other launcher states, at which point this variable can be removed. mInAppStateAffectsDesktopTasksVisibilityInTaskbar = - !DisplayController.showDesktopTaskbarForFreeformDisplay(mActivity) - && DisplayController.showLockedTaskbarOnHome(mActivity); + !mActivity.showDesktopTaskbarForFreeformDisplay() + && mActivity.showLockedTaskbarOnHome(); mTaskbarBackgroundDuration = activity.getResources().getInteger( R.integer.taskbar_background_duration); @@ -412,7 +411,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * Returns how long the stash/unstash animation should play. */ public long getStashDuration() { - if (DisplayController.isPinnedTaskbar(mActivity)) { + if (mActivity.isPinnedTaskbar()) { return PINNED_TASKBAR_TRANSITION_DURATION; } return mActivity.isTransientTaskbar() ? TRANSIENT_TASKBAR_STASH_DURATION @@ -1182,7 +1181,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba } // Do not stash if pinned taskbar, hardware keyboard is attached and no IME is docked - if (mActivity.isHardwareKeyboard() && DisplayController.isPinnedTaskbar(mActivity) + if (mActivity.isHardwareKeyboard() && mActivity.isPinnedTaskbar() && !mActivity.isImeDocked()) { return false; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java index dcb9fbff42..d0886e0ca1 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java @@ -36,7 +36,6 @@ import androidx.annotation.Nullable; import com.android.internal.jank.Cuj; import com.android.launcher3.taskbar.bubbles.BubbleBarViewController; -import com.android.launcher3.util.DisplayController; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.wm.shell.shared.bubbles.BubbleBarLocation; @@ -67,8 +66,8 @@ public class TaskbarViewCallbacks { InteractionJankMonitorWrapper.begin(v, Cuj.CUJ_LAUNCHER_OPEN_ALL_APPS, /* tag= */ "TASKBAR_BUTTON"); mActivity.getStatsLogManager().logger().log(LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP); - if (DisplayController.showLockedTaskbarOnHome(mActivity) - || DisplayController.showDesktopTaskbarForFreeformDisplay(mActivity)) { + if (mActivity.showLockedTaskbarOnHome() + || mActivity.showDesktopTaskbarForFreeformDisplay()) { // If the taskbar can be shown on the home screen, use mAllAppsToggler to toggle all // apps, which will toggle the launcher activity all apps when on home screen. // TODO(b/395913143): Reconsider this if a gap in taskbar all apps functionality that @@ -248,8 +247,7 @@ public class TaskbarViewCallbacks { /** Returns true if the taskbar pinning popup view was shown for {@code event}. */ private boolean maybeShowPinningView(@NonNull MotionEvent event) { - if (!DisplayController.isPinnedTaskbar(mActivity) || mTaskbarView.isEventOverAnyItem( - event)) { + if (!mActivity.isPinnedTaskbar() || mTaskbarView.isEventOverAnyItem(event)) { return false; } mControllers.taskbarPinningController.showPinningView(mTaskbarView, event.getRawX()); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index 6786aed445..9d27f61b41 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -86,7 +86,6 @@ import com.android.launcher3.taskbar.bubbles.BubbleBarController; import com.android.launcher3.taskbar.bubbles.BubbleControllers; import com.android.launcher3.taskbar.customization.TaskbarAllAppsButtonContainer; import com.android.launcher3.taskbar.customization.TaskbarDividerContainer; -import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.ItemInfoMatcher; import com.android.launcher3.util.LauncherBindableItemsContainer; import com.android.launcher3.util.MultiPropertyFactory; @@ -930,7 +929,9 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private AnimatorPlaybackController createIconAlignmentController(DeviceProfile launcherDp) { PendingAnimation setter = new PendingAnimation(100); // icon alignment not needed for pinned taskbar. - if (DisplayController.isPinnedTaskbar(mActivity)) return setter.createPlaybackController(); + if (mActivity.isPinnedTaskbar()) { + return setter.createPlaybackController(); + } mOnControllerPreCreateCallback.run(); DeviceProfile taskbarDp = mActivity.getDeviceProfile(); Rect hotseatPadding = launcherDp.getHotseatLayoutPadding(mActivity); diff --git a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java index dd91d17c29..8574b89ecb 100644 --- a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java @@ -31,6 +31,7 @@ import com.android.launcher3.taskbar.TaskbarDragController; import com.android.launcher3.taskbar.TaskbarUIController; import com.android.launcher3.taskbar.allapps.TaskbarAllAppsContainerView; import com.android.launcher3.taskbar.allapps.TaskbarSearchSessionController; +import com.android.launcher3.util.NavigationMode; import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource; /** @@ -141,6 +142,41 @@ public class TaskbarOverlayContext extends BaseTaskbarContext { mUiController.startSplitSelection(splitSelectSource); } + @Override + public boolean isTransientTaskbar() { + return mTaskbarContext.isTransientTaskbar(); + } + + @Override + public boolean isPinnedTaskbar() { + return mTaskbarContext.isPinnedTaskbar(); + } + + @Override + public NavigationMode getNavigationMode() { + return mTaskbarContext.getNavigationMode(); + } + + @Override + public boolean isInDesktopMode() { + return mTaskbarContext.isInDesktopMode(); + } + + @Override + public boolean showLockedTaskbarOnHome() { + return mTaskbarContext.showLockedTaskbarOnHome(); + } + + @Override + public boolean showDesktopTaskbarForFreeformDisplay() { + return mTaskbarContext.showDesktopTaskbarForFreeformDisplay(); + } + + @Override + public boolean isPrimaryDisplay() { + return mTaskbarContext.isPrimaryDisplay(); + } + @Override public void onDragStart() {}