From 40f658625d7fa0864f3d5441acc3add7af243b2e Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Wed, 16 May 2018 10:13:13 -0700 Subject: [PATCH] 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 --- .../shared/system/ActivityCompat.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) 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 0d8ce58d55fdc..12699d52772ad 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 class ActivityCompat { 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; + } }