Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2429)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java

Issue 2541693004: Add Information Tooltip for Public Suffix List Matches (Closed)
Patch Set: Addressed Nits Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
index 4c41262fb1945784f7eb33a5ab13b333c6e4846c..36a80ad8fdd41e2046647963cdd0c0c323f59416 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.password_manager;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.support.v7.app.AlertDialog;
import android.text.SpannableString;
@@ -14,18 +15,23 @@ import android.text.Spanned;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
+import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
+import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.signin.AccountManagementFragment;
+import org.chromium.components.url_formatter.UrlFormatter;
import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.widget.Toast;
/**
* A dialog offers the user the ability to choose credentials for authentication. User is
@@ -138,6 +144,24 @@ public class AccountChooserDialog
secondaryNameView.setVisibility(View.VISIBLE);
}
+ ImageButton pslInfoButton =
+ (ImageButton) convertView.findViewById(R.id.psl_info_btn);
+ final String originUrl = credential.getOriginUrl();
+
+ if (!originUrl.isEmpty()) {
+ pslInfoButton.setVisibility(View.VISIBLE);
+ pslInfoButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ showTooltip(
+ view,
+ UrlFormatter.formatUrlForSecurityDisplay(
+ originUrl, true /* showScheme */),
+ R.layout.material_tooltip);
+ }
+ });
+ }
+
return convertView;
}
};
@@ -181,6 +205,39 @@ public class AccountChooserDialog
mDialog.show();
}
+ private void showTooltip(View view, String message, int layoutId) {
+ Context context = view.getContext();
+ Resources resources = context.getResources();
+ LayoutInflater inflater = LayoutInflater.from(context);
+
+ TextView text = (TextView) inflater.inflate(layoutId, null);
+ text.setText(message);
+ text.announceForAccessibility(message);
+
+ final int screenWidth = resources.getDisplayMetrics().widthPixels;
+ final int screenHeight = resources.getDisplayMetrics().heightPixels;
+
+ final int[] screenPos = new int[2];
+ view.getLocationOnScreen(screenPos);
+
+ final int width = view.getWidth();
+ final int tooltipMargin = resources.getDimensionPixelSize(R.dimen.psl_info_tooltip_margin);
+
+ // The toast should be shown above and to the left (right for RTL) of the info button.
+ // In order to avoid measuring the size of the toast offsets are specified with regard
+ // to the bottom right / left corner of the screen.
+ final int xOffset = ApiCompatibilityUtils.isLayoutRtl(view)
+ ? screenPos[0]
+ : screenWidth - screenPos[0] - width;
+ final int yOffset = screenHeight - screenPos[1] + tooltipMargin;
+
+ Toast toast = new Toast(context);
+ toast.setGravity(Gravity.BOTTOM | Gravity.END, xOffset, yOffset);
+ toast.setDuration(Toast.LENGTH_SHORT);
+ toast.setView(text);
+ toast.show();
+ }
+
@CalledByNative
private void imageFetchComplete(int index, Bitmap avatarBitmap) {
if (mIsDestroyed) return;

Powered by Google App Engine
This is Rietveld 408576698