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

Side by Side Diff: chrome/browser/android/payments/service_worker_payment_app_bridge.cc

Issue 2969713002: [Payments] Present web payment app instead of instruments to user (Closed)
Patch Set: address comments Created 3 years, 5 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 #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 "content/public/browser/browser_thread.h" 13 #include "content/public/browser/browser_thread.h"
14 #include "content/public/browser/payment_app_provider.h" 14 #include "content/public/browser/payment_app_provider.h"
15 #include "content/public/browser/stored_payment_instrument.h"
16 #include "content/public/browser/web_contents.h" 15 #include "content/public/browser/web_contents.h"
17 #include "jni/ServiceWorkerPaymentAppBridge_jni.h" 16 #include "jni/ServiceWorkerPaymentAppBridge_jni.h"
18 #include "third_party/WebKit/public/platform/modules/payments/payment_app.mojom. h" 17 #include "third_party/WebKit/public/platform/modules/payments/payment_app.mojom. h"
19 #include "ui/gfx/android/java_bitmap.h" 18 #include "ui/gfx/android/java_bitmap.h"
20 19
21 namespace { 20 namespace {
22 21
23 using ::base::android::AttachCurrentThread; 22 using ::base::android::AttachCurrentThread;
24 using ::base::android::ConvertJavaStringToUTF8; 23 using ::base::android::ConvertJavaStringToUTF8;
25 using ::base::android::ConvertUTF8ToJavaString; 24 using ::base::android::ConvertUTF8ToJavaString;
26 using ::base::android::JavaParamRef; 25 using ::base::android::JavaParamRef;
27 using ::base::android::JavaRef; 26 using ::base::android::JavaRef;
28 using ::base::android::ScopedJavaGlobalRef; 27 using ::base::android::ScopedJavaGlobalRef;
29 using ::base::android::ScopedJavaLocalRef; 28 using ::base::android::ScopedJavaLocalRef;
30 using ::base::android::ToJavaArrayOfStrings; 29 using ::base::android::ToJavaArrayOfStrings;
31 using ::payments::mojom::PaymentRequestEventData; 30 using ::payments::mojom::PaymentRequestEventData;
32 using ::payments::mojom::PaymentRequestEventDataPtr; 31 using ::payments::mojom::PaymentRequestEventDataPtr;
33 using ::payments::mojom::PaymentCurrencyAmount; 32 using ::payments::mojom::PaymentCurrencyAmount;
34 using ::payments::mojom::PaymentDetailsModifier; 33 using ::payments::mojom::PaymentDetailsModifier;
35 using ::payments::mojom::PaymentDetailsModifierPtr; 34 using ::payments::mojom::PaymentDetailsModifierPtr;
36 using ::payments::mojom::PaymentItem; 35 using ::payments::mojom::PaymentItem;
37 using ::payments::mojom::PaymentMethodData; 36 using ::payments::mojom::PaymentMethodData;
38 using ::payments::mojom::PaymentMethodDataPtr; 37 using ::payments::mojom::PaymentMethodDataPtr;
39 38
40 void OnGotAllPaymentApps(const JavaRef<jobject>& jweb_contents, 39 void OnGotAllPaymentApps(const JavaRef<jobject>& jweb_contents,
41 const JavaRef<jobject>& jcallback, 40 const JavaRef<jobject>& jcallback,
42 content::PaymentAppProvider::PaymentApps apps) { 41 content::PaymentAppProvider::PaymentApps apps) {
43 JNIEnv* env = AttachCurrentThread(); 42 JNIEnv* env = AttachCurrentThread();
44 43
45 // TODO(gogerald): Present payment app instead of instruments to user,
46 // crbug.com/735063.
47 for (const auto& app_info : apps) { 44 for (const auto& app_info : apps) {
48 ScopedJavaLocalRef<jobject> java_instruments =
49 Java_ServiceWorkerPaymentAppBridge_createInstrumentList(env);
50 for (const auto& instrument : app_info.second->instruments) {
51 Java_ServiceWorkerPaymentAppBridge_addInstrument(
52 env, java_instruments, jweb_contents,
53 app_info.second->registration_id,
54 ConvertUTF8ToJavaString(env, instrument->instrument_key),
55 ConvertUTF8ToJavaString(env, instrument->name),
56 ToJavaArrayOfStrings(env, instrument->enabled_methods),
57 instrument->icon == nullptr
58 ? nullptr
59 : gfx::ConvertToJavaBitmap(instrument->icon.get()));
60 }
61 Java_ServiceWorkerPaymentAppBridge_onPaymentAppCreated( 45 Java_ServiceWorkerPaymentAppBridge_onPaymentAppCreated(
62 env, java_instruments, jweb_contents, jcallback); 46 env, app_info.second->registration_id,
47 ConvertUTF8ToJavaString(env, app_info.second->name),
48 app_info.second->icon == nullptr
49 ? nullptr
50 : gfx::ConvertToJavaBitmap(app_info.second->icon.get()),
51 ToJavaArrayOfStrings(env, app_info.second->enabled_methods),
52 jweb_contents, jcallback);
63 } 53 }
64 Java_ServiceWorkerPaymentAppBridge_onAllPaymentAppsCreated(env, jcallback); 54 Java_ServiceWorkerPaymentAppBridge_onAllPaymentAppsCreated(env, jcallback);
65 } 55 }
66 56
67 void OnPaymentAppInvoked(const JavaRef<jobject>& jweb_contents, 57 void OnPaymentAppInvoked(const JavaRef<jobject>& jweb_contents,
68 const JavaRef<jobject>& jcallback, 58 const JavaRef<jobject>& jcallback,
69 payments::mojom::PaymentAppResponsePtr app_response) { 59 payments::mojom::PaymentAppResponsePtr app_response) {
70 JNIEnv* env = AttachCurrentThread(); 60 JNIEnv* env = AttachCurrentThread();
71 61
72 Java_ServiceWorkerPaymentAppBridge_onPaymentAppInvoked( 62 Java_ServiceWorkerPaymentAppBridge_onPaymentAppInvoked(
(...skipping 23 matching lines...) Expand all
96 JNIEnv* env, 86 JNIEnv* env,
97 const JavaParamRef<jclass>& jcaller, 87 const JavaParamRef<jclass>& jcaller,
98 const JavaParamRef<jobject>& jweb_contents, 88 const JavaParamRef<jobject>& jweb_contents,
99 jlong registration_id, 89 jlong registration_id,
100 const JavaParamRef<jstring>& jtop_level_origin, 90 const JavaParamRef<jstring>& jtop_level_origin,
101 const JavaParamRef<jstring>& jpayment_request_origin, 91 const JavaParamRef<jstring>& jpayment_request_origin,
102 const JavaParamRef<jstring>& jpayment_request_id, 92 const JavaParamRef<jstring>& jpayment_request_id,
103 const JavaParamRef<jobjectArray>& jmethod_data, 93 const JavaParamRef<jobjectArray>& jmethod_data,
104 const JavaParamRef<jobject>& jtotal, 94 const JavaParamRef<jobject>& jtotal,
105 const JavaParamRef<jobjectArray>& jmodifiers, 95 const JavaParamRef<jobjectArray>& jmodifiers,
106 const JavaParamRef<jstring>& jinstrument_key,
107 const JavaParamRef<jobject>& jcallback) { 96 const JavaParamRef<jobject>& jcallback) {
108 content::WebContents* web_contents = 97 content::WebContents* web_contents =
109 content::WebContents::FromJavaWebContents(jweb_contents); 98 content::WebContents::FromJavaWebContents(jweb_contents);
110 99
111 PaymentRequestEventDataPtr event_data = PaymentRequestEventData::New(); 100 PaymentRequestEventDataPtr event_data = PaymentRequestEventData::New();
112 101
113 event_data->top_level_origin = 102 event_data->top_level_origin =
114 GURL(ConvertJavaStringToUTF8(env, jtop_level_origin)); 103 GURL(ConvertJavaStringToUTF8(env, jtop_level_origin));
115 event_data->payment_request_origin = 104 event_data->payment_request_origin =
116 GURL(ConvertJavaStringToUTF8(env, jpayment_request_origin)); 105 GURL(ConvertJavaStringToUTF8(env, jpayment_request_origin));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 .obj(), 165 .obj(),
177 &modifier->method_data->supported_methods); 166 &modifier->method_data->supported_methods);
178 modifier->method_data->stringified_data = ConvertJavaStringToUTF8( 167 modifier->method_data->stringified_data = ConvertJavaStringToUTF8(
179 env, 168 env,
180 Java_ServiceWorkerPaymentAppBridge_getStringifiedDataFromMethodData( 169 Java_ServiceWorkerPaymentAppBridge_getStringifiedDataFromMethodData(
181 env, jmodifier_method_data)); 170 env, jmodifier_method_data));
182 171
183 event_data->modifiers.push_back(std::move(modifier)); 172 event_data->modifiers.push_back(std::move(modifier));
184 } 173 }
185 174
186 event_data->instrument_key = ConvertJavaStringToUTF8(env, jinstrument_key);
187
188 content::PaymentAppProvider::GetInstance()->InvokePaymentApp( 175 content::PaymentAppProvider::GetInstance()->InvokePaymentApp(
189 web_contents->GetBrowserContext(), registration_id, std::move(event_data), 176 web_contents->GetBrowserContext(), registration_id, std::move(event_data),
190 base::Bind(&OnPaymentAppInvoked, 177 base::Bind(&OnPaymentAppInvoked,
191 ScopedJavaGlobalRef<jobject>(env, jweb_contents), 178 ScopedJavaGlobalRef<jobject>(env, jweb_contents),
192 ScopedJavaGlobalRef<jobject>(env, jcallback))); 179 ScopedJavaGlobalRef<jobject>(env, jcallback)));
193 } 180 }
194 181
195 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) { 182 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) {
196 return RegisterNativesImpl(env); 183 return RegisterNativesImpl(env);
197 } 184 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698