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

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

Issue 2867273003: PaymentHandler: Replace GetAllManifests() with GetAllPaymentApps(). (Closed)
Patch Set: rebased Created 3 years, 7 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 "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/web_contents.h" 17 #include "content/public/browser/web_contents.h"
17 #include "jni/ServiceWorkerPaymentAppBridge_jni.h" 18 #include "jni/ServiceWorkerPaymentAppBridge_jni.h"
18 19
19 using base::android::AttachCurrentThread;
20 using base::android::ConvertJavaStringToUTF8;
21 using base::android::ConvertUTF8ToJavaString;
22 using base::android::JavaParamRef;
23 using base::android::JavaRef;
24 using base::android::ScopedJavaGlobalRef;
25 using base::android::ScopedJavaLocalRef;
26 using payments::mojom::PaymentAppRequest;
27 using payments::mojom::PaymentAppRequestPtr;
28 using payments::mojom::PaymentCurrencyAmount;
29 using payments::mojom::PaymentDetailsModifier;
30 using payments::mojom::PaymentDetailsModifierPtr;
31 using payments::mojom::PaymentItem;
32 using payments::mojom::PaymentMethodData;
33 using payments::mojom::PaymentMethodDataPtr;
34
35 namespace { 20 namespace {
36 21
37 void OnGotAllManifests(const JavaRef<jobject>& jweb_contents, 22 using ::base::android::AttachCurrentThread;
38 const JavaRef<jobject>& jcallback, 23 using ::base::android::ConvertJavaStringToUTF8;
39 content::PaymentAppProvider::Manifests manifests) { 24 using ::base::android::ConvertUTF8ToJavaString;
25 using ::base::android::JavaParamRef;
26 using ::base::android::JavaRef;
27 using ::base::android::ScopedJavaGlobalRef;
28 using ::base::android::ScopedJavaLocalRef;
29 using ::base::android::ToJavaArrayOfStrings;
30 using ::payments::mojom::PaymentAppRequest;
31 using ::payments::mojom::PaymentAppRequestPtr;
32 using ::payments::mojom::PaymentCurrencyAmount;
33 using ::payments::mojom::PaymentDetailsModifier;
34 using ::payments::mojom::PaymentDetailsModifierPtr;
35 using ::payments::mojom::PaymentItem;
36 using ::payments::mojom::PaymentMethodData;
37 using ::payments::mojom::PaymentMethodDataPtr;
38
39 void OnGotAllPaymentApps(const JavaRef<jobject>& jweb_contents,
40 const JavaRef<jobject>& jcallback,
41 content::PaymentAppProvider::PaymentApps apps) {
40 JNIEnv* env = AttachCurrentThread(); 42 JNIEnv* env = AttachCurrentThread();
41 43
42 for (const auto& entry : manifests) { 44 for (const auto& app_info : apps) {
43 ScopedJavaLocalRef<jobject> java_manifest = 45 ScopedJavaLocalRef<jobject> java_instruments =
44 Java_ServiceWorkerPaymentAppBridge_createManifest( 46 Java_ServiceWorkerPaymentAppBridge_createInstrumentList(env);
45 env, entry.first, ConvertUTF8ToJavaString(env, entry.second->name), 47 for (const auto& instrument : app_info.second) {
46 entry.second->icon 48 Java_ServiceWorkerPaymentAppBridge_addInstrument(
47 ? ConvertUTF8ToJavaString(env, *entry.second->icon) 49 env, java_instruments, jweb_contents, instrument->registration_id,
48 : nullptr); 50 ConvertUTF8ToJavaString(env, instrument->instrument_key),
49 for (const auto& option : entry.second->options) { 51 ConvertUTF8ToJavaString(env, instrument->name),
50 ScopedJavaLocalRef<jobject> java_option = 52 ToJavaArrayOfStrings(env, instrument->enabled_methods));
51 Java_ServiceWorkerPaymentAppBridge_createAndAddOption(
52 env, java_manifest, ConvertUTF8ToJavaString(env, option->id),
53 ConvertUTF8ToJavaString(env, option->name),
54 option->icon ? ConvertUTF8ToJavaString(env, *option->icon)
55 : nullptr);
56 for (const auto& enabled_method : option->enabled_methods) {
57 Java_ServiceWorkerPaymentAppBridge_addEnabledMethod(
58 env, java_option, ConvertUTF8ToJavaString(env, enabled_method));
59 }
60 } 53 }
61 54 Java_ServiceWorkerPaymentAppBridge_onPaymentAppCreated(
62 Java_ServiceWorkerPaymentAppBridge_onGotManifest(env, java_manifest, 55 env, java_instruments, jweb_contents, jcallback);
63 jweb_contents, jcallback);
64 } 56 }
65 57 Java_ServiceWorkerPaymentAppBridge_onAllPaymentAppsCreated(env, jcallback);
66 Java_ServiceWorkerPaymentAppBridge_onGotAllManifests(env, jcallback);
67 } 58 }
68 59
69 void OnPaymentAppInvoked(const JavaRef<jobject>& jweb_contents, 60 void OnPaymentAppInvoked(const JavaRef<jobject>& jweb_contents,
70 const JavaRef<jobject>& jcallback, 61 const JavaRef<jobject>& jcallback,
71 payments::mojom::PaymentAppResponsePtr app_response) { 62 payments::mojom::PaymentAppResponsePtr app_response) {
72 JNIEnv* env = AttachCurrentThread(); 63 JNIEnv* env = AttachCurrentThread();
73 64
74 Java_ServiceWorkerPaymentAppBridge_onPaymentAppInvoked( 65 Java_ServiceWorkerPaymentAppBridge_onPaymentAppInvoked(
75 env, jcallback, ConvertUTF8ToJavaString(env, app_response->method_name), 66 env, jcallback, ConvertUTF8ToJavaString(env, app_response->method_name),
76 ConvertUTF8ToJavaString(env, app_response->stringified_details)); 67 ConvertUTF8ToJavaString(env, app_response->stringified_details));
77 } 68 }
78 69
79 } // namespace 70 } // namespace
80 71
81 static void GetAllAppManifests(JNIEnv* env, 72 static void GetAllPaymentApps(JNIEnv* env,
82 const JavaParamRef<jclass>& jcaller, 73 const JavaParamRef<jclass>& jcaller,
83 const JavaParamRef<jobject>& jweb_contents, 74 const JavaParamRef<jobject>& jweb_contents,
84 const JavaParamRef<jobject>& jcallback) { 75 const JavaParamRef<jobject>& jcallback) {
85 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 76 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
86 77
87 content::WebContents* web_contents = 78 content::WebContents* web_contents =
88 content::WebContents::FromJavaWebContents(jweb_contents); 79 content::WebContents::FromJavaWebContents(jweb_contents);
89 80
90 content::PaymentAppProvider::GetInstance()->GetAllManifests( 81 content::PaymentAppProvider::GetInstance()->GetAllPaymentApps(
91 web_contents->GetBrowserContext(), 82 web_contents->GetBrowserContext(),
92 base::Bind(&OnGotAllManifests, 83 base::Bind(&OnGotAllPaymentApps,
93 ScopedJavaGlobalRef<jobject>(env, jweb_contents), 84 ScopedJavaGlobalRef<jobject>(env, jweb_contents),
94 ScopedJavaGlobalRef<jobject>(env, jcallback))); 85 ScopedJavaGlobalRef<jobject>(env, jcallback)));
95 } 86 }
96 87
97 static void InvokePaymentApp(JNIEnv* env, 88 static void InvokePaymentApp(JNIEnv* env,
98 const JavaParamRef<jclass>& jcaller, 89 const JavaParamRef<jclass>& jcaller,
99 const JavaParamRef<jobject>& jweb_contents, 90 const JavaParamRef<jobject>& jweb_contents,
100 jlong registration_id, 91 jlong registration_id,
101 const JavaParamRef<jstring>& joption_id, 92 const JavaParamRef<jstring>& joption_id,
102 const JavaParamRef<jstring>& jorigin, 93 const JavaParamRef<jstring>& jorigin,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 web_contents->GetBrowserContext(), registration_id, 173 web_contents->GetBrowserContext(), registration_id,
183 std::move(app_request), 174 std::move(app_request),
184 base::Bind(&OnPaymentAppInvoked, 175 base::Bind(&OnPaymentAppInvoked,
185 ScopedJavaGlobalRef<jobject>(env, jweb_contents), 176 ScopedJavaGlobalRef<jobject>(env, jweb_contents),
186 ScopedJavaGlobalRef<jobject>(env, jcallback))); 177 ScopedJavaGlobalRef<jobject>(env, jcallback)));
187 } 178 }
188 179
189 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) { 180 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) {
190 return RegisterNativesImpl(env); 181 return RegisterNativesImpl(env);
191 } 182 }
OLDNEW
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestServiceWorkerPaymentAppTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698