From c1bd53c3f0e291963ceee20f92cdfaf09f950c24 Mon Sep 17 00:00:00 2001 From: Jagrut Desai Date: Thu, 21 Sep 2023 15:36:56 -0700 Subject: [PATCH 1/2] Add more debugs logs to TaskbarManager - adding more logs to TaskbarManager to investigate taskbar being present in folded state of the device. Test: Presubmit Bug: 254119092 Flag: not needed Change-Id: I81c475f1c6bbc8d5b7874ddc45e8778861b61cd0 --- .../launcher3/taskbar/TaskbarManager.java | 64 ++++++++++++++++--- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 81cff571f9..b115ca8032 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -160,6 +160,9 @@ public class TaskbarManager { if (mActivity != null) { mActivity.removeOnDeviceProfileChangeListener( mDebugActivityDeviceProfileChanged); + Log.d(TASKBAR_NOT_DESTROYED_TAG, + "unregistering activity lifecycle callbacks from " + + "onActivityDestroyed."); mActivity.unregisterActivityLifecycleCallbacks(this); } mActivity = null; @@ -171,6 +174,35 @@ public class TaskbarManager { } }; + UnfoldTransitionProgressProvider.TransitionProgressListener mUnfoldTransitionProgressListener = + new UnfoldTransitionProgressProvider.TransitionProgressListener() { + @Override + public void onTransitionStarted() { + Log.d(TASKBAR_NOT_DESTROYED_TAG, + "fold/unfold transition started getting called."); + } + + @Override + public void onTransitionProgress(float progress) { + Log.d(TASKBAR_NOT_DESTROYED_TAG, + "fold/unfold transition progress : " + progress); + } + + @Override + public void onTransitionFinishing() { + Log.d(TASKBAR_NOT_DESTROYED_TAG, + "fold/unfold transition finishing getting called."); + + } + + @Override + public void onTransitionFinished() { + Log.d(TASKBAR_NOT_DESTROYED_TAG, + "fold/unfold transition finished getting called."); + + } + }; + @SuppressLint("WrongConstant") public TaskbarManager(TouchInteractionService service) { Display display = @@ -234,6 +266,7 @@ public class TaskbarManager { .register(USER_SETUP_COMPLETE_URI, mOnSettingsChangeListener); SettingsCache.INSTANCE.get(mContext) .register(NAV_BAR_KIDS_MODE, mOnSettingsChangeListener); + Log.d(TASKBAR_NOT_DESTROYED_TAG, "registering component callbacks from constructor."); mContext.registerComponentCallbacks(mComponentCallbacks); mShutdownReceiver.register(mContext, Intent.ACTION_SHUTDOWN); UI_HELPER_EXECUTOR.execute(() -> { @@ -319,16 +352,18 @@ public class TaskbarManager { if (mActivity == activity) { return; } - if (mActivity != null) { - mActivity.removeOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged); - mActivity.unregisterActivityLifecycleCallbacks(mLifecycleCallbacks); - } + removeActivityCallbacksAndListeners(); mActivity = activity; debugWhyTaskbarNotDestroyed("Set mActivity=" + mActivity); mActivity.addOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged); + Log.d(TASKBAR_NOT_DESTROYED_TAG, + "registering activity lifecycle callbacks from setActivity()."); mActivity.registerActivityLifecycleCallbacks(mLifecycleCallbacks); UnfoldTransitionProgressProvider unfoldTransitionProgressProvider = getUnfoldTransitionProgressProviderForActivity(activity); + if (unfoldTransitionProgressProvider != null) { + unfoldTransitionProgressProvider.addCallback(mUnfoldTransitionProgressListener); + } mUnfoldProgressProvider.setSourceProvider(unfoldTransitionProgressProvider); if (mTaskbarActivityContext != null) { @@ -489,15 +524,27 @@ public class TaskbarManager { } } + private void removeActivityCallbacksAndListeners() { + if (mActivity != null) { + mActivity.removeOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged); + Log.d(TASKBAR_NOT_DESTROYED_TAG, + "unregistering activity lifecycle callbacks from " + + "removeActivityCallbackAndListeners()."); + mActivity.unregisterActivityLifecycleCallbacks(mLifecycleCallbacks); + UnfoldTransitionProgressProvider unfoldTransitionProgressProvider = + getUnfoldTransitionProgressProviderForActivity(mActivity); + if (unfoldTransitionProgressProvider != null) { + unfoldTransitionProgressProvider.removeCallback(mUnfoldTransitionProgressListener); + } + } + } + /** * Called when the manager is no longer needed */ public void destroy() { debugWhyTaskbarNotDestroyed("TaskbarManager#destroy()"); - if (mActivity != null) { - mActivity.removeOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged); - } - + removeActivityCallbacksAndListeners(); UI_HELPER_EXECUTOR.execute( () -> mTaskbarBroadcastReceiver.unregisterReceiverSafely(mContext)); destroyExistingTaskbar(); @@ -508,6 +555,7 @@ public class TaskbarManager { .unregister(USER_SETUP_COMPLETE_URI, mOnSettingsChangeListener); SettingsCache.INSTANCE.get(mContext) .unregister(NAV_BAR_KIDS_MODE, mOnSettingsChangeListener); + Log.d(TASKBAR_NOT_DESTROYED_TAG, "unregistering component callbacks from destroy()."); mContext.unregisterComponentCallbacks(mComponentCallbacks); mContext.unregisterReceiver(mShutdownReceiver); } From ba44979d7927e0e25206346a69d6a3dfde44a437 Mon Sep 17 00:00:00 2001 From: Luca Zuccarini Date: Fri, 29 Sep 2023 11:31:17 +0000 Subject: [PATCH 2/2] [Toast] Fix ANR when tapping on rich card chip. This method recursively looks up the view hierarchy for a suitable view to animate. The wrong variable was causing an infinite loop by never updating the object being checked for the end condition. With the fix, the animation behaves as expected. Fix: 302568434 Flag: ENABLE_SEARCH_RESULT_LAUNCH_ANIMATION Test: see video in the bug. Change-Id: I123e50f1618a1e48256c0c976eeb46c93e8391b2 Merged-In: I123e50f1618a1e48256c0c976eeb46c93e8391b2 --- .../src/com/android/launcher3/QuickstepTransitionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index 3113cc2c01..741249d53e 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -1829,7 +1829,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener return null; } - current = (View) view.getParent(); + current = (View) current.getParent(); } return (T) current;