Chromium Code Reviews| Index: chrome/browser/android/payments/service_worker_payment_app_bridge.cc |
| diff --git a/chrome/browser/android/payments/service_worker_payment_app_bridge.cc b/chrome/browser/android/payments/service_worker_payment_app_bridge.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..c5b46859365f6c9407fee6893c0cd56d4b07eea2 |
| --- /dev/null |
| +++ b/chrome/browser/android/payments/service_worker_payment_app_bridge.cc |
| @@ -0,0 +1,65 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/android/payments/service_worker_payment_app_bridge.h" |
| + |
| +#include "base/android/jni_string.h" |
| +#include "base/android/scoped_java_ref.h" |
| +#include "chrome/browser/profiles/profile_manager.h" |
| +#include "components/payments/payment_app.mojom.h" |
| +#include "content/public/browser/service_worker_context.h" |
| +#include "content/public/browser/storage_partition.h" |
| +#include "jni/ServiceWorkerPaymentAppBridge_jni.h" |
| + |
| +using base::android::ConvertUTF8ToJavaString; |
| +using base::android::JavaParamRef; |
| +using base::android::ScopedJavaLocalRef; |
| + |
| +static ScopedJavaLocalRef<jobject> GetAllAppManifests( |
| + JNIEnv* env, |
| + const JavaParamRef<jclass>& jcaller) { |
| + // TODO(tommyt): crbug.com/669876. Initialise the following two variables. |
| + // At the moment, they are empty, so this function will return an empty |
| + // list of manifests. We need to hook this function up to the service worker |
| + // payment apps. |
| + std::string scope_url; |
| + std::vector<payments::mojom::PaymentAppManifestPtr> manifests; |
| + |
| + ScopedJavaLocalRef<jobject> java_manifests = |
| + Java_ServiceWorkerPaymentAppBridge_createManifestList(env); |
| + for (const auto& manifest : manifests) { |
| + ScopedJavaLocalRef<jobject> java_manifest = |
| + Java_ServiceWorkerPaymentAppBridge_createAndAddManifest( |
| + env, java_manifests, ConvertUTF8ToJavaString(env, scope_url), |
| + ConvertUTF8ToJavaString(env, manifest->label), |
| + ConvertUTF8ToJavaString( |
| + env, manifest->icon ? *manifest->icon : nullptr)); |
|
Ted C
2016/12/09 18:41:28
looking at the code for jni_string.cc, nullptr loo
tommyt
2016/12/12 10:10:41
No, you're absolutely right.
The ConvertUTF8ToJav
|
| + for (const auto& option : manifest->options) { |
| + ScopedJavaLocalRef<jobject> java_option = |
| + Java_ServiceWorkerPaymentAppBridge_createAndAddOption( |
| + env, java_manifest, ConvertUTF8ToJavaString(env, option->id), |
| + ConvertUTF8ToJavaString(env, option->label), |
| + ConvertUTF8ToJavaString(env, |
| + option->icon ? *option->icon : nullptr)); |
| + for (const auto& enabled_method : option->enabled_methods) { |
| + Java_ServiceWorkerPaymentAppBridge_addEnabledMethod( |
| + env, java_option, ConvertUTF8ToJavaString(env, enabled_method)); |
| + } |
| + } |
| + } |
| + |
| + return java_manifests; |
| +} |
| + |
| +static void InvokePaymentApp(JNIEnv* env, |
| + const JavaParamRef<jclass>& jcaller, |
| + const JavaParamRef<jstring>& scopeUrl, |
| + const JavaParamRef<jstring>& optionId, |
| + const JavaParamRef<jobject>& methodDataMap) { |
| + NOTIMPLEMENTED(); |
| +} |
| + |
| +bool RegisterServiceWorkerPaymentAppBridge(JNIEnv* env) { |
| + return RegisterNativesImpl(env); |
| +} |