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

Side by Side Diff: chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc

Issue 1540423004: Add card details and legal message to Android save credit card infobar. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Allow copying LegalMessageLine. Created 4 years, 11 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/android/infobars/autofill_save_card_infobar.h"
6
7 #include <utility>
8
9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h"
11 #include "chrome/browser/android/resource_mapper.h"
12 #include "chrome/browser/infobars/infobar_service.h"
13 #include "components/autofill/core/browser/autofill_save_card_infobar_delegate_m obile.h"
14 #include "components/autofill/core/browser/autofill_save_card_infobar_mobile.h"
15 #include "components/autofill/core/browser/legal_message_line.h"
16 #include "jni/AutofillSaveCardInfoBar_jni.h"
17 #include "ui/gfx/android/java_bitmap.h"
18 #include "ui/gfx/image/image.h"
19 #include "url/gurl.h"
20
21 namespace autofill {
22
23 scoped_ptr<infobars::InfoBar> CreateSaveCardInfoBarMobile(
24 scoped_ptr<AutofillSaveCardInfoBarDelegateMobile> delegate) {
25 return make_scoped_ptr(new AutofillSaveCardInfoBar(std::move(delegate)));
26 }
27
28 } // namespace autofill
29
30 AutofillSaveCardInfoBar::AutofillSaveCardInfoBar(
31 scoped_ptr<autofill::AutofillSaveCardInfoBarDelegateMobile> delegate)
32 : ConfirmInfoBar(std::move(delegate)) {}
33
34 AutofillSaveCardInfoBar::~AutofillSaveCardInfoBar() {}
35
36 void AutofillSaveCardInfoBar::OnLegalMessageLinkClicked(JNIEnv* env,
37 jobject obj,
38 jstring url) {
39 GetSaveCardDelegate()->OnLegalMessageLinkClicked(
40 GURL(base::android::ConvertJavaStringToUTF16(env, url)));
41 }
42
43 // static
44 bool AutofillSaveCardInfoBar::Register(JNIEnv* env) {
45 return RegisterNativesImpl(env);
46 }
47
48 base::android::ScopedJavaLocalRef<jobject>
49 AutofillSaveCardInfoBar::CreateRenderInfoBar(JNIEnv* env) {
50 autofill::AutofillSaveCardInfoBarDelegateMobile* delegate =
51 GetSaveCardDelegate();
52 ScopedJavaLocalRef<jobject> java_bitmap;
53 if (delegate->GetIconId() == infobars::InfoBarDelegate::kNoIconID &&
54 !delegate->GetIcon().IsEmpty()) {
55 java_bitmap = gfx::ConvertToJavaBitmap(delegate->GetIcon().ToSkBitmap());
56 }
57
58 base::android::ScopedJavaLocalRef<jstring> ok_button_text =
59 base::android::ConvertUTF16ToJavaString(
60 env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK));
61 base::android::ScopedJavaLocalRef<jstring> cancel_button_text =
62 base::android::ConvertUTF16ToJavaString(
63 env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL));
64 base::android::ScopedJavaLocalRef<jobject> java_delegate =
65 Java_AutofillSaveCardInfoBar_create(
66 env, reinterpret_cast<intptr_t>(this), GetEnumeratedIconId(),
67 java_bitmap.obj(),
68 base::android::ConvertUTF16ToJavaString(
69 env, delegate->GetMessageText()).obj(),
70 base::android::ConvertUTF16ToJavaString(
71 env, delegate->GetLinkText()).obj(),
72 ok_button_text.obj(), cancel_button_text.obj());
73
74 Java_AutofillSaveCardInfoBar_addDetail(
75 env, java_delegate.obj(),
76 ResourceMapper::MapFromChromiumId(delegate->issuer_icon_id()),
77 base::android::ConvertUTF16ToJavaString(
78 env, delegate->card_label()).obj(),
79 base::android::ConvertUTF16ToJavaString(
80 env, delegate->card_sub_label()).obj());
81
82 for (const auto& line : delegate->legal_messages()) {
83 Java_AutofillSaveCardInfoBar_addLegalMessageLine(
84 env, java_delegate.obj(),
85 base::android::ConvertUTF16ToJavaString(env, line->text()).obj());
86 for (const auto& link : line->links()) {
87 Java_AutofillSaveCardInfoBar_addLinkToLastLegalMessageLine(
88 env, java_delegate.obj(), link.range.start(), link.range.end(),
89 base::android::ConvertUTF8ToJavaString(env, link.url.spec()).obj());
90 }
91 }
92
93 return java_delegate;
94 }
95
96 autofill::AutofillSaveCardInfoBarDelegateMobile*
97 AutofillSaveCardInfoBar::GetSaveCardDelegate() {
98 return static_cast<autofill::AutofillSaveCardInfoBarDelegateMobile*>(
99 GetDelegate());
100 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698