Adding utility method to dump encoded view hierarchy

Test: Verified the library change with launcher (after generating a bug report)
Bug: 79861035
Change-Id: Id1eabbfd293ee43c46cbecae82442fc77b661744
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityCompat.java
index 0d8ce58..12699d5 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityCompat.java
@@ -17,6 +17,10 @@
 package com.android.systemui.shared.system;
 
 import android.app.Activity;
+import android.view.View;
+import android.view.ViewHierarchyEncoder;
+
+import java.io.ByteArrayOutputStream;
 
 public class ActivityCompat {
     private final Activity mWrapped;
@@ -31,4 +35,27 @@
     public void registerRemoteAnimations(RemoteAnimationDefinitionCompat definition) {
         mWrapped.registerRemoteAnimations(definition.getWrapped());
     }
+
+    /**
+     * @see android.view.ViewDebug#dumpv2(View, ByteArrayOutputStream)
+     */
+    public boolean encodeViewHierarchy(ByteArrayOutputStream out) {
+        View view = null;
+        if (mWrapped.getWindow() != null &&
+                mWrapped.getWindow().peekDecorView() != null &&
+                mWrapped.getWindow().peekDecorView().getViewRootImpl() != null) {
+            view = mWrapped.getWindow().peekDecorView().getViewRootImpl().getView();
+        }
+        if (view == null) {
+            return false;
+        }
+
+        final ViewHierarchyEncoder encoder = new ViewHierarchyEncoder(out);
+        int[] location = view.getLocationOnScreen();
+        encoder.addProperty("window:left", location[0]);
+        encoder.addProperty("window:top", location[1]);
+        view.encode(encoder);
+        encoder.endStream();
+        return true;
+    }
 }