Loading services/autofill/java/com/android/server/autofill/AutofillManagerService.java +29 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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); } Loading services/autofill/java/com/android/server/autofill/Session.java +3 −0 Original line number Diff line number Diff line Loading @@ -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. Loading services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java +6 −1 Original line number Diff line number Diff line Loading @@ -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 Loading services/autofill/java/com/android/server/autofill/ui/FillUi.java +17 −0 Original line number Diff line number Diff line Loading @@ -398,6 +398,7 @@ final class FillUi { } return false; } } public void dump(PrintWriter pw, String prefix) { Loading @@ -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]); } } } } services/autofill/java/com/android/server/autofill/ui/SaveUi.java +29 −11 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -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, Loading Loading @@ -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); Loading Loading @@ -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); } } Loading
services/autofill/java/com/android/server/autofill/AutofillManagerService.java +29 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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); } Loading
services/autofill/java/com/android/server/autofill/Session.java +3 −0 Original line number Diff line number Diff line Loading @@ -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. Loading
services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java +6 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
services/autofill/java/com/android/server/autofill/ui/FillUi.java +17 −0 Original line number Diff line number Diff line Loading @@ -398,6 +398,7 @@ final class FillUi { } return false; } } public void dump(PrintWriter pw, String prefix) { Loading @@ -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]); } } } }
services/autofill/java/com/android/server/autofill/ui/SaveUi.java +29 −11 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -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, Loading Loading @@ -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); Loading Loading @@ -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); } }