diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-11-15 18:19:12 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-11-15 18:19:12 +0000 |
| commit | 97c8746c2dec1569e74bcf04cf86ab087e6a35fc (patch) | |
| tree | 6a74b1e679ba1ae1d2e8c76f111d1a148de349e6 /core/java | |
| parent | 28c7e9c2ea2cf8553836189c320df43f25bfa9ba (diff) | |
| parent | b217bdedfbe524b4e96a8cce5c4d8c7817778fa3 (diff) | |
Merge "Adding shell command to dump view hierarchies of all visible windows"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/view/ViewDebug.java | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java index 36daa5c57700..a62ba63b64e4 100644 --- a/core/java/android/view/ViewDebug.java +++ b/core/java/android/view/ViewDebug.java @@ -415,6 +415,11 @@ public class ViewDebug { private static final String REMOTE_COMMAND_CAPTURE = "CAPTURE"; private static final String REMOTE_COMMAND_DUMP = "DUMP"; private static final String REMOTE_COMMAND_DUMP_THEME = "DUMP_THEME"; + /** + * Similar to REMOTE_COMMAND_DUMP but uses ViewHierarchyEncoder instead of flat text + * @hide + */ + public static final String REMOTE_COMMAND_DUMP_ENCODED = "DUMP_ENCODED"; private static final String REMOTE_COMMAND_INVALIDATE = "INVALIDATE"; private static final String REMOTE_COMMAND_REQUEST_LAYOUT = "REQUEST_LAYOUT"; private static final String REMOTE_PROFILE = "PROFILE"; @@ -527,7 +532,6 @@ public class ViewDebug { @UnsupportedAppUsage static void dispatchCommand(View view, String command, String parameters, OutputStream clientStream) throws IOException { - // Paranoid but safe... view = view.getRootView(); @@ -535,6 +539,8 @@ public class ViewDebug { dump(view, false, true, clientStream); } else if (REMOTE_COMMAND_DUMP_THEME.equalsIgnoreCase(command)) { dumpTheme(view, clientStream); + } else if (REMOTE_COMMAND_DUMP_ENCODED.equalsIgnoreCase(command)) { + dumpEncoded(view, clientStream); } else if (REMOTE_COMMAND_CAPTURE_LAYERS.equalsIgnoreCase(command)) { captureLayers(view, new DataOutputStream(clientStream)); } else { @@ -1198,6 +1204,18 @@ public class ViewDebug { encoder.endStream(); } + private static void dumpEncoded(@NonNull final View view, @NonNull OutputStream out) + throws IOException { + ByteArrayOutputStream baOut = new ByteArrayOutputStream(); + + final ViewHierarchyEncoder encoder = new ViewHierarchyEncoder(baOut); + encoder.addProperty("window:left", view.mAttachInfo.mWindowLeft); + encoder.addProperty("window:top", view.mAttachInfo.mWindowTop); + view.encode(encoder); + encoder.endStream(); + out.write(baOut.toByteArray()); + } + /** * Dumps the theme attributes from the given View. * @hide |
