Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cfd8bb1d authored by Felipe Leme's avatar Felipe Leme
Browse files

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
parent bca61d7f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
+29 −32
Original line number Diff line number Diff line
@@ -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<ManagedDialog> 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);
    }

    /**
+1 −0
Original line number Diff line number Diff line
@@ -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. */
+6 −1
Original line number Diff line number Diff line
@@ -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);