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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java

Issue 2026353002: [Autofill] Credit Card Assist Infobar (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleaning Created 4 years, 4 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.infobar; 5 package org.chromium.chrome.browser.infobar;
6 6
7 import android.graphics.Bitmap; 7 import android.graphics.Bitmap;
8 import android.text.SpannableString; 8 import android.text.SpannableString;
9 import android.text.Spanned; 9 import android.text.Spanned;
10 import android.text.style.ClickableSpan; 10 import android.text.style.ClickableSpan;
11 import android.view.View; 11 import android.view.View;
12 12
13 import org.chromium.base.annotations.CalledByNative; 13 import org.chromium.base.annotations.CalledByNative;
14 import org.chromium.chrome.browser.ResourceId; 14 import org.chromium.chrome.browser.ResourceId;
15 15
16 import java.util.ArrayList;
16 import java.util.LinkedList; 17 import java.util.LinkedList;
17 import java.util.List; 18 import java.util.List;
18 19
19 /** 20 /**
20 * An infobar for saving credit card information. 21 * An infobar for saving credit card information.
21 */ 22 */
22 public class AutofillSaveCardInfoBar extends ConfirmInfoBar { 23 public class AutofillSaveCardInfoBar extends ConfirmInfoBar {
23 /** 24 /**
24 * Detailed card information to show in the infobar.
25 */
26 public static class CardDetail {
27 /**
28 * The identifier of the drawable of the card issuer icon.
29 */
30 public int issuerIconDrawableId;
31
32 /**
33 * The label for the card.
34 */
35 public String label;
36
37 /**
38 * The sub-label for the card.
39 */
40 public String subLabel;
41
42 /**
43 * Creates a new instance of the detailed card information.
44 *
45 * @param enumeratedIconId ID corresponding to the icon that will be sho wn for this credit
46 * card. The ID must have been mapped using the ResourceMapper class
47 * before passing it to this function.
48 * @param label The credit card label, for example "***1234".
49 * @param subLabel The credit card sub-label, for example "Exp: 06/17".
50 */
51 public CardDetail(int enumeratedIconId, String label, String subLabel) {
52 this.issuerIconDrawableId = ResourceId.mapToDrawableId(enumeratedIco nId);
53 this.label = label;
54 this.subLabel = subLabel;
55 }
56 }
57
58 /**
59 * Legal message line with links to show in the infobar. 25 * Legal message line with links to show in the infobar.
60 */ 26 */
61 public static class LegalMessageLine { 27 public static class LegalMessageLine {
62 /** 28 /**
63 * A link in the legal message line. 29 * A link in the legal message line.
64 */ 30 */
65 public static class Link { 31 public static class Link {
66 /** 32 /**
67 * The starting inclusive index of the link position in the text. 33 * The starting inclusive index of the link position in the text.
68 */ 34 */
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 * Creates a new instance of the legal message line. 72 * Creates a new instance of the legal message line.
107 * 73 *
108 * @param text The plain text legal message. 74 * @param text The plain text legal message.
109 */ 75 */
110 public LegalMessageLine(String text) { 76 public LegalMessageLine(String text) {
111 this.text = text; 77 this.text = text;
112 } 78 }
113 } 79 }
114 80
115 private final long mNativeAutofillSaveCardInfoBar; 81 private final long mNativeAutofillSaveCardInfoBar;
116 private final List<CardDetail> mCardDetails = new LinkedList<CardDetail>(); 82 private final List<CardDetail> mCardDetails = new ArrayList<>();
117 private final LinkedList<LegalMessageLine> mLegalMessageLines = 83 private final LinkedList<LegalMessageLine> mLegalMessageLines =
118 new LinkedList<LegalMessageLine>(); 84 new LinkedList<LegalMessageLine>();
119 85
120 /** 86 /**
121 * Creates a new instance of the infobar. 87 * Creates a new instance of the infobar.
122 * 88 *
123 * @param nativeAutofillSaveCardInfoBar The pointer to the native object for callbacks. 89 * @param nativeAutofillSaveCardInfoBar The pointer to the native object for callbacks.
124 * @param enumeratedIconId ID corresponding to the icon that will be shown f or the InfoBar. 90 * @param enumeratedIconId ID corresponding to the icon that will be shown f or the InfoBar.
125 * The ID must have been mapped using the ResourceMa pper class before 91 * The ID must have been mapped using the ResourceMa pper class before
126 * passing it to this function. 92 * passing it to this function.
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 */ 159 */
194 @CalledByNative 160 @CalledByNative
195 private void addLinkToLastLegalMessageLine(int start, int end, String url) { 161 private void addLinkToLastLegalMessageLine(int start, int end, String url) {
196 mLegalMessageLines.getLast().links.add(new LegalMessageLine.Link(start, end, url)); 162 mLegalMessageLines.getLast().links.add(new LegalMessageLine.Link(start, end, url));
197 } 163 }
198 164
199 @Override 165 @Override
200 public void createContent(InfoBarLayout layout) { 166 public void createContent(InfoBarLayout layout) {
201 super.createContent(layout); 167 super.createContent(layout);
202 InfoBarControlLayout control = layout.addControlLayout(); 168 InfoBarControlLayout control = layout.addControlLayout();
203 for (CardDetail detail : mCardDetails) { 169 for (int i = 0; i < mCardDetails.size(); i++) {
170 CardDetail detail = mCardDetails.get(i);
204 control.addIcon(detail.issuerIconDrawableId, 0, detail.label, detail .subLabel); 171 control.addIcon(detail.issuerIconDrawableId, 0, detail.label, detail .subLabel);
205 } 172 }
206 173
207 for (LegalMessageLine line : mLegalMessageLines) { 174 for (LegalMessageLine line : mLegalMessageLines) {
208 SpannableString text = new SpannableString(line.text); 175 SpannableString text = new SpannableString(line.text);
209 for (final LegalMessageLine.Link link : line.links) { 176 for (final LegalMessageLine.Link link : line.links) {
210 text.setSpan(new ClickableSpan() { 177 text.setSpan(new ClickableSpan() {
211 @Override 178 @Override
212 public void onClick(View view) { 179 public void onClick(View view) {
213 nativeOnLegalMessageLinkClicked(mNativeAutofillSaveCardI nfoBar, link.url); 180 nativeOnLegalMessageLinkClicked(mNativeAutofillSaveCardI nfoBar, link.url);
214 } 181 }
215 }, link.start, link.end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); 182 }, link.start, link.end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
216 } 183 }
217 control.addDescription(text); 184 control.addDescription(text);
218 } 185 }
219 } 186 }
220 187
221 private native void nativeOnLegalMessageLinkClicked( 188 private native void nativeOnLegalMessageLinkClicked(
222 long nativeAutofillSaveCardInfoBar, String url); 189 long nativeAutofillSaveCardInfoBar, String url);
223 } 190 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698