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

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: rebase 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 content::PaymentAppProvider::GetInstance()->InvokePaymentApp( 178 content::PaymentAppProvider::GetInstance()->InvokePaymentApp(
189 web_contents->GetBrowserContext(), registration_id, std::move(event_data), 179 web_contents->GetBrowserContext(), registration_id, std::move(event_data),
190 base::Bind(&OnPaymentAppInvoked, 180 base::Bind(&OnPaymentAppInvoked,
191 ScopedJavaGlobalRef<jobject>(env, jweb_contents), 181 ScopedJavaGlobalRef<jobject>(env, jweb_contents),
192 ScopedJavaGlobalRef<jobject>(env, jcallback))); 182 ScopedJavaGlobalRef<jobject>(env, jcallback)));
193 } 183 }
194 184
195 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) { 185 bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) {
196 return RegisterNativesImpl(env); 186 return RegisterNativesImpl(env);
197 } 187 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698