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

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

Issue 2640743005: PaymentApp: Implement invokePaymentApp for Android (Closed)
Patch Set: Fix unittest compilation Created 3 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
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 "base/android/jni_array.h"
7 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
8 #include "base/android/scoped_java_ref.h" 9 #include "base/android/scoped_java_ref.h"
9 #include "chrome/browser/profiles/profile_manager.h" 10 #include "chrome/browser/profiles/profile_manager.h"
10 #include "components/payments/payment_app.mojom.h" 11 #include "components/payments/payment_app.mojom.h"
11 #include "content/public/browser/browser_context.h"
12 #include "content/public/browser/browser_thread.h" 12 #include "content/public/browser/browser_thread.h"
13 #include "content/public/browser/payment_app_provider.h" 13 #include "content/public/browser/payment_app_provider.h"
14 #include "content/public/browser/storage_partition.h"
15 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
16 #include "jni/ServiceWorkerPaymentAppBridge_jni.h" 15 #include "jni/ServiceWorkerPaymentAppBridge_jni.h"
17 16
18 using base::android::AttachCurrentThread; 17 using base::android::AttachCurrentThread;
18 using base::android::ConvertJavaStringToUTF8;
19 using base::android::ConvertUTF8ToJavaString; 19 using base::android::ConvertUTF8ToJavaString;
20 using base::android::JavaParamRef; 20 using base::android::JavaParamRef;
21 using base::android::JavaRef; 21 using base::android::JavaRef;
22 using base::android::ScopedJavaGlobalRef; 22 using base::android::ScopedJavaGlobalRef;
23 using base::android::ScopedJavaLocalRef; 23 using base::android::ScopedJavaLocalRef;
24 24
25 namespace { 25 namespace {
26 26
27 void OnGotAllManifests(const JavaRef<jobject>& jweb_contents, 27 void OnGotAllManifests(const JavaRef<jobject>& jweb_contents,
28 const JavaRef<jobject>& jcallback, 28 const JavaRef<jobject>& jcallback,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 base::Bind(&OnGotAllManifests, 72 base::Bind(&OnGotAllManifests,
73 ScopedJavaGlobalRef<jobject>(env, jweb_contents), 73 ScopedJavaGlobalRef<jobject>(env, jweb_contents),
74 ScopedJavaGlobalRef<jobject>(env, jcallback))); 74 ScopedJavaGlobalRef<jobject>(env, jcallback)));
75 } 75 }
76 76
77 static void InvokePaymentApp(JNIEnv* env, 77 static void InvokePaymentApp(JNIEnv* env,
78 const JavaParamRef<jclass>& jcaller, 78 const JavaParamRef<jclass>& jcaller,
79 const JavaParamRef<jobject>& jweb_contents, 79 const JavaParamRef<jobject>& jweb_contents,
80 jlong registration_id, 80 jlong registration_id,
81 const JavaParamRef<jstring>& joption_id, 81 const JavaParamRef<jstring>& joption_id,
82 const JavaParamRef<jobjectArray>& jmethod_data) { 82 const JavaParamRef<jobjectArray>& jmethod_data,
83 // TODO(tommyt): crbug.com/669876. Implement this 83 const JavaParamRef<jobject>& jtotal,
84 NOTIMPLEMENTED(); 84 const JavaParamRef<jobjectArray>& jmodifiers) {
85 content::WebContents* web_contents =
86 content::WebContents::FromJavaWebContents(jweb_contents);
87
88 payments::mojom::PaymentAppRequestDataPtr data =
please use gerrit instead 2017/01/19 16:45:04 using payments::mojom::PaymentAppRequestDataPtr;
tommyt 2017/01/20 09:33:29 Done.
89 payments::mojom::PaymentAppRequestData::New();
please use gerrit instead 2017/01/19 16:45:05 using payments::mojom::PaymentAppRequestData;
tommyt 2017/01/20 09:33:29 Done.
90
91 data->origin = web_contents->GetLastCommittedURL().GetOrigin();
please use gerrit instead 2017/01/19 16:45:05 PaymentRequestImpl.java has mOrigin that it passes
tommyt 2017/01/20 09:33:29 Done.
92
93 for (int i = 0; i < env->GetArrayLength(jmethod_data); i++) {
please use gerrit instead 2017/01/19 16:45:04 GetArrayLength returns jsize type, so let's use th
tommyt 2017/01/20 09:33:29 Done.
94 ScopedJavaLocalRef<jobject> element(
95 env, env->GetObjectArrayElement(jmethod_data, i));
96 payments::mojom::PaymentMethodDataPtr methodData =
please use gerrit instead 2017/01/19 16:45:05 using payments::mojom::PaymentMethodDataPtr;
tommyt 2017/01/20 09:33:29 Done.
97 payments::mojom::PaymentMethodData::New();
please use gerrit instead 2017/01/19 16:45:05 using payments::mojom::PaymentMethodData;
tommyt 2017/01/20 09:33:29 Done.
98 base::android::AppendJavaStringArrayToStringVector(
99 env,
100 Java_ServiceWorkerPaymentAppBridge_getSupportedMethodsFromMethodData(
101 env, element)
102 .obj(),
103 &methodData->supported_methods);
104 methodData->stringified_data = ConvertJavaStringToUTF8(
105 env,
106 Java_ServiceWorkerPaymentAppBridge_getStringifiedDataFromMethodData(
107 env, element));
108 data->methodData.push_back(std::move(methodData));
please use gerrit instead 2017/01/19 16:45:05 #include <utility>
tommyt 2017/01/20 09:33:29 Done.
109 }
110
111 data->total = payments::mojom::PaymentItem::New();
please use gerrit instead 2017/01/19 16:45:05 using payments::mojom::PaymentItem;
tommyt 2017/01/20 09:33:29 Done.
112 data->total->label = ConvertJavaStringToUTF8(
113 env,
114 Java_ServiceWorkerPaymentAppBridge_getLabelFromPaymentItem(env, jtotal));
115 data->total->amount = payments::mojom::PaymentCurrencyAmount::New();
please use gerrit instead 2017/01/19 16:45:05 using payments::mojom::PaymentCurrencyAmount;
tommyt 2017/01/20 09:33:29 Done.
116 data->total->amount->currency = ConvertJavaStringToUTF8(
117 env, Java_ServiceWorkerPaymentAppBridge_getCurrencyFromPaymentItem(
118 env, jtotal));
119 data->total->amount->value = ConvertJavaStringToUTF8(
120 env,
121 Java_ServiceWorkerPaymentAppBridge_getValueFromPaymentItem(env, jtotal));
122
123 for (int i = 0; i < env->GetArrayLength(jmodifiers); i++) {
124 ScopedJavaLocalRef<jobject> jmodifier(
125 env, env->GetObjectArrayElement(jmodifiers, i));
126 payments::mojom::PaymentDetailsModifierPtr modifier =
please use gerrit instead 2017/01/19 16:45:05 using payments::mojom::PaymentDetailsModifierPtr;
tommyt 2017/01/20 09:33:29 Done.
127 payments::mojom::PaymentDetailsModifier::New();
please use gerrit instead 2017/01/19 16:45:05 using payments::mojom::PaymentDetailsModifier;
tommyt 2017/01/20 09:33:29 Done.
128
129 ScopedJavaLocalRef<jobject> jtotal =
130 Java_ServiceWorkerPaymentAppBridge_getTotalFromModifier(env, jmodifier);
131 modifier->total = payments::mojom::PaymentItem::New();
132 modifier->total->label = ConvertJavaStringToUTF8(
133 env, Java_ServiceWorkerPaymentAppBridge_getLabelFromPaymentItem(
134 env, jtotal));
135 modifier->total->amount = payments::mojom::PaymentCurrencyAmount::New();
136 modifier->total->amount->currency = ConvertJavaStringToUTF8(
137 env, Java_ServiceWorkerPaymentAppBridge_getCurrencyFromPaymentItem(
138 env, jtotal));
139 modifier->total->amount->value = ConvertJavaStringToUTF8(
140 env, Java_ServiceWorkerPaymentAppBridge_getValueFromPaymentItem(
141 env, jtotal));
142
143 ScopedJavaLocalRef<jobject> jmodifier_method_data =
144 Java_ServiceWorkerPaymentAppBridge_getMethodDataFromModifier(env,
145 jmodifier);
146 modifier->method_data = payments::mojom::PaymentMethodData::New();
147 base::android::AppendJavaStringArrayToStringVector(
148 env,
149 Java_ServiceWorkerPaymentAppBridge_getSupportedMethodsFromMethodData(
150 env, jmodifier_method_data)
151 .obj(),
152 &modifier->method_data->supported_methods);
153 modifier->method_data->stringified_data = ConvertJavaStringToUTF8(
154 env,
155 Java_ServiceWorkerPaymentAppBridge_getStringifiedDataFromMethodData(
156 env, jmodifier_method_data));
157
158 data->modifiers.push_back(std::move(modifier));
159 }
160
161 data->optionId = ConvertJavaStringToUTF8(env, joption_id);
162
163 content::PaymentAppProvider::GetInstance()->InvokePaymentApp(
164 web_contents->GetBrowserContext(), registration_id, std::move(data));
85 } 165 }
86 166
87 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) { 167 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) {
88 return RegisterNativesImpl(env); 168 return RegisterNativesImpl(env);
89 } 169 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698