Add debug logs to ActivityTracker

Flag: N/A
Bug: 274280837
Test: checked logs during gestures and 3-button, and dumped Launcher logs
Change-Id: Icbb1edb0e59fa9cce9364e39823a664cda4ebf1b
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index e7d2843..269603c 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2651,6 +2651,7 @@
 
         mModel.dumpState(prefix, fd, writer, args);
         mOverlayManager.dump(prefix, writer);
+        ACTIVITY_TRACKER.dump(prefix, writer);
     }
 
     /**
diff --git a/src/com/android/launcher3/dragndrop/AddItemActivity.java b/src/com/android/launcher3/dragndrop/AddItemActivity.java
index 213c458..29aa216 100644
--- a/src/com/android/launcher3/dragndrop/AddItemActivity.java
+++ b/src/com/android/launcher3/dragndrop/AddItemActivity.java
@@ -258,7 +258,7 @@
                         .addCategory(Intent.CATEGORY_HOME)
                         .setPackage(getPackageName())
                         .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        Launcher.ACTIVITY_TRACKER.registerCallback(listener);
+        Launcher.ACTIVITY_TRACKER.registerCallback(listener, "AddItemActivity.onLongClick");
         startActivity(homeIntent, ApiWrapper.createFadeOutAnimOptions(this).toBundle());
         logCommand(LAUNCHER_ADD_EXTERNAL_ITEM_DRAGGED);
         mFinishOnPause = true;
diff --git a/src/com/android/launcher3/util/ActivityTracker.java b/src/com/android/launcher3/util/ActivityTracker.java
index 405d2bb..95a0511 100644
--- a/src/com/android/launcher3/util/ActivityTracker.java
+++ b/src/com/android/launcher3/util/ActivityTracker.java
@@ -18,10 +18,13 @@
 import static com.android.launcher3.testing.shared.TestProtocol.GET_FROM_RECENTS_FAILURE;
 import static com.android.launcher3.testing.shared.TestProtocol.testLogD;
 
+import android.util.Log;
+
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.BaseActivity;
 
+import java.io.PrintWriter;
 import java.lang.ref.WeakReference;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -31,6 +34,8 @@
  */
 public final class ActivityTracker<T extends BaseActivity> {
 
+    private static final String TAG = "ActivityTracker";
+
     private WeakReference<T> mCurrentActivity = new WeakReference<>(null);
     private CopyOnWriteArrayList<SchedulerCallback<T>> mCallbacks = new CopyOnWriteArrayList<>();
 
@@ -57,12 +62,13 @@
      *
      * @param callback The callback to call init() on when the activity is ready.
      */
-    public void registerCallback(SchedulerCallback<T> callback) {
+    public void registerCallback(SchedulerCallback<T> callback, String reasonString) {
+        Log.d(TAG, "Registering callback: " + callback + ", reason=" + reasonString);
         T activity = mCurrentActivity.get();
         mCallbacks.add(callback);
         if (activity != null) {
             if (!callback.init(activity, activity.isStarted())) {
-                unregisterCallback(callback);
+                unregisterCallback(callback, "ActivityTracker.registerCallback: Intent handled");
             }
         }
     }
@@ -70,7 +76,8 @@
     /**
      * Unregisters a registered callback.
      */
-    public void unregisterCallback(SchedulerCallback<T> callback) {
+    public void unregisterCallback(SchedulerCallback<T> callback, String reasonString) {
+        Log.d(TAG, "Unregistering callback: " + callback + ", reason=" + reasonString);
         mCallbacks.remove(callback);
     }
 
@@ -87,16 +94,25 @@
 
     private boolean handleIntent(T activity, boolean alreadyOnHome) {
         boolean handled = false;
+        if (!mCallbacks.isEmpty()) {
+            Log.d(TAG, "handleIntent: mCallbacks=" + mCallbacks);
+        }
         for (SchedulerCallback<T> cb : mCallbacks) {
             if (!cb.init(activity, alreadyOnHome)) {
                 // Callback doesn't want any more updates
-                unregisterCallback(cb);
+                unregisterCallback(cb, "ActivityTracker.handleIntent: Intent handled");
             }
             handled = true;
         }
         return handled;
     }
 
+    public void dump(String prefix, PrintWriter writer) {
+        writer.println(prefix + "ActivityTracker:");
+        writer.println(prefix + "\tmCurrentActivity=" + mCurrentActivity.get());
+        writer.println(prefix + "\tmCallbacks=" + mCallbacks);
+    }
+
     public interface SchedulerCallback<T extends BaseActivity> {
 
         /**