OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "chrome/browser/ui/android/autofill/credit_card_scanner_view_android.h" | 5 #include "chrome/browser/ui/android/autofill/credit_card_scanner_view_android.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/android/context_utils.h" | 9 #include "base/android/context_utils.h" |
10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
11 #include "base/android/jni_string.h" | 11 #include "base/android/jni_string.h" |
12 #include "base/feature_list.h" | 12 #include "base/feature_list.h" |
13 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" |
14 #include "chrome/browser/ui/android/view_android_helper.h" | 14 #include "chrome/browser/ui/android/view_android_helper.h" |
15 #include "chrome/browser/ui/autofill/credit_card_scanner_view_delegate.h" | 15 #include "chrome/browser/ui/autofill/credit_card_scanner_view_delegate.h" |
16 #include "components/autofill/core/browser/autofill_experiments.h" | 16 #include "components/autofill/core/browser/autofill_experiments.h" |
17 #include "components/autofill/core/browser/credit_card.h" | 17 #include "components/autofill/core/browser/credit_card.h" |
18 #include "components/autofill/core/browser/field_types.h" | 18 #include "components/autofill/core/browser/field_types.h" |
19 #include "content/public/browser/android/content_view_core.h" | 19 #include "content/public/browser/android/content_view_core.h" |
20 #include "jni/CreditCardScanner_jni.h" | 20 #include "jni/CreditCardScannerBridge_jni.h" |
21 #include "ui/android/view_android.h" | 21 #include "ui/android/view_android.h" |
22 #include "ui/android/window_android.h" | 22 #include "ui/android/window_android.h" |
23 | 23 |
24 using base::android::JavaParamRef; | 24 using base::android::JavaParamRef; |
25 | 25 |
26 namespace autofill { | 26 namespace autofill { |
27 | 27 |
28 // static | 28 // static |
29 bool CreditCardScannerView::CanShow() { | 29 bool CreditCardScannerView::CanShow() { |
30 JNIEnv* env = base::android::AttachCurrentThread(); | 30 JNIEnv* env = base::android::AttachCurrentThread(); |
31 base::android::ScopedJavaGlobalRef<jobject> java_object( | 31 base::android::ScopedJavaGlobalRef<jobject> java_object( |
32 Java_CreditCardScanner_create( | 32 Java_CreditCardScannerBridge_create( |
33 env, 0, base::android::GetApplicationContext(), nullptr)); | 33 env, 0, base::android::GetApplicationContext(), nullptr)); |
34 return Java_CreditCardScanner_canScan(env, java_object); | 34 return Java_CreditCardScannerBridge_canScan(env, java_object); |
35 } | 35 } |
36 | 36 |
37 // static | 37 // static |
38 std::unique_ptr<CreditCardScannerView> CreditCardScannerView::Create( | 38 std::unique_ptr<CreditCardScannerView> CreditCardScannerView::Create( |
39 const base::WeakPtr<CreditCardScannerViewDelegate>& delegate, | 39 const base::WeakPtr<CreditCardScannerViewDelegate>& delegate, |
40 content::WebContents* web_contents) { | 40 content::WebContents* web_contents) { |
41 return base::WrapUnique( | 41 return base::WrapUnique( |
42 new CreditCardScannerViewAndroid(delegate, web_contents)); | 42 new CreditCardScannerViewAndroid(delegate, web_contents)); |
43 } | 43 } |
44 | 44 |
45 // static | 45 // static |
46 bool CreditCardScannerViewAndroid::Register(JNIEnv* env) { | 46 bool CreditCardScannerViewAndroid::Register(JNIEnv* env) { |
47 return RegisterNativesImpl(env); | 47 return RegisterNativesImpl(env); |
48 } | 48 } |
49 | 49 |
50 CreditCardScannerViewAndroid::CreditCardScannerViewAndroid( | 50 CreditCardScannerViewAndroid::CreditCardScannerViewAndroid( |
51 const base::WeakPtr<CreditCardScannerViewDelegate>& delegate, | 51 const base::WeakPtr<CreditCardScannerViewDelegate>& delegate, |
52 content::WebContents* web_contents) | 52 content::WebContents* web_contents) |
53 : delegate_(delegate), | 53 : delegate_(delegate), |
54 java_object_(Java_CreditCardScanner_create( | 54 java_object_(Java_CreditCardScannerBridge_create( |
55 base::android::AttachCurrentThread(), | 55 base::android::AttachCurrentThread(), |
56 reinterpret_cast<intptr_t>(this), | 56 reinterpret_cast<intptr_t>(this), |
57 base::android::GetApplicationContext(), | 57 base::android::GetApplicationContext(), |
58 ViewAndroidHelper::FromWebContents(web_contents) | 58 ViewAndroidHelper::FromWebContents(web_contents) |
59 ->GetViewAndroid() | 59 ->GetViewAndroid() |
60 ->GetWindowAndroid() | 60 ->GetWindowAndroid() |
61 ->GetJavaObject())) {} | 61 ->GetJavaObject())) {} |
62 | 62 |
63 CreditCardScannerViewAndroid::~CreditCardScannerViewAndroid() {} | 63 CreditCardScannerViewAndroid::~CreditCardScannerViewAndroid() {} |
64 | 64 |
65 void CreditCardScannerViewAndroid::ScanCancelled( | 65 void CreditCardScannerViewAndroid::ScanCancelled( |
66 JNIEnv* env, | 66 JNIEnv* env, |
67 const JavaParamRef<jobject>& object) { | 67 const JavaParamRef<jobject>& object) { |
68 delegate_->ScanCancelled(); | 68 delegate_->ScanCancelled(); |
69 } | 69 } |
70 | 70 |
71 void CreditCardScannerViewAndroid::ScanCompleted( | 71 void CreditCardScannerViewAndroid::ScanCompleted( |
72 JNIEnv* env, | 72 JNIEnv* env, |
73 const JavaParamRef<jobject>& object, | 73 const JavaParamRef<jobject>& object, |
74 const JavaParamRef<jstring>& card_holder_name, | 74 const JavaParamRef<jstring>& card_holder_name, |
75 const JavaParamRef<jstring>& card_number, | 75 const JavaParamRef<jstring>& card_number, |
76 jint expiration_month, | 76 jint expiration_month, |
77 jint expiration_year) { | 77 jint expiration_year) { |
78 CreditCard card; | 78 CreditCard card; |
79 card.SetNumber(base::android::ConvertJavaStringToUTF16(env, card_number)); | 79 card.SetNumber(base::android::ConvertJavaStringToUTF16(env, card_number)); |
80 card.SetExpirationMonth(static_cast<int>(expiration_month)); | 80 card.SetExpirationMonth(static_cast<int>(expiration_month)); |
81 card.SetExpirationYear(static_cast<int>(expiration_year)); | 81 card.SetExpirationYear(static_cast<int>(expiration_year)); |
82 | 82 card.SetRawInfo( |
83 if (base::FeatureList::IsEnabled(kAutofillScanCardholderName)) { | 83 CREDIT_CARD_NAME_FULL, |
msw
2016/08/26 22:37:07
Where exactly is this checked now? I don't see it
please use gerrit instead
2016/08/29 17:58:31
I was going to rely on the implementation of the s
msw
2016/08/29 18:19:19
Can we just DCHECK that the cardholder name is bla
please use gerrit instead
2016/08/29 18:50:49
Done.
| |
84 card.SetRawInfo( | 84 base::android::ConvertJavaStringToUTF16(env, card_holder_name)); |
85 CREDIT_CARD_NAME_FULL, | |
86 base::android::ConvertJavaStringToUTF16(env, card_holder_name)); | |
87 } | |
88 | |
89 delegate_->ScanCompleted(card); | 85 delegate_->ScanCompleted(card); |
90 } | 86 } |
91 | 87 |
92 void CreditCardScannerViewAndroid::Show() { | 88 void CreditCardScannerViewAndroid::Show() { |
93 JNIEnv* env = base::android::AttachCurrentThread(); | 89 JNIEnv* env = base::android::AttachCurrentThread(); |
94 Java_CreditCardScanner_scan(env, java_object_); | 90 Java_CreditCardScannerBridge_scan(env, java_object_); |
95 } | 91 } |
96 | 92 |
97 } // namespace autofill | 93 } // namespace autofill |
OLD | NEW |