Merge "Add PeopleSpaceWidgetMgr to dumpsys" into main
diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
index 8d3b745..1d820a1 100644
--- a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
+++ b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
@@ -70,6 +70,7 @@
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.preference.PreferenceManager;
@@ -85,9 +86,11 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.UiEventLogger;
 import com.android.internal.logging.UiEventLoggerImpl;
+import com.android.systemui.Dumpable;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.dagger.SysUISingleton;
 import com.android.systemui.dagger.qualifiers.Background;
+import com.android.systemui.dump.DumpManager;
 import com.android.systemui.people.NotificationHelper;
 import com.android.systemui.people.PeopleBackupFollowUpJob;
 import com.android.systemui.people.PeopleSpaceUtils;
@@ -99,6 +102,7 @@
 import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
 import com.android.wm.shell.bubbles.Bubbles;
 
+import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -119,7 +123,8 @@
 
 /** Manager for People Space widget. */
 @SysUISingleton
-public class PeopleSpaceWidgetManager {
+public class PeopleSpaceWidgetManager implements Dumpable {
+
     private static final String TAG = "PeopleSpaceWidgetMgr";
     private static final boolean DEBUG = PeopleSpaceUtils.DEBUG;
 
@@ -160,7 +165,8 @@
             CommonNotifCollection notifCollection,
             PackageManager packageManager, Optional<Bubbles> bubblesOptional,
             UserManager userManager, NotificationManager notificationManager,
-            BroadcastDispatcher broadcastDispatcher, @Background Executor bgExecutor) {
+            BroadcastDispatcher broadcastDispatcher, @Background Executor bgExecutor,
+            DumpManager dumpManager) {
         if (DEBUG) Log.d(TAG, "constructor");
         mContext = context;
         mAppWidgetManager = AppWidgetManager.getInstance(context);
@@ -180,6 +186,7 @@
         mManager = this;
         mBroadcastDispatcher = broadcastDispatcher;
         mBgExecutor = bgExecutor;
+        dumpManager.registerNormalDumpable(TAG, this);
     }
 
     /** Initializes {@PeopleSpaceWidgetManager}. */
@@ -1364,4 +1371,40 @@
                 .filter(id -> !TextUtils.isEmpty(id))
                 .collect(Collectors.toSet());
     }
+
+    @Override
+    public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
+        Trace.traceBegin(Trace.TRACE_TAG_APP, TAG + ".dump");
+        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext);
+        Map<String, ?> all = sp.getAll();
+        pw.println("People widget list:");
+        for (Map.Entry<String, ?> entry : all.entrySet()) {
+            String key = entry.getKey();
+            PeopleBackupHelper.SharedFileEntryType keyType = getEntryType(entry);
+            switch (keyType) {
+                case WIDGET_ID:
+                    SharedPreferences widgetSp = mContext.getSharedPreferences(key,
+                            Context.MODE_PRIVATE);
+                    pw.print("People widget (valid) [");
+                    pw.print(key);
+                    pw.print("] shortcut id: \"");
+                    pw.print(widgetSp.getString(SHORTCUT_ID, EMPTY_STRING));
+                    pw.print("\", user id: ");
+                    pw.print(widgetSp.getInt(USER_ID, INVALID_USER_ID));
+                    pw.print(", package: ");
+                    pw.println(widgetSp.getString(PACKAGE_NAME, EMPTY_STRING));
+                    break;
+                case PEOPLE_TILE_KEY:
+                case CONTACT_URI:
+                    pw.print("Extra data [");
+                    pw.print(key);
+                    pw.print(" : ");
+                    pw.print((Set<String>) entry.getValue());
+                    pw.println("]");
+                    break;
+            }
+        }
+
+        Trace.traceEnd(Trace.TRACE_TAG_APP);
+    }
 }