From d312651f792fa72005a5f44c9ffe64f1a184bfaa Mon Sep 17 00:00:00 2001 From: Samuel Fufa Date: Thu, 20 May 2021 09:13:50 -0500 Subject: [PATCH 1/6] Avoid drawing tall header when scrolling search results Bug: 184946772 Test: manual Change-Id: I1bedec89fb9eb5dc51b8b34511a02868cec91efe --- src/com/android/launcher3/allapps/FloatingHeaderView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/launcher3/allapps/FloatingHeaderView.java b/src/com/android/launcher3/allapps/FloatingHeaderView.java index af7896ac24..a0c598aa6e 100644 --- a/src/com/android/launcher3/allapps/FloatingHeaderView.java +++ b/src/com/android/launcher3/allapps/FloatingHeaderView.java @@ -298,7 +298,7 @@ public class FloatingHeaderView extends LinearLayout implements @Override protected void dispatchDraw(Canvas canvas) { - if (mHeaderCollapsed && mTabLayout.getVisibility() == VISIBLE + if (mHeaderCollapsed && !mCollapsed && mTabLayout.getVisibility() == VISIBLE && mHeaderColor != Color.TRANSPARENT) { mBGPaint.setColor(mHeaderColor); mBGPaint.setAlpha((int) (255 * mHeaderAnimator.getAnimatedFraction())); From bfac8730fe1baa8acb4e95c1392ec3cb91a003e4 Mon Sep 17 00:00:00 2001 From: vadimt Date: Thu, 20 May 2021 15:48:29 -0700 Subject: [PATCH 2/6] Improving TAPL messaging Test: presubmit Bug: 187761685 Change-Id: I83eb0eef2f9c8c33cc9d1b42cb52fb670a5bf427 --- .../com/android/launcher3/tapl/LauncherInstrumentation.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index 57f40db205..4cf52f071d 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -496,13 +496,14 @@ public final class LauncherInstrumentation { private void fail(String message) { checkForAnomaly(); Assert.fail(formatSystemHealthMessage(formatErrorWithEvents( - "http://go/tapl test failure:\nOverview: " + getContextDescription() + "http://go/tapl test failure:\nSummary: " + getContextDescription() + " - visible state is " + getVisibleStateMessage() + ";\nDetails: " + message, true))); } private String getContextDescription() { - return mDiagnosticContext.isEmpty() ? "" : String.join(", ", mDiagnosticContext); + return mDiagnosticContext.isEmpty() + ? "(no context)" : String.join(", ", mDiagnosticContext); } void assertTrue(String message, boolean condition) { From ccb71776c64c48f87158f851a0a4b4dda563e630 Mon Sep 17 00:00:00 2001 From: Chihhang Chuang Date: Thu, 20 May 2021 01:50:03 +0800 Subject: [PATCH 3/6] Apply the current system window insets to launcher preview For wallpaper picker, the position of app icon on the wallpaper preview would match to the launcher after applying the wallpaper. Wallpaper picker: https://screenshot.googleplex.com/JZazpgZLgzacZMZ.png Launcher: https://screenshot.googleplex.com/9uTTQwdmcnFZ7Vi.png Gesture mode: https://screenshot.googleplex.com/3YaKbBerYgtHBFb.png 3-button mode: https://screenshot.googleplex.com/7sA5nE3GmbuKf62.png Fixes: 188539072 Test: Manually Change-Id: I553000e6ae646207eb94fa33e97d00a3990043c8 --- .../graphics/LauncherPreviewRenderer.java | 20 +++++++++++++++---- .../graphics/PreviewSurfaceRenderer.java | 6 ++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java index 5f014db1ea..2a1aec84a3 100644 --- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java @@ -45,6 +45,8 @@ import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.WindowInsets; +import android.view.WindowManager; import android.widget.TextClock; import com.android.launcher3.BubbleTextView; @@ -56,6 +58,7 @@ import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.R; +import com.android.launcher3.Utilities; import com.android.launcher3.WorkspaceLayoutManager; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.folder.FolderIcon; @@ -205,10 +208,19 @@ public class LauncherPreviewRenderer extends ContextWrapper mIdp = idp; mDp = idp.getDeviceProfile(context).copy(context); - // TODO: get correct insets once display cutout API is available. - mInsets = new Rect(); - mInsets.left = mInsets.right = (mDp.widthPx - mDp.availableWidthPx) / 2; - mInsets.top = mInsets.bottom = (mDp.heightPx - mDp.availableHeightPx) / 2; + if (Utilities.ATLEAST_R) { + WindowInsets currentWindowInsets = context.getSystemService(WindowManager.class) + .getCurrentWindowMetrics().getWindowInsets(); + mInsets = new Rect( + currentWindowInsets.getSystemWindowInsetLeft(), + currentWindowInsets.getSystemWindowInsetTop(), + currentWindowInsets.getSystemWindowInsetRight(), + currentWindowInsets.getSystemWindowInsetBottom()); + } else { + mInsets = new Rect(); + mInsets.left = mInsets.right = (mDp.widthPx - mDp.availableWidthPx) / 2; + mInsets.top = mInsets.bottom = (mDp.heightPx - mDp.availableHeightPx) / 2; + } mDp.updateInsets(mInsets); BaseIconFactory iconFactory = diff --git a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java index 8c39eaeddb..a8c3d15bde 100644 --- a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java +++ b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java @@ -32,6 +32,7 @@ import android.view.Display; import android.view.SurfaceControlViewHost; import android.view.SurfaceControlViewHost.SurfacePackage; import android.view.View; +import android.view.WindowManager.LayoutParams; import android.view.animation.AccelerateDecelerateInterpolator; import androidx.annotation.UiThread; @@ -41,6 +42,7 @@ import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; import com.android.launcher3.R; +import com.android.launcher3.Utilities; import com.android.launcher3.graphics.LauncherPreviewRenderer.PreviewContext; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.GridSizeMigrationTask; @@ -139,6 +141,10 @@ public class PreviewSurfaceRenderer { if (mWallpaperColors != null) { // Create a themed context, without affecting the main application context Context context = mContext.createDisplayContext(mDisplay); + if (Utilities.ATLEAST_R) { + context = context.createWindowContext( + LayoutParams.TYPE_APPLICATION_OVERLAY, null); + } LocalColorExtractor.newInstance(mContext) .applyColorsOverride(context, mWallpaperColors); inflationContext = new ContextThemeWrapper(context, From 55845135007320487963a8c2f777f54bd3bf2ff2 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 21 May 2021 14:41:30 -0700 Subject: [PATCH 4/6] Renamin TaskbarContainerView to TaskbarDragLayer Bug: 187353581 Test: Presubmit Change-Id: I9164a956aaa896111f287ab4e97b091a7d4d30ee --- quickstep/res/layout/taskbar.xml | 4 +-- .../taskbar/LauncherTaskbarUIController.java | 12 +++---- .../taskbar/TaskbarActivityContext.java | 35 +++++++++++++------ ...ntainerView.java => TaskbarDragLayer.java} | 12 +++---- .../taskbar/TaskbarIconController.java | 34 +++++++++--------- .../launcher3/taskbar/TaskbarManager.java | 5 ++- .../taskbar/TaskbarUIController.java | 2 +- 7 files changed, 58 insertions(+), 46 deletions(-) rename quickstep/src/com/android/launcher3/taskbar/{TaskbarContainerView.java => TaskbarDragLayer.java} (90%) diff --git a/quickstep/res/layout/taskbar.xml b/quickstep/res/layout/taskbar.xml index c4362214cb..e680233e6a 100644 --- a/quickstep/res/layout/taskbar.xml +++ b/quickstep/res/layout/taskbar.xml @@ -14,7 +14,7 @@ limitations under the License. --> - - \ No newline at end of file + \ No newline at end of file diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 67264194b2..c2d107c22d 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -46,7 +46,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { private final TaskbarHotseatController mHotseatController; private final TaskbarActivityContext mContext; - final TaskbarContainerView mTaskbarContainerView; + final TaskbarDragLayer mTaskbarDragLayer; final TaskbarView mTaskbarView; private @Nullable Animator mAnimator; @@ -55,8 +55,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public LauncherTaskbarUIController( BaseQuickstepLauncher launcher, TaskbarActivityContext context) { mContext = context; - mTaskbarContainerView = context.getDragLayer(); - mTaskbarView = mTaskbarContainerView.findViewById(R.id.taskbar_view); + mTaskbarDragLayer = context.getDragLayer(); + mTaskbarView = mTaskbarDragLayer.findViewById(R.id.taskbar_view); mLauncher = launcher; mTaskbarStateHandler = mLauncher.getTaskbarStateHandler(); @@ -99,7 +99,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { return new TaskbarAnimationControllerCallbacks() { @Override public void updateTaskbarBackgroundAlpha(float alpha) { - mTaskbarContainerView.setTaskbarBackgroundAlpha(alpha); + mTaskbarDragLayer.setTaskbarBackgroundAlpha(alpha); } @Override @@ -109,7 +109,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { @Override public void updateImeBarVisibilityAlpha(float alpha) { - mTaskbarContainerView.updateImeBarVisibilityAlpha(alpha); + mTaskbarDragLayer.updateImeBarVisibilityAlpha(alpha); } @Override @@ -202,7 +202,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } @Override - protected void onImeVisible(TaskbarContainerView containerView, boolean isVisible) { + protected void onImeVisible(TaskbarDragLayer containerView, boolean isVisible) { mTaskbarAnimationController.animateToVisibilityForIme(isVisible ? 0 : 1); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 70f278874a..8c3d453b09 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -87,7 +87,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ private final DeviceProfile mDeviceProfile; private final LayoutInflater mLayoutInflater; - private final TaskbarContainerView mTaskbarContainerView; + private final TaskbarDragLayer mDragLayer; private final TaskbarIconController mIconController; private final MyDragController mDragController; @@ -123,9 +123,9 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mDeviceProfile.updateIconSize(iconScale, getResources()); mLayoutInflater = LayoutInflater.from(this).cloneInContext(this); - mTaskbarContainerView = (TaskbarContainerView) mLayoutInflater + mDragLayer = (TaskbarDragLayer) mLayoutInflater .inflate(R.layout.taskbar, null, false); - mIconController = new TaskbarIconController(this, mTaskbarContainerView); + mIconController = new TaskbarIconController(this, mDragLayer); mDragController = new MyDragController(this); Display display = windowContext.getDisplay(); @@ -157,7 +157,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ ); mIconController.init(mOnTaskbarIconClickListener, mOnTaskbarIconLongClickListener); - mWindowManager.addView(mTaskbarContainerView, mWindowLayoutParams); + mWindowManager.addView(mDragLayer, mWindowLayoutParams); } /** @@ -168,7 +168,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ return; } mWindowLayoutParams.height = height; - mWindowManager.updateViewLayout(mTaskbarContainerView, mWindowLayoutParams); + mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams); } public boolean canShowNavButtons() { @@ -181,8 +181,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ } @Override - public TaskbarContainerView getDragLayer() { - return mTaskbarContainerView; + public TaskbarDragLayer getDragLayer() { + return mDragLayer; } @Override @@ -192,7 +192,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ @Override public Rect getFolderBoundingBox() { - return mTaskbarContainerView.getFolderBoundingBox(); + return mDragLayer.getFolderBoundingBox(); } @Override @@ -216,15 +216,28 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ public void onDestroy() { setUIController(TaskbarUIController.DEFAULT); mIconController.onDestroy(); - mWindowManager.removeViewImmediate(mTaskbarContainerView); + mWindowManager.removeViewImmediate(mDragLayer); } void onNavigationButtonClick(@TaskbarButton int buttonType) { mNavButtonController.onButtonClick(buttonType); } - public TaskbarIconController getIconController() { - return mIconController; + /** + * Should be called when the IME visibility changes, so we can hide/show Taskbar accordingly. + */ + public void setImeIsVisible(boolean isImeVisible) { + mIconController.setImeIsVisible(isImeVisible); + } + + /** + * When in 3 button nav, the above doesn't get called since we prevent sysui nav bar from + * instantiating at all, which is what's responsible for sending sysui state flags over. + * + * @param vis IME visibility flag + */ + public void updateImeStatus(int displayId, int vis, boolean showImeSwitcher) { + mIconController.updateImeStatus(displayId, vis, showImeSwitcher); } /** diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java similarity index 90% rename from quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java rename to quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java index 5034791f0e..45ec911527 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java @@ -35,7 +35,7 @@ import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInset /** * Top-level ViewGroup that hosts the TaskbarView as well as Views created by it such as Folder. */ -public class TaskbarContainerView extends BaseDragLayer { +public class TaskbarDragLayer extends BaseDragLayer { private final int mFolderMargin; private final Paint mTaskbarBackgroundPaint; @@ -45,20 +45,20 @@ public class TaskbarContainerView extends BaseDragLayer private final OnComputeInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets; - public TaskbarContainerView(@NonNull Context context) { + public TaskbarDragLayer(@NonNull Context context) { this(context, null); } - public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs) { + public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } - public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs, + public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } - public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs, + public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, 1 /* alphaChannelCount */); mFolderMargin = getResources().getDimensionPixelSize(R.dimen.taskbar_folder_margin); @@ -118,7 +118,7 @@ public class TaskbarContainerView extends BaseDragLayer public void onViewRemoved(View child) { super.onViewRemoved(child); if (mControllerCallbacks != null) { - mControllerCallbacks.onContainerViewRemoved(); + mControllerCallbacks.onDragLayerViewRemoved(); } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java index 2a37915fcf..683a5b9fc4 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java @@ -41,7 +41,7 @@ public class TaskbarIconController { private final Rect mTempRect = new Rect(); private final TaskbarActivityContext mActivity; - private final TaskbarContainerView mContainerView; + private final TaskbarDragLayer mDragLayer; private final TaskbarView mTaskbarView; private final ImeBarView mImeBarView; @@ -49,15 +49,15 @@ public class TaskbarIconController { @NonNull private TaskbarUIController mUIController = TaskbarUIController.DEFAULT; - TaskbarIconController(TaskbarActivityContext activity, TaskbarContainerView containerView) { + TaskbarIconController(TaskbarActivityContext activity, TaskbarDragLayer dragLayer) { mActivity = activity; - mContainerView = containerView; - mTaskbarView = mContainerView.findViewById(R.id.taskbar_view); - mImeBarView = mContainerView.findViewById(R.id.ime_bar_view); + mDragLayer = dragLayer; + mTaskbarView = mDragLayer.findViewById(R.id.taskbar_view); + mImeBarView = mDragLayer.findViewById(R.id.ime_bar_view); } public void init(OnClickListener clickListener, OnLongClickListener longClickListener) { - mContainerView.addOnLayoutChangeListener((v, a, b, c, d, e, f, g, h) -> + mDragLayer.addOnLayoutChangeListener((v, a, b, c, d, e, f, g, h) -> mUIController.alignRealHotseatWithTaskbar()); ButtonProvider buttonProvider = new ButtonProvider(mActivity); @@ -65,11 +65,11 @@ public class TaskbarIconController { mTaskbarView.construct(clickListener, longClickListener, buttonProvider); mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize; - mContainerView.init(new Callbacks(), mTaskbarView); + mDragLayer.init(new Callbacks(), mTaskbarView); } public void onDestroy() { - mContainerView.onDestroy(); + mDragLayer.onDestroy(); } public void setUIController(@NonNull TaskbarUIController uiController) { @@ -96,11 +96,11 @@ public class TaskbarIconController { */ public void setImeIsVisible(boolean isImeVisible) { mTaskbarView.setTouchesEnabled(!isImeVisible); - mUIController.onImeVisible(mContainerView, isImeVisible); + mUIController.onImeVisible(mDragLayer, isImeVisible); } /** - * Callbacks for {@link TaskbarContainerView} to interact with the icon controller + * Callbacks for {@link TaskbarDragLayer} to interact with the icon controller */ public class Callbacks { @@ -109,7 +109,7 @@ public class TaskbarIconController { */ public void updateInsetsTouchability(InsetsInfo insetsInfo) { insetsInfo.touchableRegion.setEmpty(); - if (mContainerView.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { + if (mDragLayer.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { // Let touches pass through us. insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION); } else if (mImeBarView.getVisibility() == VISIBLE) { @@ -122,7 +122,7 @@ public class TaskbarIconController { insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME); } else { if (mTaskbarView.mSystemButtonContainer.getVisibility() == VISIBLE) { - mContainerView.getDescendantRectRelativeToSelf( + mDragLayer.getDescendantRectRelativeToSelf( mTaskbarView.mSystemButtonContainer, mTempRect); insetsInfo.touchableRegion.set(mTempRect); } @@ -135,15 +135,15 @@ public class TaskbarIconController { // mTaskbarView is, since its position never changes and insets rather than overlays. insetsInfo.contentInsets.left = mTaskbarView.getLeft(); insetsInfo.contentInsets.top = mTaskbarView.getTop(); - insetsInfo.contentInsets.right = mContainerView.getWidth() - mTaskbarView.getRight(); - insetsInfo.contentInsets.bottom = mContainerView.getHeight() - mTaskbarView.getBottom(); + insetsInfo.contentInsets.right = mDragLayer.getWidth() - mTaskbarView.getRight(); + insetsInfo.contentInsets.bottom = mDragLayer.getHeight() - mTaskbarView.getBottom(); } - public void onContainerViewRemoved() { - int count = mContainerView.getChildCount(); + public void onDragLayerViewRemoved() { + int count = mDragLayer.getChildCount(); // Ensure no other children present (like Folders, etc) for (int i = 0; i < count; i++) { - View v = mContainerView.getChildAt(i); + View v = mDragLayer.getChildAt(i); if (!((v instanceof TaskbarView) || (v instanceof ImeBarView))) { return; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 263aa1142d..d026bfbf37 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -139,7 +139,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen public void onSystemUiFlagsChanged(int systemUiStateFlags) { boolean isImeVisible = (systemUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0; if (mTaskbarActivityContext != null) { - mTaskbarActivityContext.getIconController().setImeIsVisible(isImeVisible); + mTaskbarActivityContext.setImeIsVisible(isImeVisible); } } @@ -154,8 +154,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen public void updateImeStatus(int displayId, int vis, int backDisposition, boolean showImeSwitcher) { if (mTaskbarActivityContext != null) { - mTaskbarActivityContext.getIconController() - .updateImeStatus(displayId, vis, showImeSwitcher); + mTaskbarActivityContext.updateImeStatus(displayId, vis, showImeSwitcher); } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java index e16f5e65b0..50adeadbfc 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java @@ -35,7 +35,7 @@ public class TaskbarUIController { return true; } - protected void onImeVisible(TaskbarContainerView container, boolean isVisible) { + protected void onImeVisible(TaskbarDragLayer container, boolean isVisible) { container.updateImeBarVisibilityAlpha(isVisible ? 1 : 0); } } From b5596f72e4c033e66f8c1da564ad90496638b028 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 21 May 2021 15:28:57 -0700 Subject: [PATCH 5/6] Fixing missing unlinktoDeath Bug: 186712316 Test: Manual Change-Id: If06737403c346c5ccca533dec647e3a0691f1bfa --- .../android/launcher3/graphics/GridCustomizationsProvider.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/launcher3/graphics/GridCustomizationsProvider.java b/src/com/android/launcher3/graphics/GridCustomizationsProvider.java index 60a1732bb6..8ca157b1d4 100644 --- a/src/com/android/launcher3/graphics/GridCustomizationsProvider.java +++ b/src/com/android/launcher3/graphics/GridCustomizationsProvider.java @@ -236,6 +236,7 @@ public class GridCustomizationsProvider extends ContentProvider { return; } observer.destroyed = true; + observer.renderer.getHostToken().unlinkToDeath(observer, 0); Executors.MAIN_EXECUTOR.execute(observer.renderer::destroy); PreviewLifecycleObserver cached = mActivePreviews.get(observer.renderer.getHostToken()); if (cached == observer) { From 7c9dca2df2f50eb3755b4c3a28fc90301fd17028 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Fri, 21 May 2021 17:20:07 -0700 Subject: [PATCH 6/6] Fix PathParser error when parsing app close interpolator in RTL languages. Setting locale to english so that the numbers don't get reverted Bug: 188552618 Test: set language to arabic, swipe up to home Change-Id: I736c83984b472d9ad09207927743c87b18637db4 --- .../src/com/android/quickstep/util/RectFSpringAnim2.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/quickstep/util/RectFSpringAnim2.java b/quickstep/src/com/android/quickstep/util/RectFSpringAnim2.java index edd3dc3e29..93b34822ad 100644 --- a/quickstep/src/com/android/quickstep/util/RectFSpringAnim2.java +++ b/quickstep/src/com/android/quickstep/util/RectFSpringAnim2.java @@ -41,7 +41,7 @@ import com.android.systemui.plugins.ResourceProvider; import java.util.ArrayList; import java.util.List; - +import java.util.Locale; /** * Applies spring forces to animate from a starting rect to a target rect, @@ -353,7 +353,8 @@ public class RectFSpringAnim2 extends RectFSpringAnim { private Interpolator getAppCloseInterpolator(Context context) { ResourceProvider rp = DynamicResource.provider(context); - String path = String.format("M 0,0 C %f, %f, %f, %f, %f, %f C %f, %f, %f, %f, 1, 1", + String path = String.format(Locale.ENGLISH, + "M 0,0 C %f, %f, %f, %f, %f, %f C %f, %f, %f, %f, 1, 1", rp.getFloat(R.dimen.c1_a), rp.getFloat(R.dimen.c1_b), rp.getFloat(R.dimen.c1_c),