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

Commit 2b2f89d7 authored by Felipe Leme's avatar Felipe Leme Committed by android-build-merger
Browse files

Merge "Improved dump() on Autofill UI." into oc-dev

am: 1f74edd2

Change-Id: Ic590ec7047a832f067391fa29d85e68d09a27c60
parents 3c69ff32 1f74edd2
Loading
Loading
Loading
Loading
+29 −2
Original line number Diff line number Diff line
@@ -602,6 +602,31 @@ public final class AutofillManagerService extends SystemService {
        public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
            if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;

            boolean showHistory = true;
            boolean uiOnly = false;
            if (args != null) {
                for (String arg : args) {
                    switch(arg) {
                        case "--no-history":
                            showHistory = false;
                            break;
                        case "--ui-only":
                            uiOnly = true;
                            break;
                        case "--help":
                            pw.println("Usage: dumpsys autofill [--ui-only|--no-history]");
                            return;
                        default:
                            throw new IllegalArgumentException("Invalid dump arg: " + arg);
                    }
                }
            }

            if (uiOnly) {
                mUi.dump(pw);
                return;
            }

            boolean oldDebug = sDebug;
            try {
                synchronized (mLock) {
@@ -624,8 +649,10 @@ public final class AutofillManagerService extends SystemService {
                    }
                    mUi.dump(pw);
                }
                if (showHistory) {
                    pw.println("Requests history:");
                    mRequestsHistory.reverseDump(fd, pw, args);
                }
            } finally {
                setDebugLocked(oldDebug);
            }
+3 −0
Original line number Diff line number Diff line
@@ -1043,6 +1043,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
                }
                break;
            case ACTION_VIEW_ENTERED:
                if (sVerbose && virtualBounds != null) {
                    Slog.w(TAG, "entered on virtual child " + id + ": " + virtualBounds);
                }
                requestNewFillResponseIfNecessaryLocked(id, viewState, flags);

                // Remove the UI if the ViewState has changed.
+6 −1
Original line number Diff line number Diff line
@@ -282,13 +282,18 @@ public final class AutoFillUI {
        pw.println("Autofill UI");
        final String prefix = "  ";
        final String prefix2 = "    ";
        pw.print(prefix); pw.print("showsSaveUi: "); pw.println(mSaveUi != null);
        if (mFillUi != null) {
            pw.print(prefix); pw.println("showsFillUi: true");
            mFillUi.dump(pw, prefix2);
        } else {
            pw.print(prefix); pw.println("showsFillUi: false");
        }
        if (mSaveUi != null) {
            pw.print(prefix); pw.println("showsSaveUi: true");
            mSaveUi.dump(pw, prefix2);
        } else {
            pw.print(prefix); pw.println("showsSaveUi: false");
        }
    }

    @android.annotation.UiThread
+17 −0
Original line number Diff line number Diff line
@@ -398,6 +398,7 @@ final class FillUi {
            }
            return false;
        }

    }

    public void dump(PrintWriter pw, String prefix) {
@@ -408,5 +409,21 @@ final class FillUi {
        pw.print(prefix); pw.print("mContentWidth: "); pw.println(mContentWidth);
        pw.print(prefix); pw.print("mContentHeight: "); pw.println(mContentHeight);
        pw.print(prefix); pw.print("mDestroyed: "); pw.println(mDestroyed);
        pw.print(prefix); pw.print("mWindow: ");
        if (mWindow == null) {
            pw.println("N/A");
        } else {
            final String prefix2 = prefix + "  ";
            pw.println();
            pw.print(prefix2); pw.print("showing: "); pw.println(mWindow.mShowing);
            pw.print(prefix2); pw.print("view: "); pw.println(mWindow.mContentView);
            pw.print(prefix2); pw.print("screen coordinates: ");
            if (mWindow.mContentView == null) {
                pw.println("N/A");
            } else {
                final int[] coordinates = mWindow.mContentView.getLocationOnScreen();
                pw.print(coordinates[0]); pw.print("x"); pw.println(coordinates[1]);
            }
        }
    }
}
+29 −11
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ import android.view.View;
import com.android.internal.R;
import com.android.server.UiThread;

import java.io.PrintWriter;

/**
 * Autofill Save Prompt
 */
@@ -96,6 +98,9 @@ final class SaveUi {

    private final @NonNull OneTimeListener mListener;

    private final CharSequence mTitle;
    private final CharSequence mSubTitle;

    private boolean mDestroyed;

    SaveUi(@NonNull Context context, @NonNull CharSequence providerLabel, @NonNull SaveInfo info,
@@ -126,37 +131,36 @@ final class SaveUi {
            types.add(context.getString(R.string.autofill_save_type_email_address));
        }

        final CharSequence title;
        switch (types.size()) {
            case 1:
                title = Html.fromHtml(context.getString(R.string.autofill_save_title_with_type,
                mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_type,
                        types.valueAt(0), providerLabel), 0);
                break;
            case 2:
                title = Html.fromHtml(context.getString(R.string.autofill_save_title_with_2types,
                mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_2types,
                        types.valueAt(0), types.valueAt(1), providerLabel), 0);
                break;
            case 3:
                title = Html.fromHtml(context.getString(R.string.autofill_save_title_with_3types,
                mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_3types,
                        types.valueAt(0), types.valueAt(1), types.valueAt(2), providerLabel), 0);
                break;
            default:
                // Use generic if more than 3 or invalid type (size 0).
                title = Html.fromHtml(
                mTitle = Html.fromHtml(
                        context.getString(R.string.autofill_save_title, providerLabel), 0);
        }

        titleView.setText(title);
        final CharSequence subTitle = info.getDescription();
        if (subTitle != null) {
        titleView.setText(mTitle);
        mSubTitle = info.getDescription();
        if (mSubTitle != null) {
            final TextView subTitleView = (TextView) view.findViewById(R.id.autofill_save_subtitle);
            subTitleView.setText(subTitle);
            subTitleView.setText(mSubTitle);
            subTitleView.setVisibility(View.VISIBLE);
        }

        Slog.i(TAG, "Showing save dialog: " + title);
        Slog.i(TAG, "Showing save dialog: " + mTitle);
        if (sDebug) {
            Slog.d(TAG, "SubTitle: " + subTitle);
            Slog.d(TAG, "SubTitle: " + mSubTitle);
        }

        final TextView noButton = view.findViewById(R.id.autofill_save_no);
@@ -207,4 +211,18 @@ final class SaveUi {
            throw new IllegalStateException("cannot interact with a destroyed instance");
        }
    }

    void dump(PrintWriter pw, String prefix) {
        pw.print(prefix); pw.print("title: "); pw.println(mTitle);
        pw.print(prefix); pw.print("subtitle: "); pw.println(mSubTitle);

        final View view = mDialog.getWindow().getDecorView();
        final int[] loc = view.getLocationOnScreen();
        pw.print(prefix); pw.print("coordinates: ");
            pw.print('('); pw.print(loc[0]); pw.print(','); pw.print(loc[1]);pw.print(')');
            pw.print('(');
                pw.print(loc[0] + view.getWidth()); pw.print(',');
                pw.print(loc[1] + view.getHeight());pw.println(')');
        pw.print(prefix); pw.print("destroyed: "); pw.println(mDestroyed);
    }
}