From cfd8bb1da6f085074087a51d9ff27fc848deedd7 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Wed, 2 Feb 2022 09:12:36 -0800 Subject: [PATCH] Deprecated "legacy" options for Activity.dump() These 3 options (--autofill, --contentcapture, and --tranlation) are now available as '--dump-dumpable DUMPABLE' (where DUMPABLE is AutofillManager, ContentCaptureManager, and UiTranslationController respectively). Test: adb shell am start com.android.settings && adb shell dumpsys activity com.android.settings --autofill Test: m -j update-api Bug: 149254050 Change-Id: Iaf9040a4afcd87d32c60e32d19aaca8e1d2c817a --- core/api/test-current.txt | 3 + core/java/android/app/Activity.java | 61 +++++++++---------- .../contentcapture/ContentCaptureManager.java | 1 + .../TranslationManagerServiceImpl.java | 7 ++- 4 files changed, 39 insertions(+), 33 deletions(-) diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 5bd6ca827e293..9af4d95a4640b 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -107,6 +107,8 @@ package android.app { method public final boolean addDumpable(@NonNull android.util.Dumpable); method public void dumpInternal(@NonNull String, @Nullable java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]); method public void onMovedToDisplay(int, android.content.res.Configuration); + field public static final String DUMP_ARG_DUMP_DUMPABLE = "--dump-dumpable"; + field public static final String DUMP_ARG_LIST_DUMPABLES = "--list-dumpables"; } public class ActivityManager { @@ -2949,6 +2951,7 @@ package android.view.contentcapture { field public static final String DEVICE_CONFIG_PROPERTY_MAX_BUFFER_SIZE = "max_buffer_size"; field public static final String DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED = "service_explicitly_enabled"; field public static final String DEVICE_CONFIG_PROPERTY_TEXT_CHANGE_FLUSH_FREQUENCY = "text_change_flush_frequency"; + field public static final String DUMPABLE_NAME = "ContentCaptureManager"; field public static final int LOGGING_LEVEL_DEBUG = 1; // 0x1 field public static final int LOGGING_LEVEL_OFF = 0; // 0x0 field public static final int LOGGING_LEVEL_VERBOSE = 2; // 0x2 diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 953d75075369b..728dc96cd9e33 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -809,6 +809,13 @@ public class Activity extends ContextThemeWrapper Dialog mDialog; Bundle mArgs; } + + /** @hide */ public static final String DUMP_ARG_AUTOFILL = "--autofill"; + /** @hide */ public static final String DUMP_ARG_CONTENT_CAPTURE = "--contentcapture"; + /** @hide */ public static final String DUMP_ARG_TRANSLATION = "--translation"; + /** @hide */ @TestApi public static final String DUMP_ARG_LIST_DUMPABLES = "--list-dumpables"; + /** @hide */ @TestApi public static final String DUMP_ARG_DUMP_DUMPABLE = "--dump-dumpable"; + private SparseArray mManagedDialogs; // set by the thread after the constructor and before onCreate(Bundle savedInstanceState) is called. @@ -7223,25 +7230,30 @@ public class Activity extends ContextThemeWrapper boolean isSpecialCase = true; // Handle special cases switch (arg) { - case "--autofill": - dumpAutofillManager(prefix, writer, args); - break; - case "--contentcapture": - dumpContentCaptureManager(prefix, writer); - break; - case "--translation": - dumpUiTranslation(prefix, writer); - break; - case "--list-dumpables": + case DUMP_ARG_AUTOFILL: + dumpLegacyDumpable(prefix, writer, arg, + AutofillClientController.DUMPABLE_NAME); + return; + case DUMP_ARG_CONTENT_CAPTURE: + dumpLegacyDumpable(prefix, writer, arg, + ContentCaptureManager.DUMPABLE_NAME); + return; + case DUMP_ARG_TRANSLATION: + dumpLegacyDumpable(prefix, writer, arg, + UiTranslationController.DUMPABLE_NAME); + return; + case DUMP_ARG_LIST_DUMPABLES: if (mDumpableContainer == null) { writer.print(prefix); writer.println("No dumpables"); } else { mDumpableContainer.listDumpables(prefix, writer); } - break; - case "--dump-dumpable": + mDumpableContainer.listDumpables(prefix, writer); + return; + case DUMP_ARG_DUMP_DUMPABLE: if (args.length == 1) { - writer.println("--dump-dumpable requires the dumpable name"); + writer.print(DUMP_ARG_DUMP_DUMPABLE); + writer.println(" requires the dumpable name"); } else if (mDumpableContainer == null) { writer.println("no dumpables"); } else { @@ -7308,25 +7320,10 @@ public class Activity extends ContextThemeWrapper } } - private void dumpContentCaptureManager(String prefix, PrintWriter writer) { - dumpLegacyDumpable(prefix, writer, ContentCaptureManager.DUMPABLE_NAME, /* args= */ null); - } - - private void dumpUiTranslation(String prefix, PrintWriter writer) { - dumpLegacyDumpable(prefix, writer, UiTranslationController.DUMPABLE_NAME, /* args= */ null); - } - - private void dumpAutofillManager(String prefix, PrintWriter writer, String[] args) { - dumpLegacyDumpable(prefix, writer, AutofillClientController.DUMPABLE_NAME, args); - } - - private void dumpLegacyDumpable(@NonNull String prefix, @NonNull PrintWriter writer, - @NonNull String dumpableName, @Nullable String[] args) { - if (mDumpableContainer == null) { - writer.print(prefix); writer.print("no "); writer.println(dumpableName); - return; - } - mDumpableContainer.dumpOneDumpable(prefix, writer, dumpableName, args); + private void dumpLegacyDumpable(String prefix, PrintWriter writer, String legacyOption, + String dumpableName) { + writer.printf("%s%s option deprecated. Use %s %s instead\n", prefix, legacyOption, + DUMP_ARG_DUMP_DUMPABLE, dumpableName); } /** diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java index ad48ea006a219..48d29706a1e96 100644 --- a/core/java/android/view/contentcapture/ContentCaptureManager.java +++ b/core/java/android/view/contentcapture/ContentCaptureManager.java @@ -218,6 +218,7 @@ public final class ContentCaptureManager { public static final boolean DEBUG = false; /** @hide */ + @TestApi public static final String DUMPABLE_NAME = "ContentCaptureManager"; /** Error happened during the data sharing session. */ diff --git a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java index 9f4fee8b00ab9..364d592d7ce0e 100644 --- a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java +++ b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java @@ -24,6 +24,7 @@ import static android.view.translation.UiTranslationManager.STATE_UI_TRANSLATION import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; @@ -43,6 +44,7 @@ import android.view.translation.ITranslationServiceCallback; import android.view.translation.TranslationCapability; import android.view.translation.TranslationContext; import android.view.translation.TranslationSpec; +import android.view.translation.UiTranslationController; import android.view.translation.UiTranslationManager.UiTranslationState; import android.view.translation.UiTranslationSpec; @@ -253,7 +255,10 @@ final class TranslationManagerServiceImpl extends try (TransferPipe tp = new TransferPipe()) { activityTokens.getApplicationThread().dumpActivity(tp.getWriteFd(), activityTokens.getActivityToken(), prefix, - new String[]{"--translation"}); + new String[] { + Activity.DUMP_ARG_DUMP_DUMPABLE, + UiTranslationController.DUMPABLE_NAME + }); tp.go(fd); } catch (IOException e) { pw.println(prefix + "Failure while dumping the activity: " + e);