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

Commit 2eea0702 authored by Felipe Leme's avatar Felipe Leme
Browse files

Changes Activity to use Dumpable for "legacy" cases.

Test: adb shell am start com.android.settings && adb shell dumpsys activity com.android.settings --autofill
Test: atest CtsAppTestCases:android.app.cts.ActivityDumpTest

Bug: 149254050

Change-Id: I658b18a965f3d35c3ecbb2aae58c7c7d7527c6e4
parent 84380108
Loading
Loading
Loading
Loading
+18 −17
Original line number Diff line number Diff line
@@ -7175,7 +7175,7 @@ public class Activity extends ContextThemeWrapper
            // Handle special cases
            switch (args[0]) {
                case "--autofill":
                    getAutofillClientController().dumpAutofillManager(prefix, writer);
                    dumpAutofillManager(prefix, writer, args);
                    return;
                case "--contentcapture":
                    dumpContentCaptureManager(prefix, writer);
@@ -7243,10 +7243,6 @@ public class Activity extends ContextThemeWrapper

        mHandler.getLooper().dump(new PrintWriterPrinter(writer), prefix);

        getAutofillClientController().dumpAutofillManager(prefix, writer);
        dumpContentCaptureManager(prefix, writer);
        dumpUiTranslation(prefix, writer);

        ResourcesManager.getInstance().dump(prefix, writer);

        if (mDumpableContainer != null) {
@@ -7254,21 +7250,26 @@ public class Activity extends ContextThemeWrapper
        }
    }

    void dumpContentCaptureManager(String prefix, PrintWriter writer) {
        final ContentCaptureManager cm = getContentCaptureManager();
        if (cm != null) {
            cm.dump(prefix, writer);
        } else {
            writer.print(prefix); writer.println("No ContentCaptureManager");
    private void dumpContentCaptureManager(String prefix, PrintWriter writer) {
        getContentCaptureManager();
        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);
    }

    void dumpUiTranslation(String prefix, PrintWriter writer) {
        if (mUiTranslationController != null) {
            mUiTranslationController.dump(prefix, writer);
        } else {
            writer.print(prefix); writer.println("No UiTranslationController");
    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);
    }

    /**
+0 −2
Original line number Diff line number Diff line
@@ -35,8 +35,6 @@ public interface Dumpable {
        return getClass().getName();
    }

    //TODO(b/149254050): decide whether it should take a ParcelFileDescription as well.

    /**
     * Dumps the internal state into the given {@code writer}.
     *
+13 −5
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.graphics.Rect;
import android.os.Bundle;
import android.os.IBinder;
import android.text.TextUtils;
import android.util.Dumpable;
import android.util.Log;
import android.util.Slog;
import android.view.KeyEvent;
@@ -43,7 +44,7 @@ import java.util.Arrays;
 *
 * @hide
 */
public final class AutofillClientController implements AutofillManager.AutofillClient {
public final class AutofillClientController implements AutofillManager.AutofillClient, Dumpable {

    private static final String TAG = "AutofillClientController";

@@ -54,6 +55,8 @@ public final class AutofillClientController implements AutofillManager.AutofillC
    public static final String AUTOFILL_RESET_NEEDED = "@android:autofillResetNeeded";
    public static final String AUTO_FILL_AUTH_WHO_PREFIX = "@android:autoFillAuth:";

    public static final String DUMPABLE_NAME = "AutofillManager";

    /** The last autofill id that was returned from {@link #getNextAutofillId()} */
    public int mLastAutofillId = View.LAST_APP_AUTOFILL_ID;

@@ -73,6 +76,7 @@ public final class AutofillClientController implements AutofillManager.AutofillC
     */
    public AutofillClientController(Activity activity) {
        mActivity = activity;
        activity.addDumpable(this);
    }

    private AutofillManager getAutofillManager() {
@@ -280,10 +284,14 @@ public final class AutofillClientController implements AutofillManager.AutofillC
        }
    }

    /**
     * Prints autofill related information for the Activity.
     */
    public void dumpAutofillManager(String prefix, PrintWriter writer) {
    @Override
    public String getDumpableName() {
        return DUMPABLE_NAME;
    }

    @Override
    public void dump(PrintWriter writer, String[] args) {
        final String prefix = "";
        final AutofillManager afm = getAutofillManager();
        if (afm != null) {
            afm.dump(prefix, writer);
+37 −20
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.annotation.SystemService;
import android.annotation.TestApi;
import android.annotation.UiThread;
import android.annotation.UserIdInt;
import android.app.Activity;
import android.app.Service;
import android.content.ComponentName;
import android.content.ContentCaptureOptions;
@@ -41,6 +42,7 @@ import android.os.Looper;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.Dumpable;
import android.util.Log;
import android.util.Slog;
import android.view.View;
@@ -215,6 +217,9 @@ public final class ContentCaptureManager {
    /** @hide */
    public static final boolean DEBUG = false;

    /** @hide */
    public static final String DUMPABLE_NAME = "ContentCaptureManager";

    /** Error happened during the data sharing session. */
    public static final int DATA_SHARE_ERROR_UNKNOWN = 1;

@@ -402,6 +407,9 @@ public final class ContentCaptureManager {
        mService = Objects.requireNonNull(service, "service cannot be null");
        mOptions = Objects.requireNonNull(options, "options cannot be null");

        if (context instanceof Activity) {
            ((Activity) context).addDumpable(new Dumper());
        }
        ContentCaptureHelper.setLoggingLevel(mOptions.loggingLevel);

        if (sVerbose) Log.v(TAG, "Constructor for " + context.getPackageName());
@@ -740,8 +748,11 @@ public final class ContentCaptureManager {
        return resultReceiver;
    }

    /** @hide */
    public void dump(String prefix, PrintWriter pw) {
    // NOTE: ContentCaptureManager cannot implement it directly as it would be exposed as public API
    private final class Dumper implements Dumpable {
        @Override
        public void dump(@NonNull PrintWriter pw, @Nullable String[] args) {
            String prefix = "";
            pw.print(prefix); pw.println("ContentCaptureManager");
            final String prefix2 = prefix + "  ";
            synchronized (mLock) {
@@ -764,6 +775,12 @@ public final class ContentCaptureManager {
            }
        }

        @Override
        public String getDumpableName() {
            return DUMPABLE_NAME;
        }
    }

    /**
     * Resets the temporary content capture service implementation to the default component.
     *
+15 −5
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.os.HandlerThread;
import android.os.Process;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Dumpable;
import android.util.IntArray;
import android.util.Log;
import android.util.LongSparseArray;
@@ -62,11 +63,15 @@ import java.util.function.BiConsumer;
 *
 * @hide
 */
public class UiTranslationController {
public class UiTranslationController implements Dumpable {

    public static final boolean DEBUG = Log.isLoggable(UiTranslationManager.LOG_TAG, Log.DEBUG);

    /** @hide */
    public static final String DUMPABLE_NAME = "UiTranslationController";

    private static final String TAG = "UiTranslationController";

    @NonNull
    private final Activity mActivity;
    @NonNull
@@ -104,6 +109,7 @@ public class UiTranslationController {
                        Process.THREAD_PRIORITY_FOREGROUND);
        mWorkerThread.start();
        mWorkerHandler = mWorkerThread.getThreadHandler();
        activity.addDumpable(this);
    }

    /**
@@ -206,10 +212,14 @@ public class UiTranslationController {
        mLastRequestAutofillIds.addAll(views);
    }

    /**
     * Called to dump the translation information for Activity.
     */
    public void dump(String outerPrefix, PrintWriter pw) {
    @Override
    public String getDumpableName() {
        return DUMPABLE_NAME;
    }

    @Override
    public void dump(PrintWriter pw, String[] args) {
        String outerPrefix = "";
        pw.print(outerPrefix); pw.println("UiTranslationController:");
        final String pfx = outerPrefix + "  ";
        pw.print(pfx); pw.print("activity: "); pw.print(mActivity);
Loading