Loading quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +8 −81 Original line number Diff line number Diff line Loading @@ -31,19 +31,14 @@ import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SY 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; import android.graphics.Insets; import android.hardware.SensorManager; import android.hardware.devicestate.DeviceStateManager; import android.os.Bundle; import android.os.CancellationSignal; import android.os.Handler; import android.os.IBinder; import android.util.Log; import android.view.View; import android.view.WindowInsets; import android.window.SplashScreen; Loading Loading @@ -76,13 +71,13 @@ import com.android.quickstep.SysUINavigationMode.Mode; 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.LauncherUnfoldAnimationController; import com.android.quickstep.util.ProxyScreenStatusProvider; import com.android.quickstep.util.RemoteAnimationProvider; import com.android.quickstep.util.RemoteFadeOutAnimationListener; import com.android.quickstep.util.SplitSelectStateController; import com.android.quickstep.util.TISBindHelper; import com.android.quickstep.views.OverviewActionsView; import com.android.quickstep.views.RecentsView; import com.android.systemui.shared.system.ActivityManagerWrapper; Loading @@ -103,11 +98,6 @@ import java.util.stream.Stream; public abstract class BaseQuickstepLauncher extends Launcher implements NavigationModeChangeListener { private static final long BACKOFF_MILLIS = 1000; // Max backoff caps at 5 mins private static final long MAX_BACKOFF_MILLIS = 10 * 60 * 1000; private DepthController mDepthController = new DepthController(this); private QuickstepTransitionManager mAppTransitionManager; Loading @@ -120,45 +110,12 @@ public abstract class BaseQuickstepLauncher extends Launcher private OverviewActionsView mActionsView; private TISBindHelper mTISBindHelper; private @Nullable TaskbarManager mTaskbarManager; private @Nullable OverviewCommandHelper mOverviewCommandHelper; private @Nullable LauncherTaskbarUIController mTaskbarUIController; private final ServiceConnection mTisBinderConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { if (!(iBinder instanceof TISBinder)) { // Seems like there can be a race condition when user unlocks, which kills the TIS // process and re-starts it. I guess in the meantime service can be connected to // a killed TIS? Either way, unbind and try to re-connect in that case. internalUnbindToTIS(); mHandler.postDelayed(mConnectionRunnable, BACKOFF_MILLIS); return; } mTaskbarManager = ((TISBinder) iBinder).getTaskbarManager(); mTaskbarManager.setLauncher(BaseQuickstepLauncher.this); Log.d(TAG, "TIS service connected"); resetServiceBindRetryState(); mOverviewCommandHelper = ((TISBinder) iBinder).getOverviewCommandHelper(); } @Override public void onServiceDisconnected(ComponentName componentName) { } @Override public void onBindingDied(ComponentName name) { Log.w(TAG, "TIS binding died"); internalBindToTIS(); } }; private final Runnable mConnectionRunnable = this::internalBindToTIS; private short mConnectionAttempts; private final TaskbarStateHandler mTaskbarStateHandler = new TaskbarStateHandler(this); private final Handler mHandler = new Handler(); private boolean mTisServiceBound; // Will be updated when dragging from taskbar. private @Nullable DragOptions mNextWorkspaceDragOptions = null; Loading Loading @@ -201,11 +158,10 @@ public abstract class BaseQuickstepLauncher extends Launcher SysUINavigationMode.INSTANCE.get(this).removeModeChangeListener(this); internalUnbindToTIS(); mTISBindHelper.onDestroy(); if (mTaskbarManager != null) { mTaskbarManager.clearLauncher(this); } resetServiceBindRetryState(); if (mLauncherUnfoldAnimationController != null) { mLauncherUnfoldAnimationController.onDestroy(); Loading Loading @@ -357,42 +313,13 @@ public abstract class BaseQuickstepLauncher extends Launcher mAppTransitionManager.registerRemoteAnimations(); mAppTransitionManager.registerRemoteTransitions(); internalBindToTIS(); mTISBindHelper = new TISBindHelper(this, this::onTISConnected); } /** * Binds {@link #mTisBinderConnection} to {@link TouchInteractionService}. If the binding fails, * attempts to retry via {@link #mConnectionRunnable}. * Unbind via {@link #internalUnbindToTIS()} */ private void internalBindToTIS() { mTisServiceBound = bindService(new Intent(this, TouchInteractionService.class), mTisBinderConnection, 0); if (mTisServiceBound) { resetServiceBindRetryState(); return; } Log.w(TAG, "Retrying TIS Binder connection attempt: " + mConnectionAttempts); final long timeoutMs = (long) Math.min( Math.scalb(BACKOFF_MILLIS, mConnectionAttempts), MAX_BACKOFF_MILLIS); mHandler.postDelayed(mConnectionRunnable, timeoutMs); mConnectionAttempts++; } /** See {@link #internalBindToTIS()} */ private void internalUnbindToTIS() { if (mTisServiceBound) { unbindService(mTisBinderConnection); mTisServiceBound = false; } } private void resetServiceBindRetryState() { if (mHandler.hasCallbacks(mConnectionRunnable)) { mHandler.removeCallbacks(mConnectionRunnable); } mConnectionAttempts = 0; private void onTISConnected(TISBinder binder) { mTaskbarManager = binder.getTaskbarManager(); mTaskbarManager.setLauncher(BaseQuickstepLauncher.this); mOverviewCommandHelper = binder.getOverviewCommandHelper(); } private void initUnfoldTransitionProgressProvider() { Loading quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +0 −5 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ import static com.android.launcher3.LauncherState.HOTSEAT_ICONS; import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_STASHED_LAUNCHER_STATE; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_APP_SETUP; import static com.android.launcher3.taskbar.TaskbarStashController.TASKBAR_STASH_DURATION; import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_HOME; Loading Loading @@ -255,10 +254,6 @@ public class LauncherTaskbarUIController extends TaskbarUIController { TaskbarStashController stashController = mControllers.taskbarStashController; stashController.updateStateForFlag(FLAG_IN_APP, !isResumed); if (isResumed) { // Launcher is resumed, meaning setup must be finished. stashController.updateStateForFlag(FLAG_STASHED_IN_APP_SETUP, false); } stashController.applyState(duration); } Loading quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +20 −22 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.graphics.Rect; import android.graphics.Region; import android.graphics.Region.Op; import android.graphics.drawable.AnimatedVectorDrawable; import android.provider.Settings; import android.util.Property; import android.view.Gravity; import android.view.View; Loading @@ -59,7 +58,6 @@ import com.android.launcher3.taskbar.TaskbarNavButtonController.TaskbarButton; import com.android.launcher3.taskbar.contextual.RotationButton; import com.android.launcher3.taskbar.contextual.RotationButtonController; import com.android.launcher3.util.MultiValueAlpha; import com.android.launcher3.util.SettingsCache; import com.android.launcher3.util.Themes; import com.android.quickstep.AnimatedFloat; Loading Loading @@ -118,9 +116,10 @@ public class NavbarButtonsViewController { /** * Initializes the controller */ public void init(TaskbarControllers controllers) { public void init(TaskbarControllers controllers, TaskbarSharedState sharedState) { mControllers = controllers; mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize; parseSystemUiFlags(sharedState.sysuiStateFlags); mA11yLongClickListener = view -> { mControllers.navButtonController.onButtonClick(BUTTON_A11Y_LONG_CLICK); Loading Loading @@ -151,8 +150,7 @@ public class NavbarButtonsViewController { flags -> (flags & FLAG_KEYGUARD_VISIBLE) == 0, AnimatedFloat.VALUE, 1, 0)); // Force nav buttons (specifically back button) to be visible during setup wizard. boolean isInSetup = !SettingsCache.INSTANCE.get(mContext).getValue( Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE), 0); boolean isInSetup = !mContext.isUserSetupComplete(); if (isThreeButtonNav || isInSetup) { initButtons(mNavButtonContainer, mEndContextualContainer, mControllers.navButtonController); Loading Loading @@ -252,23 +250,14 @@ public class NavbarButtonsViewController { mA11yButton.setOnLongClickListener(mA11yLongClickListener); } public void updateStateForSysuiFlags(int systemUiStateFlags, boolean forceUpdate) { boolean isImeVisible = (systemUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0; boolean isImeSwitcherShowing = (systemUiStateFlags & SYSUI_STATE_IME_SWITCHER_SHOWING) != 0; boolean a11yVisible = (systemUiStateFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0; boolean a11yLongClickable = (systemUiStateFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0; boolean isHomeDisabled = (systemUiStateFlags & SYSUI_STATE_HOME_DISABLED) != 0; boolean isRecentsDisabled = (systemUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0; boolean isBackDisabled = (systemUiStateFlags & SYSUI_STATE_BACK_DISABLED) != 0; if (!forceUpdate && systemUiStateFlags == mSysuiStateFlags) { return; } mSysuiStateFlags = systemUiStateFlags; private void parseSystemUiFlags(int sysUiStateFlags) { mSysuiStateFlags = sysUiStateFlags; boolean isImeVisible = (sysUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0; boolean isImeSwitcherShowing = (sysUiStateFlags & SYSUI_STATE_IME_SWITCHER_SHOWING) != 0; boolean a11yVisible = (sysUiStateFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0; boolean isHomeDisabled = (sysUiStateFlags & SYSUI_STATE_HOME_DISABLED) != 0; boolean isRecentsDisabled = (sysUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0; boolean isBackDisabled = (sysUiStateFlags & SYSUI_STATE_BACK_DISABLED) != 0; // TODO(b/202218289) we're getting IME as not visible on lockscreen from system updateStateForFlag(FLAG_IME_VISIBLE, isImeVisible); Loading @@ -280,8 +269,17 @@ public class NavbarButtonsViewController { if (mA11yButton != null) { // Only used in 3 button boolean a11yLongClickable = (sysUiStateFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0; mA11yButton.setLongClickable(a11yLongClickable); } } public void updateStateForSysuiFlags(int systemUiStateFlags) { if (systemUiStateFlags == mSysuiStateFlags) { return; } parseSystemUiFlags(systemUiStateFlags); applyState(); } Loading quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +20 −5 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.os.Process; import android.os.SystemProperties; import android.provider.Settings; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.Display; Loading @@ -61,6 +62,7 @@ import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.taskbar.contextual.RotationButtonController; import com.android.launcher3.touch.ItemClickHandler; import com.android.launcher3.util.PackageManagerHelper; import com.android.launcher3.util.SettingsCache; import com.android.launcher3.util.Themes; import com.android.launcher3.util.TraceHelper; import com.android.launcher3.util.ViewCache; Loading Loading @@ -102,6 +104,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ private final ViewCache mViewCache = new ViewCache(); private final boolean mIsSafeModeEnabled; private final boolean mIsUserSetupComplete; private boolean mIsDestroyed = false; public TaskbarActivityContext(Context windowContext, DeviceProfile dp, Loading @@ -113,6 +116,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mNavMode = SysUINavigationMode.getMode(windowContext); mIsSafeModeEnabled = TraceHelper.allowIpcs("isSafeMode", () -> getPackageManager().isSafeMode()); mIsUserSetupComplete = SettingsCache.INSTANCE.get(this).getValue( Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE), 0); float taskbarIconSize = getResources().getDimension(R.dimen.taskbar_icon_size); mDeviceProfile.updateIconSize(1, getResources()); Loading Loading @@ -155,7 +160,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ new TaskbarEduController(this)); } public void init() { public void init(TaskbarSharedState sharedState) { mLastRequestedNonFullscreenHeight = getDefaultTaskbarWindowHeight(); mWindowLayoutParams = new WindowManager.LayoutParams( MATCH_PARENT, Loading Loading @@ -184,7 +189,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ getDefaultTaskbarWindowHeight() - mDeviceProfile.taskbarSize, 0, 0); // Initialize controllers after all are constructed. mControllers.init(); mControllers.init(sharedState); mWindowManager.addView(mDragLayer, mWindowLayoutParams); } Loading Loading @@ -302,6 +307,13 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mControllers.uiController.init(mControllers); } /** * Sets the flag indicating setup UI is visible */ public void setSetupUIVisible(boolean isVisible) { mControllers.taskbarStashController.setSetupUIVisible(isVisible); } /** * Called when this instance of taskbar is no longer needed */ Loading @@ -312,9 +324,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mWindowManager.removeViewImmediate(mDragLayer); } public void updateSysuiStateFlags(int systemUiStateFlags, boolean forceUpdate) { mControllers.navbarButtonsViewController.updateStateForSysuiFlags( systemUiStateFlags, forceUpdate); public void updateSysuiStateFlags(int systemUiStateFlags) { mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags); mControllers.taskbarViewController.setImeIsVisible( mControllers.navbarButtonsViewController.isImeVisible()); boolean panelExpanded = (systemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) != 0; Loading Loading @@ -467,4 +478,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ public void startTaskbarUnstashHint(boolean animateForward) { mControllers.taskbarStashController.startUnstashHint(animateForward); } protected boolean isUserSetupComplete() { return mIsUserSetupComplete; } } quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java +3 −3 Original line number Diff line number Diff line Loading @@ -74,8 +74,8 @@ public class TaskbarControllers { * TaskbarControllers instance, but should be careful to only access things that were created * in constructors for now, as some controllers may still be waiting for init(). */ public void init() { navbarButtonsViewController.init(this); public void init(TaskbarSharedState sharedState) { navbarButtonsViewController.init(this, sharedState); if (taskbarActivityContext.isThreeButtonNav()) { rotationButtonController.init(); } Loading @@ -85,7 +85,7 @@ public class TaskbarControllers { taskbarUnfoldAnimationController.init(this); taskbarKeyguardController.init(navbarButtonsViewController); stashedHandleViewController.init(this); taskbarStashController.init(this); taskbarStashController.init(this, sharedState); taskbarEduController.init(this); } Loading Loading
quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +8 −81 Original line number Diff line number Diff line Loading @@ -31,19 +31,14 @@ import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SY 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; import android.graphics.Insets; import android.hardware.SensorManager; import android.hardware.devicestate.DeviceStateManager; import android.os.Bundle; import android.os.CancellationSignal; import android.os.Handler; import android.os.IBinder; import android.util.Log; import android.view.View; import android.view.WindowInsets; import android.window.SplashScreen; Loading Loading @@ -76,13 +71,13 @@ import com.android.quickstep.SysUINavigationMode.Mode; 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.LauncherUnfoldAnimationController; import com.android.quickstep.util.ProxyScreenStatusProvider; import com.android.quickstep.util.RemoteAnimationProvider; import com.android.quickstep.util.RemoteFadeOutAnimationListener; import com.android.quickstep.util.SplitSelectStateController; import com.android.quickstep.util.TISBindHelper; import com.android.quickstep.views.OverviewActionsView; import com.android.quickstep.views.RecentsView; import com.android.systemui.shared.system.ActivityManagerWrapper; Loading @@ -103,11 +98,6 @@ import java.util.stream.Stream; public abstract class BaseQuickstepLauncher extends Launcher implements NavigationModeChangeListener { private static final long BACKOFF_MILLIS = 1000; // Max backoff caps at 5 mins private static final long MAX_BACKOFF_MILLIS = 10 * 60 * 1000; private DepthController mDepthController = new DepthController(this); private QuickstepTransitionManager mAppTransitionManager; Loading @@ -120,45 +110,12 @@ public abstract class BaseQuickstepLauncher extends Launcher private OverviewActionsView mActionsView; private TISBindHelper mTISBindHelper; private @Nullable TaskbarManager mTaskbarManager; private @Nullable OverviewCommandHelper mOverviewCommandHelper; private @Nullable LauncherTaskbarUIController mTaskbarUIController; private final ServiceConnection mTisBinderConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { if (!(iBinder instanceof TISBinder)) { // Seems like there can be a race condition when user unlocks, which kills the TIS // process and re-starts it. I guess in the meantime service can be connected to // a killed TIS? Either way, unbind and try to re-connect in that case. internalUnbindToTIS(); mHandler.postDelayed(mConnectionRunnable, BACKOFF_MILLIS); return; } mTaskbarManager = ((TISBinder) iBinder).getTaskbarManager(); mTaskbarManager.setLauncher(BaseQuickstepLauncher.this); Log.d(TAG, "TIS service connected"); resetServiceBindRetryState(); mOverviewCommandHelper = ((TISBinder) iBinder).getOverviewCommandHelper(); } @Override public void onServiceDisconnected(ComponentName componentName) { } @Override public void onBindingDied(ComponentName name) { Log.w(TAG, "TIS binding died"); internalBindToTIS(); } }; private final Runnable mConnectionRunnable = this::internalBindToTIS; private short mConnectionAttempts; private final TaskbarStateHandler mTaskbarStateHandler = new TaskbarStateHandler(this); private final Handler mHandler = new Handler(); private boolean mTisServiceBound; // Will be updated when dragging from taskbar. private @Nullable DragOptions mNextWorkspaceDragOptions = null; Loading Loading @@ -201,11 +158,10 @@ public abstract class BaseQuickstepLauncher extends Launcher SysUINavigationMode.INSTANCE.get(this).removeModeChangeListener(this); internalUnbindToTIS(); mTISBindHelper.onDestroy(); if (mTaskbarManager != null) { mTaskbarManager.clearLauncher(this); } resetServiceBindRetryState(); if (mLauncherUnfoldAnimationController != null) { mLauncherUnfoldAnimationController.onDestroy(); Loading Loading @@ -357,42 +313,13 @@ public abstract class BaseQuickstepLauncher extends Launcher mAppTransitionManager.registerRemoteAnimations(); mAppTransitionManager.registerRemoteTransitions(); internalBindToTIS(); mTISBindHelper = new TISBindHelper(this, this::onTISConnected); } /** * Binds {@link #mTisBinderConnection} to {@link TouchInteractionService}. If the binding fails, * attempts to retry via {@link #mConnectionRunnable}. * Unbind via {@link #internalUnbindToTIS()} */ private void internalBindToTIS() { mTisServiceBound = bindService(new Intent(this, TouchInteractionService.class), mTisBinderConnection, 0); if (mTisServiceBound) { resetServiceBindRetryState(); return; } Log.w(TAG, "Retrying TIS Binder connection attempt: " + mConnectionAttempts); final long timeoutMs = (long) Math.min( Math.scalb(BACKOFF_MILLIS, mConnectionAttempts), MAX_BACKOFF_MILLIS); mHandler.postDelayed(mConnectionRunnable, timeoutMs); mConnectionAttempts++; } /** See {@link #internalBindToTIS()} */ private void internalUnbindToTIS() { if (mTisServiceBound) { unbindService(mTisBinderConnection); mTisServiceBound = false; } } private void resetServiceBindRetryState() { if (mHandler.hasCallbacks(mConnectionRunnable)) { mHandler.removeCallbacks(mConnectionRunnable); } mConnectionAttempts = 0; private void onTISConnected(TISBinder binder) { mTaskbarManager = binder.getTaskbarManager(); mTaskbarManager.setLauncher(BaseQuickstepLauncher.this); mOverviewCommandHelper = binder.getOverviewCommandHelper(); } private void initUnfoldTransitionProgressProvider() { Loading
quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +0 −5 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ import static com.android.launcher3.LauncherState.HOTSEAT_ICONS; import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_STASHED_LAUNCHER_STATE; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_APP_SETUP; import static com.android.launcher3.taskbar.TaskbarStashController.TASKBAR_STASH_DURATION; import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_HOME; Loading Loading @@ -255,10 +254,6 @@ public class LauncherTaskbarUIController extends TaskbarUIController { TaskbarStashController stashController = mControllers.taskbarStashController; stashController.updateStateForFlag(FLAG_IN_APP, !isResumed); if (isResumed) { // Launcher is resumed, meaning setup must be finished. stashController.updateStateForFlag(FLAG_STASHED_IN_APP_SETUP, false); } stashController.applyState(duration); } Loading
quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +20 −22 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.graphics.Rect; import android.graphics.Region; import android.graphics.Region.Op; import android.graphics.drawable.AnimatedVectorDrawable; import android.provider.Settings; import android.util.Property; import android.view.Gravity; import android.view.View; Loading @@ -59,7 +58,6 @@ import com.android.launcher3.taskbar.TaskbarNavButtonController.TaskbarButton; import com.android.launcher3.taskbar.contextual.RotationButton; import com.android.launcher3.taskbar.contextual.RotationButtonController; import com.android.launcher3.util.MultiValueAlpha; import com.android.launcher3.util.SettingsCache; import com.android.launcher3.util.Themes; import com.android.quickstep.AnimatedFloat; Loading Loading @@ -118,9 +116,10 @@ public class NavbarButtonsViewController { /** * Initializes the controller */ public void init(TaskbarControllers controllers) { public void init(TaskbarControllers controllers, TaskbarSharedState sharedState) { mControllers = controllers; mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize; parseSystemUiFlags(sharedState.sysuiStateFlags); mA11yLongClickListener = view -> { mControllers.navButtonController.onButtonClick(BUTTON_A11Y_LONG_CLICK); Loading Loading @@ -151,8 +150,7 @@ public class NavbarButtonsViewController { flags -> (flags & FLAG_KEYGUARD_VISIBLE) == 0, AnimatedFloat.VALUE, 1, 0)); // Force nav buttons (specifically back button) to be visible during setup wizard. boolean isInSetup = !SettingsCache.INSTANCE.get(mContext).getValue( Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE), 0); boolean isInSetup = !mContext.isUserSetupComplete(); if (isThreeButtonNav || isInSetup) { initButtons(mNavButtonContainer, mEndContextualContainer, mControllers.navButtonController); Loading Loading @@ -252,23 +250,14 @@ public class NavbarButtonsViewController { mA11yButton.setOnLongClickListener(mA11yLongClickListener); } public void updateStateForSysuiFlags(int systemUiStateFlags, boolean forceUpdate) { boolean isImeVisible = (systemUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0; boolean isImeSwitcherShowing = (systemUiStateFlags & SYSUI_STATE_IME_SWITCHER_SHOWING) != 0; boolean a11yVisible = (systemUiStateFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0; boolean a11yLongClickable = (systemUiStateFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0; boolean isHomeDisabled = (systemUiStateFlags & SYSUI_STATE_HOME_DISABLED) != 0; boolean isRecentsDisabled = (systemUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0; boolean isBackDisabled = (systemUiStateFlags & SYSUI_STATE_BACK_DISABLED) != 0; if (!forceUpdate && systemUiStateFlags == mSysuiStateFlags) { return; } mSysuiStateFlags = systemUiStateFlags; private void parseSystemUiFlags(int sysUiStateFlags) { mSysuiStateFlags = sysUiStateFlags; boolean isImeVisible = (sysUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0; boolean isImeSwitcherShowing = (sysUiStateFlags & SYSUI_STATE_IME_SWITCHER_SHOWING) != 0; boolean a11yVisible = (sysUiStateFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0; boolean isHomeDisabled = (sysUiStateFlags & SYSUI_STATE_HOME_DISABLED) != 0; boolean isRecentsDisabled = (sysUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0; boolean isBackDisabled = (sysUiStateFlags & SYSUI_STATE_BACK_DISABLED) != 0; // TODO(b/202218289) we're getting IME as not visible on lockscreen from system updateStateForFlag(FLAG_IME_VISIBLE, isImeVisible); Loading @@ -280,8 +269,17 @@ public class NavbarButtonsViewController { if (mA11yButton != null) { // Only used in 3 button boolean a11yLongClickable = (sysUiStateFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0; mA11yButton.setLongClickable(a11yLongClickable); } } public void updateStateForSysuiFlags(int systemUiStateFlags) { if (systemUiStateFlags == mSysuiStateFlags) { return; } parseSystemUiFlags(systemUiStateFlags); applyState(); } Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +20 −5 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.os.Process; import android.os.SystemProperties; import android.provider.Settings; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.Display; Loading @@ -61,6 +62,7 @@ import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.taskbar.contextual.RotationButtonController; import com.android.launcher3.touch.ItemClickHandler; import com.android.launcher3.util.PackageManagerHelper; import com.android.launcher3.util.SettingsCache; import com.android.launcher3.util.Themes; import com.android.launcher3.util.TraceHelper; import com.android.launcher3.util.ViewCache; Loading Loading @@ -102,6 +104,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ private final ViewCache mViewCache = new ViewCache(); private final boolean mIsSafeModeEnabled; private final boolean mIsUserSetupComplete; private boolean mIsDestroyed = false; public TaskbarActivityContext(Context windowContext, DeviceProfile dp, Loading @@ -113,6 +116,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mNavMode = SysUINavigationMode.getMode(windowContext); mIsSafeModeEnabled = TraceHelper.allowIpcs("isSafeMode", () -> getPackageManager().isSafeMode()); mIsUserSetupComplete = SettingsCache.INSTANCE.get(this).getValue( Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE), 0); float taskbarIconSize = getResources().getDimension(R.dimen.taskbar_icon_size); mDeviceProfile.updateIconSize(1, getResources()); Loading Loading @@ -155,7 +160,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ new TaskbarEduController(this)); } public void init() { public void init(TaskbarSharedState sharedState) { mLastRequestedNonFullscreenHeight = getDefaultTaskbarWindowHeight(); mWindowLayoutParams = new WindowManager.LayoutParams( MATCH_PARENT, Loading Loading @@ -184,7 +189,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ getDefaultTaskbarWindowHeight() - mDeviceProfile.taskbarSize, 0, 0); // Initialize controllers after all are constructed. mControllers.init(); mControllers.init(sharedState); mWindowManager.addView(mDragLayer, mWindowLayoutParams); } Loading Loading @@ -302,6 +307,13 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mControllers.uiController.init(mControllers); } /** * Sets the flag indicating setup UI is visible */ public void setSetupUIVisible(boolean isVisible) { mControllers.taskbarStashController.setSetupUIVisible(isVisible); } /** * Called when this instance of taskbar is no longer needed */ Loading @@ -312,9 +324,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mWindowManager.removeViewImmediate(mDragLayer); } public void updateSysuiStateFlags(int systemUiStateFlags, boolean forceUpdate) { mControllers.navbarButtonsViewController.updateStateForSysuiFlags( systemUiStateFlags, forceUpdate); public void updateSysuiStateFlags(int systemUiStateFlags) { mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags); mControllers.taskbarViewController.setImeIsVisible( mControllers.navbarButtonsViewController.isImeVisible()); boolean panelExpanded = (systemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) != 0; Loading Loading @@ -467,4 +478,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ public void startTaskbarUnstashHint(boolean animateForward) { mControllers.taskbarStashController.startUnstashHint(animateForward); } protected boolean isUserSetupComplete() { return mIsUserSetupComplete; } }
quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java +3 −3 Original line number Diff line number Diff line Loading @@ -74,8 +74,8 @@ public class TaskbarControllers { * TaskbarControllers instance, but should be careful to only access things that were created * in constructors for now, as some controllers may still be waiting for init(). */ public void init() { navbarButtonsViewController.init(this); public void init(TaskbarSharedState sharedState) { navbarButtonsViewController.init(this, sharedState); if (taskbarActivityContext.isThreeButtonNav()) { rotationButtonController.init(); } Loading @@ -85,7 +85,7 @@ public class TaskbarControllers { taskbarUnfoldAnimationController.init(this); taskbarKeyguardController.init(navbarButtonsViewController); stashedHandleViewController.init(this); taskbarStashController.init(this); taskbarStashController.init(this, sharedState); taskbarEduController.init(this); } Loading