OLD | NEW |
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 #include "chrome/browser/android/payments/service_worker_payment_app_bridge.h" | 5 #include "chrome/browser/android/payments/service_worker_payment_app_bridge.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/android/jni_array.h" | 9 #include "base/android/jni_array.h" |
10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
11 #include "base/android/scoped_java_ref.h" | 11 #include "base/android/scoped_java_ref.h" |
12 #include "chrome/browser/profiles/profile_manager.h" | 12 #include "chrome/browser/profiles/profile_manager.h" |
13 #include "components/payments/mojom/payment_app.mojom.h" | 13 #include "components/payments/mojom/payment_app.mojom.h" |
14 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
15 #include "content/public/browser/payment_app_provider.h" | 15 #include "content/public/browser/payment_app_provider.h" |
16 #include "content/public/browser/stored_payment_instrument.h" | 16 #include "content/public/browser/stored_payment_instrument.h" |
17 #include "content/public/browser/web_contents.h" | 17 #include "content/public/browser/web_contents.h" |
18 #include "jni/ServiceWorkerPaymentAppBridge_jni.h" | 18 #include "jni/ServiceWorkerPaymentAppBridge_jni.h" |
19 | 19 |
20 namespace { | 20 namespace { |
21 | 21 |
22 using ::base::android::AttachCurrentThread; | 22 using ::base::android::AttachCurrentThread; |
23 using ::base::android::ConvertJavaStringToUTF8; | 23 using ::base::android::ConvertJavaStringToUTF8; |
24 using ::base::android::ConvertUTF8ToJavaString; | 24 using ::base::android::ConvertUTF8ToJavaString; |
25 using ::base::android::JavaParamRef; | 25 using ::base::android::JavaParamRef; |
26 using ::base::android::JavaRef; | 26 using ::base::android::JavaRef; |
27 using ::base::android::ScopedJavaGlobalRef; | 27 using ::base::android::ScopedJavaGlobalRef; |
28 using ::base::android::ScopedJavaLocalRef; | 28 using ::base::android::ScopedJavaLocalRef; |
29 using ::base::android::ToJavaArrayOfStrings; | 29 using ::base::android::ToJavaArrayOfStrings; |
30 using ::payments::mojom::PaymentAppRequest; | 30 using ::payments::mojom::PaymentRequestEventData; |
31 using ::payments::mojom::PaymentAppRequestPtr; | 31 using ::payments::mojom::PaymentRequestEventDataPtr; |
32 using ::payments::mojom::PaymentCurrencyAmount; | 32 using ::payments::mojom::PaymentCurrencyAmount; |
33 using ::payments::mojom::PaymentDetailsModifier; | 33 using ::payments::mojom::PaymentDetailsModifier; |
34 using ::payments::mojom::PaymentDetailsModifierPtr; | 34 using ::payments::mojom::PaymentDetailsModifierPtr; |
35 using ::payments::mojom::PaymentItem; | 35 using ::payments::mojom::PaymentItem; |
36 using ::payments::mojom::PaymentMethodData; | 36 using ::payments::mojom::PaymentMethodData; |
37 using ::payments::mojom::PaymentMethodDataPtr; | 37 using ::payments::mojom::PaymentMethodDataPtr; |
38 | 38 |
39 void OnGotAllPaymentApps(const JavaRef<jobject>& jweb_contents, | 39 void OnGotAllPaymentApps(const JavaRef<jobject>& jweb_contents, |
40 const JavaRef<jobject>& jcallback, | 40 const JavaRef<jobject>& jcallback, |
41 content::PaymentAppProvider::PaymentApps apps) { | 41 content::PaymentAppProvider::PaymentApps apps) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 const JavaParamRef<jstring>& jpayment_request_origin, | 94 const JavaParamRef<jstring>& jpayment_request_origin, |
95 const JavaParamRef<jstring>& jpayment_request_id, | 95 const JavaParamRef<jstring>& jpayment_request_id, |
96 const JavaParamRef<jobjectArray>& jmethod_data, | 96 const JavaParamRef<jobjectArray>& jmethod_data, |
97 const JavaParamRef<jobject>& jtotal, | 97 const JavaParamRef<jobject>& jtotal, |
98 const JavaParamRef<jobjectArray>& jmodifiers, | 98 const JavaParamRef<jobjectArray>& jmodifiers, |
99 const JavaParamRef<jstring>& jinstrument_key, | 99 const JavaParamRef<jstring>& jinstrument_key, |
100 const JavaParamRef<jobject>& jcallback) { | 100 const JavaParamRef<jobject>& jcallback) { |
101 content::WebContents* web_contents = | 101 content::WebContents* web_contents = |
102 content::WebContents::FromJavaWebContents(jweb_contents); | 102 content::WebContents::FromJavaWebContents(jweb_contents); |
103 | 103 |
104 PaymentAppRequestPtr app_request = PaymentAppRequest::New(); | 104 PaymentRequestEventDataPtr event_data = PaymentRequestEventData::New(); |
105 | 105 |
106 app_request->top_level_origin = | 106 event_data->top_level_origin = |
107 GURL(ConvertJavaStringToUTF8(env, jtop_level_origin)); | 107 GURL(ConvertJavaStringToUTF8(env, jtop_level_origin)); |
108 app_request->payment_request_origin = | 108 event_data->payment_request_origin = |
109 GURL(ConvertJavaStringToUTF8(env, jpayment_request_origin)); | 109 GURL(ConvertJavaStringToUTF8(env, jpayment_request_origin)); |
110 app_request->payment_request_id = | 110 event_data->payment_request_id = |
111 ConvertJavaStringToUTF8(env, jpayment_request_id); | 111 ConvertJavaStringToUTF8(env, jpayment_request_id); |
112 | 112 |
113 for (jsize i = 0; i < env->GetArrayLength(jmethod_data); i++) { | 113 for (jsize i = 0; i < env->GetArrayLength(jmethod_data); i++) { |
114 ScopedJavaLocalRef<jobject> element( | 114 ScopedJavaLocalRef<jobject> element( |
115 env, env->GetObjectArrayElement(jmethod_data, i)); | 115 env, env->GetObjectArrayElement(jmethod_data, i)); |
116 PaymentMethodDataPtr methodData = PaymentMethodData::New(); | 116 PaymentMethodDataPtr methodData = PaymentMethodData::New(); |
117 base::android::AppendJavaStringArrayToStringVector( | 117 base::android::AppendJavaStringArrayToStringVector( |
118 env, | 118 env, |
119 Java_ServiceWorkerPaymentAppBridge_getSupportedMethodsFromMethodData( | 119 Java_ServiceWorkerPaymentAppBridge_getSupportedMethodsFromMethodData( |
120 env, element) | 120 env, element) |
121 .obj(), | 121 .obj(), |
122 &methodData->supported_methods); | 122 &methodData->supported_methods); |
123 methodData->stringified_data = ConvertJavaStringToUTF8( | 123 methodData->stringified_data = ConvertJavaStringToUTF8( |
124 env, | 124 env, |
125 Java_ServiceWorkerPaymentAppBridge_getStringifiedDataFromMethodData( | 125 Java_ServiceWorkerPaymentAppBridge_getStringifiedDataFromMethodData( |
126 env, element)); | 126 env, element)); |
127 app_request->method_data.push_back(std::move(methodData)); | 127 event_data->method_data.push_back(std::move(methodData)); |
128 } | 128 } |
129 | 129 |
130 app_request->total = PaymentItem::New(); | 130 event_data->total = PaymentItem::New(); |
131 app_request->total->label = ConvertJavaStringToUTF8( | 131 event_data->total->label = ConvertJavaStringToUTF8( |
132 env, | 132 env, |
133 Java_ServiceWorkerPaymentAppBridge_getLabelFromPaymentItem(env, jtotal)); | 133 Java_ServiceWorkerPaymentAppBridge_getLabelFromPaymentItem(env, jtotal)); |
134 app_request->total->amount = PaymentCurrencyAmount::New(); | 134 event_data->total->amount = PaymentCurrencyAmount::New(); |
135 app_request->total->amount->currency = ConvertJavaStringToUTF8( | 135 event_data->total->amount->currency = ConvertJavaStringToUTF8( |
136 env, Java_ServiceWorkerPaymentAppBridge_getCurrencyFromPaymentItem( | 136 env, Java_ServiceWorkerPaymentAppBridge_getCurrencyFromPaymentItem( |
137 env, jtotal)); | 137 env, jtotal)); |
138 app_request->total->amount->value = ConvertJavaStringToUTF8( | 138 event_data->total->amount->value = ConvertJavaStringToUTF8( |
139 env, | 139 env, |
140 Java_ServiceWorkerPaymentAppBridge_getValueFromPaymentItem(env, jtotal)); | 140 Java_ServiceWorkerPaymentAppBridge_getValueFromPaymentItem(env, jtotal)); |
141 | 141 |
142 for (jsize i = 0; i < env->GetArrayLength(jmodifiers); i++) { | 142 for (jsize i = 0; i < env->GetArrayLength(jmodifiers); i++) { |
143 ScopedJavaLocalRef<jobject> jmodifier( | 143 ScopedJavaLocalRef<jobject> jmodifier( |
144 env, env->GetObjectArrayElement(jmodifiers, i)); | 144 env, env->GetObjectArrayElement(jmodifiers, i)); |
145 PaymentDetailsModifierPtr modifier = PaymentDetailsModifier::New(); | 145 PaymentDetailsModifierPtr modifier = PaymentDetailsModifier::New(); |
146 | 146 |
147 ScopedJavaLocalRef<jobject> jtotal = | 147 ScopedJavaLocalRef<jobject> jtotal = |
148 Java_ServiceWorkerPaymentAppBridge_getTotalFromModifier(env, jmodifier); | 148 Java_ServiceWorkerPaymentAppBridge_getTotalFromModifier(env, jmodifier); |
(...skipping 17 matching lines...) Expand all Loading... |
166 env, | 166 env, |
167 Java_ServiceWorkerPaymentAppBridge_getSupportedMethodsFromMethodData( | 167 Java_ServiceWorkerPaymentAppBridge_getSupportedMethodsFromMethodData( |
168 env, jmodifier_method_data) | 168 env, jmodifier_method_data) |
169 .obj(), | 169 .obj(), |
170 &modifier->method_data->supported_methods); | 170 &modifier->method_data->supported_methods); |
171 modifier->method_data->stringified_data = ConvertJavaStringToUTF8( | 171 modifier->method_data->stringified_data = ConvertJavaStringToUTF8( |
172 env, | 172 env, |
173 Java_ServiceWorkerPaymentAppBridge_getStringifiedDataFromMethodData( | 173 Java_ServiceWorkerPaymentAppBridge_getStringifiedDataFromMethodData( |
174 env, jmodifier_method_data)); | 174 env, jmodifier_method_data)); |
175 | 175 |
176 app_request->modifiers.push_back(std::move(modifier)); | 176 event_data->modifiers.push_back(std::move(modifier)); |
177 } | 177 } |
178 | 178 |
179 app_request->instrument_key = ConvertJavaStringToUTF8(env, jinstrument_key); | 179 event_data->instrument_key = ConvertJavaStringToUTF8(env, jinstrument_key); |
180 | 180 |
181 content::PaymentAppProvider::GetInstance()->InvokePaymentApp( | 181 content::PaymentAppProvider::GetInstance()->InvokePaymentApp( |
182 web_contents->GetBrowserContext(), registration_id, | 182 web_contents->GetBrowserContext(), registration_id, std::move(event_data), |
183 std::move(app_request), | |
184 base::Bind(&OnPaymentAppInvoked, | 183 base::Bind(&OnPaymentAppInvoked, |
185 ScopedJavaGlobalRef<jobject>(env, jweb_contents), | 184 ScopedJavaGlobalRef<jobject>(env, jweb_contents), |
186 ScopedJavaGlobalRef<jobject>(env, jcallback))); | 185 ScopedJavaGlobalRef<jobject>(env, jcallback))); |
187 } | 186 } |
188 | 187 |
189 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) { | 188 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) { |
190 return RegisterNativesImpl(env); | 189 return RegisterNativesImpl(env); |
191 } | 190 } |
OLD | NEW |