| Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarControlLayout.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarControlLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarControlLayout.java
|
| index 7bb2d2dec166408d794b1769090e5bc8a1cae03c..03e8d45caacc7d8fa90af3be081689f89ffe155c 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarControlLayout.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarControlLayout.java
|
| @@ -36,6 +36,9 @@ import org.chromium.chrome.R;
|
| * layout algorithm to match.
|
| *
|
| * TODO(dfalcantara): Standardize all the possible control types.
|
| + * TODO(dfalcantara): The line spacing multiplier is applied to all lines in JB & KK, even if the
|
| + * TextView has only one line. This throws off vertical alignment. Find a
|
| + * solution that hopefully doesn't involve subclassing the TextView.
|
| */
|
| public final class InfoBarControlLayout extends ViewGroup {
|
|
|
| @@ -185,6 +188,43 @@ public final class InfoBarControlLayout extends ViewGroup {
|
| }
|
|
|
| /**
|
| + * Adds an icon with a descriptive message to the layout.
|
| + *
|
| + * -----------------------------------------------------
|
| + * | ICON | PRIMARY MESSAGE SECONDARY MESSAGE |
|
| + * -----------------------------------------------------
|
| + * If an icon is not provided, the ImageView that would normally show it is hidden.
|
| + *
|
| + * @param iconResourceId ID of the drawable to use for the icon.
|
| + * @param primaryMessage Message to display for the toggle.
|
| + * @param secondaryMessage Additional descriptive text for the toggle. May be null.
|
| + */
|
| + public View addIcon(
|
| + int iconResourceId, CharSequence primaryMessage, CharSequence secondaryMessage) {
|
| + LinearLayout layout = (LinearLayout) LayoutInflater.from(getContext()).inflate(
|
| + R.layout.infobar_control_icon_with_description, this, false);
|
| + addView(layout, new ControlLayoutParams());
|
| +
|
| + ImageView iconView = (ImageView) layout.findViewById(R.id.control_icon);
|
| + iconView.setImageResource(iconResourceId);
|
| +
|
| + // The primary message text is always displayed.
|
| + TextView primaryView = (TextView) layout.findViewById(R.id.control_message);
|
| + primaryView.setText(primaryMessage);
|
| +
|
| + // The secondary message text is optional.
|
| + TextView secondaryView =
|
| + (TextView) layout.findViewById(R.id.control_secondary_message);
|
| + if (secondaryMessage == null) {
|
| + layout.removeView(secondaryView);
|
| + } else {
|
| + secondaryView.setText(secondaryMessage);
|
| + }
|
| +
|
| + return layout;
|
| + }
|
| +
|
| + /**
|
| * Creates a standard toggle switch and adds it to the layout.
|
| *
|
| * -------------------------------------------------
|
| @@ -203,14 +243,14 @@ public final class InfoBarControlLayout extends ViewGroup {
|
| R.layout.infobar_control_toggle, this, false);
|
| addView(switchLayout, new ControlLayoutParams());
|
|
|
| - ImageView iconView = (ImageView) switchLayout.findViewById(R.id.control_toggle_icon);
|
| + ImageView iconView = (ImageView) switchLayout.findViewById(R.id.control_icon);
|
| if (iconResourceId == 0) {
|
| switchLayout.removeView(iconView);
|
| } else {
|
| iconView.setImageResource(iconResourceId);
|
| }
|
|
|
| - TextView messageView = (TextView) switchLayout.findViewById(R.id.control_toggle_message);
|
| + TextView messageView = (TextView) switchLayout.findViewById(R.id.control_message);
|
| messageView.setText(toggleMessage);
|
|
|
| SwitchCompat switchView =
|
|
|