From 34eb0987455fe4dd042defa6da288ff9efdfdc80 Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Mon, 20 Mar 2023 15:39:12 -0700 Subject: [PATCH] Add debug logs to debug flaky workspace binding Flag: not needed Bug: 270216650 Test: ReorderWidgets Change-Id: Ia5caeb6b0e5ed1b0b406fab9c18e2e6799a4f68a --- .../launcher3/util/ViewOnDrawExecutor.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/com/android/launcher3/util/ViewOnDrawExecutor.java b/src/com/android/launcher3/util/ViewOnDrawExecutor.java index 5d902917cd..3fa5799847 100644 --- a/src/com/android/launcher3/util/ViewOnDrawExecutor.java +++ b/src/com/android/launcher3/util/ViewOnDrawExecutor.java @@ -16,11 +16,13 @@ package com.android.launcher3.util; +import android.util.Log; import android.view.View; import android.view.View.OnAttachStateChangeListener; import android.view.ViewTreeObserver.OnDrawListener; import com.android.launcher3.Launcher; +import com.android.launcher3.testing.shared.TestProtocol; import java.util.function.Consumer; @@ -42,12 +44,21 @@ public class ViewOnDrawExecutor implements OnDrawListener, Runnable, private boolean mCancelled; public ViewOnDrawExecutor(RunnableList tasks) { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, "Initialize ViewOnDrawExecutor"); + } mTasks = tasks; } public void attachTo(Launcher launcher) { mOnClearCallback = launcher::clearPendingExecutor; mAttachedView = launcher.getWorkspace(); + + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, "ViewOnDrawExecutor.attachTo: launcher=" + launcher + + ", isAttachedToWindow=" + mAttachedView.isAttachedToWindow()); + } + mAttachedView.addOnAttachStateChangeListener(this); if (mAttachedView.isAttachedToWindow()) { @@ -56,6 +67,10 @@ public class ViewOnDrawExecutor implements OnDrawListener, Runnable, } private void attachObserver() { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, + "ViewOnDrawExecutor.attachObserver: mCompleted=" + mCompleted); + } if (!mCompleted) { mAttachedView.getViewTreeObserver().addOnDrawListener(this); } @@ -63,6 +78,9 @@ public class ViewOnDrawExecutor implements OnDrawListener, Runnable, @Override public void onViewAttachedToWindow(View v) { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, "ViewOnDrawExecutor.onViewAttachedToWindow"); + } attachObserver(); } @@ -71,11 +89,19 @@ public class ViewOnDrawExecutor implements OnDrawListener, Runnable, @Override public void onDraw() { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, "ViewOnDrawExecutor.onDraw"); + } mFirstDrawCompleted = true; mAttachedView.post(this); } public void onLoadAnimationCompleted() { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, + "ViewOnDrawExecutor.onLoadAnimationCompleted: mAttachedView != null=" + + (mAttachedView != null)); + } mLoadAnimationCompleted = true; if (mAttachedView != null) { mAttachedView.post(this); @@ -84,6 +110,12 @@ public class ViewOnDrawExecutor implements OnDrawListener, Runnable, @Override public void run() { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, + "ViewOnDrawExecutor.run: mLoadAnimationCompleted=" + mLoadAnimationCompleted + + ", mFirstDrawCompleted=" + mFirstDrawCompleted + + ", mCompleted=" + mCompleted); + } // Post the pending tasks after both onDraw and onLoadAnimationCompleted have been called. if (mLoadAnimationCompleted && mFirstDrawCompleted && !mCompleted) { markCompleted(); @@ -94,6 +126,12 @@ public class ViewOnDrawExecutor implements OnDrawListener, Runnable, * Executes all tasks immediately */ public void markCompleted() { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, + "ViewOnDrawExecutor.markCompleted: mCancelled=" + mCancelled + + ", mOnClearCallback != null=" + (mOnClearCallback != null) + + ", mAttachedView != null=" + (mAttachedView != null)); + } if (!mCancelled) { mTasks.executeAllAndDestroy(); } @@ -108,6 +146,9 @@ public class ViewOnDrawExecutor implements OnDrawListener, Runnable, } public void cancel() { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.FLAKY_BINDING, "ViewOnDrawExecutor.cancel"); + } mCancelled = true; markCompleted(); }