Commit a6b3716d authored by Danyao Wang's avatar Danyao Wang Committed by Commit Bot

Reland "[Web Payments] Use PaymentAppServiceBridge JNI in PaymentAppService."

This is a reland of b666bbd0

Original patch: https://crrev.com/2141436
Revert: https://crrev.com/2144682
Reason for revert: broke tests: https://test-results.appspot.com/dashboards/flakiness_dashboard.html#testType=chrome_public_test_apk&tests=org.chromium.chrome.browser.payments.ExpandablePaymentHandlerChangePaymentMethodTest%23testThrowBasicCard
Reason for reland: fixed broken test (moving a function call outside of DCHECK)

Original change's description:
> [Web Payments] Use PaymentAppServiceBridge JNI in PaymentAppService.
>
> This CL contains the final steps to make the Java PaymentAppService
> invoke the C++ PaymentAppService:
> - Moved remaining PaymentHandlerFinder functionality, namely,
>   onInstalledPaymentHandlerFounder() and onInstallablePaymentHandler()
>   from ServiceWorkerPaymentAppBridge to PaymentAppServiceBridge.
> - Exposed the native method fireCanMakePaymentEvent() via a static
>   method on ServiceWorkerPaymentAppBridge so it can be used by
>   PaymentAppServiceBridge.
> - Proxied ServiceWorkerPaymentAppBridge.setCanMakePaymentForTesting
>   to PaymentAppServiceBridge. This will be cleaned up in a subsequent
>   CL.
> - Fixed a bug from a previous CL to pass payment apps to callbacks by
>   value instead of by reference.
>
> Bug: 1063118
> Change-Id: I87e254d6dc11e12f890353c9a0a6dde6cca73c9f
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2141436
> Reviewed-by: Rouslan Solomakhin <rouslan@chromium.org>
> Commit-Queue: Danyao Wang <danyao@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#757827}

Bug: 1063118
Change-Id: Ib2eceb850368e3247876ab303b54a1c41b8943ec
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2151091
Commit-Queue: Danyao Wang <danyao@chromium.org>
Reviewed-by: default avatarLiquan (Max) Gu <maxlg@chromium.org>
Reviewed-by: default avatarRouslan Solomakhin <rouslan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759651}
parent 3dc9c3c3
......@@ -4,8 +4,6 @@
package org.chromium.chrome.browser.payments;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
......@@ -27,9 +25,7 @@ public class PaymentAppService implements PaymentAppFactoryInterface {
/** Prevent instantiation. */
private PaymentAppService() {
mFactories.add(new AutofillPaymentAppFactory());
if (ChromeFeatureList.isEnabled(ChromeFeatureList.SERVICE_WORKER_PAYMENT_APPS)) {
mFactories.add(new ServiceWorkerPaymentAppBridge());
}
mFactories.add(new PaymentAppServiceBridge());
mFactories.add(new AndroidPaymentAppFactory());
}
......
......@@ -20,24 +20,26 @@
#include "components/payments/content/payment_app_service.h"
#include "components/payments/content/payment_app_service_factory.h"
#include "components/payments/content/payment_manifest_web_data_service.h"
#include "components/url_formatter/elide_url.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "third_party/blink/public/mojom/payments/payment_app.mojom.h"
#include "third_party/blink/public/mojom/payments/payment_request.mojom.h"
#include "ui/gfx/android/java_bitmap.h"
#include "url/origin.h"
namespace {
using ::base::android::AttachCurrentThread;
using ::base::android::ConvertJavaStringToUTF8;
using ::base::android::ConvertUTF8ToJavaString;
using ::base::android::JavaParamRef;
using ::base::android::JavaRef;
using ::base::android::ScopedJavaGlobalRef;
using ::base::android::ScopedJavaLocalRef;
using ::base::android::ToJavaArrayOfStrings;
using ::base::android::ToJavaIntArray;
using ::payments::android::DeserializeFromJavaByteBufferArray;
using ::payments::mojom::BasicCardNetwork;
using ::payments::mojom::PaymentMethodData;
using ::payments::mojom::PaymentMethodDataPtr;
// Helper to get the PaymentAppService associated with |render_frame_host|'s
......@@ -50,9 +52,82 @@ payments::PaymentAppService* GetPaymentAppService(
web_contents ? web_contents->GetBrowserContext() : nullptr);
}
void OnPaymentAppCreated(const JavaRef<jobject>& jcallback) {
void OnPaymentAppsCreated(
const JavaRef<jobject>& jcallback,
const content::PaymentAppProvider::PaymentApps& apps,
const payments::ServiceWorkerPaymentAppFinder::InstallablePaymentApps&
installable_apps) {
JNIEnv* env = AttachCurrentThread();
Java_PaymentAppServiceCallback_onPaymentAppCreated(env, jcallback);
for (const auto& app_info : apps) {
// Sends related application Ids to java side if the app prefers related
// applications.
std::vector<std::string> preferred_related_application_ids;
if (app_info.second->prefer_related_applications) {
for (const auto& related_application :
app_info.second->related_applications) {
// Only consider related applications on Google play for Android.
if (related_application.platform == "play")
preferred_related_application_ids.emplace_back(
related_application.id);
}
}
base::android::ScopedJavaLocalRef<jobjectArray> jcapabilities =
Java_PaymentAppServiceBridge_createCapabilities(
env, app_info.second->capabilities.size());
for (size_t i = 0; i < app_info.second->capabilities.size(); i++) {
Java_PaymentAppServiceBridge_addCapabilities(
env, jcapabilities, base::checked_cast<int>(i),
ToJavaIntArray(
env, app_info.second->capabilities[i].supported_card_networks));
}
base::android::ScopedJavaLocalRef<jobject> jsupported_delegations =
Java_PaymentAppServiceBridge_createSupportedDelegations(
env, app_info.second->supported_delegations.shipping_address,
app_info.second->supported_delegations.payer_name,
app_info.second->supported_delegations.payer_phone,
app_info.second->supported_delegations.payer_email);
// TODO(crbug.com/846077): Find a proper way to make use of user hint.
Java_PaymentAppServiceCallback_onInstalledPaymentHandlerFound(
env, jcallback, app_info.second->registration_id,
ConvertUTF8ToJavaString(env, app_info.second->scope.spec()),
app_info.second->name.empty()
? nullptr
: ConvertUTF8ToJavaString(env, app_info.second->name),
nullptr, ConvertUTF8ToJavaString(env, app_info.second->scope.host()),
app_info.second->icon == nullptr
? nullptr
: gfx::ConvertToJavaBitmap(app_info.second->icon.get()),
ToJavaArrayOfStrings(env, app_info.second->enabled_methods),
app_info.second->has_explicitly_verified_methods, jcapabilities,
ToJavaArrayOfStrings(env, preferred_related_application_ids),
jsupported_delegations);
}
for (const auto& installable_app : installable_apps) {
base::android::ScopedJavaLocalRef<jobject> jsupported_delegations =
Java_PaymentAppServiceBridge_createSupportedDelegations(
env, installable_app.second->supported_delegations.shipping_address,
installable_app.second->supported_delegations.payer_name,
installable_app.second->supported_delegations.payer_phone,
installable_app.second->supported_delegations.payer_email);
Java_PaymentAppServiceCallback_onInstallablePaymentHandlerFound(
env, jcallback,
ConvertUTF8ToJavaString(env, installable_app.second->name),
ConvertUTF8ToJavaString(env, installable_app.second->sw_js_url),
ConvertUTF8ToJavaString(env, installable_app.second->sw_scope),
installable_app.second->sw_use_cache,
installable_app.second->icon == nullptr
? nullptr
: gfx::ConvertToJavaBitmap(installable_app.second->icon.get()),
ConvertUTF8ToJavaString(env, installable_app.first.spec()),
ToJavaArrayOfStrings(env, installable_app.second->preferred_app_ids),
jsupported_delegations);
}
}
void OnPaymentAppCreationError(const JavaRef<jobject>& jcallback,
......@@ -84,7 +159,9 @@ void JNI_PaymentAppServiceBridge_Create(
std::string top_origin = ConvertJavaStringToUTF8(jtop_origin);
std::vector<PaymentMethodDataPtr> method_data;
DCHECK(DeserializeFromJavaByteBufferArray(env, jmethod_data, &method_data));
bool success =
DeserializeFromJavaByteBufferArray(env, jmethod_data, &method_data);
DCHECK(success);
scoped_refptr<payments::PaymentManifestWebDataService> web_data_service =
WebDataServiceFactory::GetPaymentManifestWebDataForProfile(
......@@ -99,7 +176,7 @@ void JNI_PaymentAppServiceBridge_Create(
service->GetNumberOfFactories(), render_frame_host, GURL(top_origin),
std::move(method_data), web_data_service,
jmay_crawl_for_installable_payment_apps,
base::BindRepeating(&OnPaymentAppCreated,
base::BindRepeating(&OnPaymentAppsCreated,
ScopedJavaGlobalRef<jobject>(env, jcallback)),
base::BindRepeating(&OnPaymentAppCreationError,
ScopedJavaGlobalRef<jobject>(env, jcallback)),
......@@ -151,14 +228,14 @@ PaymentAppServiceBridge* PaymentAppServiceBridge::Create(
std::vector<mojom::PaymentMethodDataPtr> request_method_data,
scoped_refptr<PaymentManifestWebDataService> web_data_service,
bool may_crawl_for_installable_payment_apps,
PaymentAppCreatedCallback payment_app_created_callback,
PaymentAppsCreatedCallback payment_apps_created_callback,
PaymentAppCreationErrorCallback payment_app_creation_error_callback,
base::OnceClosure done_creating_payment_apps_callback) {
std::unique_ptr<PaymentAppServiceBridge> bridge(new PaymentAppServiceBridge(
number_of_factories, render_frame_host, top_origin,
std::move(request_method_data), std::move(web_data_service),
may_crawl_for_installable_payment_apps,
std::move(payment_app_created_callback),
std::move(payment_apps_created_callback),
std::move(payment_app_creation_error_callback),
std::move(done_creating_payment_apps_callback)));
return PaymentAppServiceBridgeStorage::GetInstance()->Add(std::move(bridge));
......@@ -171,7 +248,7 @@ PaymentAppServiceBridge::PaymentAppServiceBridge(
std::vector<mojom::PaymentMethodDataPtr> request_method_data,
scoped_refptr<PaymentManifestWebDataService> web_data_service,
bool may_crawl_for_installable_payment_apps,
PaymentAppCreatedCallback payment_app_created_callback,
PaymentAppsCreatedCallback payment_apps_created_callback,
PaymentAppCreationErrorCallback payment_app_creation_error_callback,
base::OnceClosure done_creating_payment_apps_callback)
: number_of_pending_factories_(number_of_factories),
......@@ -179,13 +256,14 @@ PaymentAppServiceBridge::PaymentAppServiceBridge(
content::WebContents::FromRenderFrameHost(render_frame_host)),
render_frame_host_(render_frame_host),
top_origin_(top_origin),
frame_origin_(render_frame_host->GetLastCommittedURL()),
frame_origin_(url_formatter::FormatUrlForSecurityDisplay(
render_frame_host->GetLastCommittedURL())),
frame_security_origin_(render_frame_host->GetLastCommittedOrigin()),
request_method_data_(std::move(request_method_data)),
payment_manifest_web_data_service_(web_data_service),
may_crawl_for_installable_payment_apps_(
may_crawl_for_installable_payment_apps),
payment_app_created_callback_(std::move(payment_app_created_callback)),
payment_apps_created_callback_(std::move(payment_apps_created_callback)),
payment_app_creation_error_callback_(
std::move(payment_app_creation_error_callback)),
done_creating_payment_apps_callback_(
......@@ -271,11 +349,9 @@ bool PaymentAppServiceBridge::SkipCreatingNativePaymentApps() const {
}
void PaymentAppServiceBridge::OnCreatingNativePaymentAppsSkipped(
const content::PaymentAppProvider::PaymentApps& apps,
const ServiceWorkerPaymentAppFinder::InstallablePaymentApps&
installable_apps) {
// TODO(crbug.com/1063118): call back to Java with apps information.
payment_app_created_callback_.Run();
content::PaymentAppProvider::PaymentApps apps,
ServiceWorkerPaymentAppFinder::InstallablePaymentApps installable_apps) {
payment_apps_created_callback_.Run(apps, installable_apps);
}
void PaymentAppServiceBridge::OnPaymentAppCreationError(
......
......@@ -32,9 +32,9 @@ namespace payments {
// callbacks from PaymentAppFactory to callbacks set by the caller.
class PaymentAppServiceBridge : public PaymentAppFactory::Delegate {
public:
// TODO(crbug.com/1063118): add more parameter to this callback to actually
// pass payment app data back to Java side.
using PaymentAppCreatedCallback = base::RepeatingCallback<void()>;
using PaymentAppsCreatedCallback = base::RepeatingCallback<void(
const content::PaymentAppProvider::PaymentApps&,
const payments::ServiceWorkerPaymentAppFinder::InstallablePaymentApps&)>;
using PaymentAppCreationErrorCallback =
base::RepeatingCallback<void(const std::string&)>;
......@@ -48,7 +48,7 @@ class PaymentAppServiceBridge : public PaymentAppFactory::Delegate {
std::vector<mojom::PaymentMethodDataPtr> request_method_data,
scoped_refptr<PaymentManifestWebDataService> web_data_service,
bool may_crawl_for_installable_payment_apps,
PaymentAppCreatedCallback payment_app_created_callback,
PaymentAppsCreatedCallback payment_apps_created_callback,
PaymentAppCreationErrorCallback payment_app_creation_error_callback,
base::OnceClosure done_creating_payment_apps_callback);
......@@ -81,9 +81,9 @@ class PaymentAppServiceBridge : public PaymentAppFactory::Delegate {
void OnPaymentAppCreationError(const std::string& error_message) override;
bool SkipCreatingNativePaymentApps() const override;
void OnCreatingNativePaymentAppsSkipped(
const content::PaymentAppProvider::PaymentApps& apps,
const ServiceWorkerPaymentAppFinder::InstallablePaymentApps&
installable_apps) override;
content::PaymentAppProvider::PaymentApps apps,
ServiceWorkerPaymentAppFinder::InstallablePaymentApps installable_apps)
override;
void OnDoneCreatingPaymentApps() override;
private:
......@@ -95,7 +95,7 @@ class PaymentAppServiceBridge : public PaymentAppFactory::Delegate {
std::vector<mojom::PaymentMethodDataPtr> request_method_data,
scoped_refptr<PaymentManifestWebDataService> web_data_service,
bool may_crawl_for_installable_payment_apps,
PaymentAppCreatedCallback payment_app_created_callback,
PaymentAppsCreatedCallback payment_apps_created_callback,
PaymentAppCreationErrorCallback payment_app_creation_error_callback,
base::OnceClosure done_creating_payment_apps_callback);
......@@ -111,7 +111,7 @@ class PaymentAppServiceBridge : public PaymentAppFactory::Delegate {
bool may_crawl_for_installable_payment_apps_;
std::vector<autofill::AutofillProfile*> dummy_profiles_;
PaymentAppCreatedCallback payment_app_created_callback_;
PaymentAppsCreatedCallback payment_apps_created_callback_;
PaymentAppCreationErrorCallback payment_app_creation_error_callback_;
base::OnceClosure done_creating_payment_apps_callback_;
......
......@@ -24,7 +24,10 @@ namespace payments {
class MockCallback {
public:
MockCallback() = default;
MOCK_METHOD0(NotifyPaymentAppCreated, void(void));
MOCK_METHOD2(NotifyPaymentAppsCreated,
void(const content::PaymentAppProvider::PaymentApps&,
const payments::ServiceWorkerPaymentAppFinder::
InstallablePaymentApps&));
MOCK_METHOD1(NotifyPaymentAppCreationError, void(const std::string& error));
MOCK_METHOD0(NotifyDoneCreatingPaymentApps, void(void));
};
......@@ -68,7 +71,7 @@ TEST_F(PaymentAppServiceBridgeUnitTest, Smoke) {
/* number_of_factories= */ 3, web_contents_->GetMainFrame(),
top_origin_, std::move(method_data), web_data_service_,
/* may_crawl_for_installable_payment_apps= */ true,
base::BindRepeating(&MockCallback::NotifyPaymentAppCreated,
base::BindRepeating(&MockCallback::NotifyPaymentAppsCreated,
base::Unretained(&mock_callback)),
base::BindRepeating(&MockCallback::NotifyPaymentAppCreationError,
base::Unretained(&mock_callback)),
......@@ -92,8 +95,10 @@ TEST_F(PaymentAppServiceBridgeUnitTest, Smoke) {
content::PaymentAppProvider::PaymentApps apps;
ServiceWorkerPaymentAppFinder::InstallablePaymentApps installables;
EXPECT_CALL(mock_callback, NotifyPaymentAppCreated());
bridge->OnCreatingNativePaymentAppsSkipped(apps, installables);
EXPECT_CALL(mock_callback,
NotifyPaymentAppsCreated(::testing::_, ::testing::_));
bridge->OnCreatingNativePaymentAppsSkipped(std::move(apps),
std::move(installables));
EXPECT_CALL(mock_callback, NotifyPaymentAppCreationError("some error"));
bridge->OnPaymentAppCreationError("some error");
......
......@@ -60,92 +60,6 @@ using ::payments::mojom::PaymentShippingOption;
using ::payments::mojom::PaymentShippingOptionPtr;
using ::payments::mojom::PaymentShippingType;
void OnGotAllPaymentApps(
const JavaRef<jobject>& jcallback,
content::PaymentAppProvider::PaymentApps apps,
payments::ServiceWorkerPaymentAppFinder::InstallablePaymentApps
installable_apps,
const std::string& error_message) {
JNIEnv* env = AttachCurrentThread();
if (!error_message.empty()) {
Java_PaymentHandlerFinder_onGetPaymentAppsError(
env, jcallback, ConvertUTF8ToJavaString(env, error_message));
}
for (const auto& app_info : apps) {
// Sends related application Ids to java side if the app prefers related
// applications.
std::vector<std::string> preferred_related_application_ids;
if (app_info.second->prefer_related_applications) {
for (const auto& related_application :
app_info.second->related_applications) {
// Only consider related applications on Google play for Android.
if (related_application.platform == "play")
preferred_related_application_ids.emplace_back(
related_application.id);
}
}
base::android::ScopedJavaLocalRef<jobjectArray> jcapabilities =
Java_ServiceWorkerPaymentAppBridge_createCapabilities(
env, app_info.second->capabilities.size());
for (size_t i = 0; i < app_info.second->capabilities.size(); i++) {
Java_ServiceWorkerPaymentAppBridge_addCapabilities(
env, jcapabilities, base::checked_cast<int>(i),
ToJavaIntArray(
env, app_info.second->capabilities[i].supported_card_networks));
}
base::android::ScopedJavaLocalRef<jobject> jsupported_delegations =
Java_ServiceWorkerPaymentAppBridge_createSupportedDelegations(
env, app_info.second->supported_delegations.shipping_address,
app_info.second->supported_delegations.payer_name,
app_info.second->supported_delegations.payer_phone,
app_info.second->supported_delegations.payer_email);
// TODO(crbug.com/846077): Find a proper way to make use of user hint.
Java_PaymentHandlerFinder_onInstalledPaymentHandlerFound(
env, jcallback, app_info.second->registration_id,
ConvertUTF8ToJavaString(env, app_info.second->scope.spec()),
app_info.second->name.empty()
? nullptr
: ConvertUTF8ToJavaString(env, app_info.second->name),
nullptr, ConvertUTF8ToJavaString(env, app_info.second->scope.host()),
app_info.second->icon == nullptr
? nullptr
: gfx::ConvertToJavaBitmap(app_info.second->icon.get()),
ToJavaArrayOfStrings(env, app_info.second->enabled_methods),
app_info.second->has_explicitly_verified_methods, jcapabilities,
ToJavaArrayOfStrings(env, preferred_related_application_ids),
jsupported_delegations);
}
for (const auto& installable_app : installable_apps) {
base::android::ScopedJavaLocalRef<jobject> jsupported_delegations =
Java_ServiceWorkerPaymentAppBridge_createSupportedDelegations(
env, installable_app.second->supported_delegations.shipping_address,
installable_app.second->supported_delegations.payer_name,
installable_app.second->supported_delegations.payer_phone,
installable_app.second->supported_delegations.payer_email);
Java_PaymentHandlerFinder_onInstallablePaymentHandlerFound(
env, jcallback,
ConvertUTF8ToJavaString(env, installable_app.second->name),
ConvertUTF8ToJavaString(env, installable_app.second->sw_js_url),
ConvertUTF8ToJavaString(env, installable_app.second->sw_scope),
installable_app.second->sw_use_cache,
installable_app.second->icon == nullptr
? nullptr
: gfx::ConvertToJavaBitmap(installable_app.second->icon.get()),
ConvertUTF8ToJavaString(env, installable_app.first.spec()),
ToJavaArrayOfStrings(env, installable_app.second->preferred_app_ids),
jsupported_delegations);
}
Java_PaymentHandlerFinder_onAllPaymentAppsCreated(env, jcallback);
}
void OnHasServiceWorkerPaymentAppsResponse(
const JavaRef<jobject>& jcallback,
content::PaymentAppProvider::PaymentApps apps) {
......@@ -178,11 +92,10 @@ void OnGetServiceWorkerPaymentAppsInfo(
}
void OnCanMakePayment(const JavaRef<jobject>& jcallback,
const JavaRef<jobject>& japp,
payments::mojom::CanMakePaymentResponsePtr response) {
JNIEnv* env = AttachCurrentThread();
Java_PaymentHandlerFinder_onCanMakePaymentEventResponse(
env, jcallback, japp,
Java_ServiceWorkerPaymentAppBridge_onCanMakePaymentEventResponse(
env, jcallback,
ConvertUTF8ToJavaString(
env, payments::ConvertCanMakePaymentEventResponseTypeToErrorString(
response->response_type)),
......@@ -419,35 +332,6 @@ PaymentRequestEventDataPtr ConvertPaymentRequestEventDataFromJavaToNative(
} // namespace
static void JNI_ServiceWorkerPaymentAppBridge_GetAllPaymentApps(
JNIEnv* env,
const JavaParamRef<jobject>& jorigin,
const JavaParamRef<jobject>& jrender_frame_host,
const JavaParamRef<jobjectArray>& jmethod_data,
jboolean jmay_crawl_for_installable_payment_apps,
const JavaParamRef<jobject>& jcallback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
content::RenderFrameHost* render_frame_host =
content::RenderFrameHost::FromJavaRenderFrameHost(jrender_frame_host);
content::WebContents* web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
payments::ServiceWorkerPaymentAppFinder::GetInstance()->GetAllPaymentApps(
url::Origin::FromJavaObject(jorigin), render_frame_host, web_contents,
WebDataServiceFactory::GetPaymentManifestWebDataForProfile(
Profile::FromBrowserContext(web_contents->GetBrowserContext()),
ServiceAccessType::EXPLICIT_ACCESS),
ConvertPaymentMethodDataFromJavaToNative(env, jmethod_data),
jmay_crawl_for_installable_payment_apps,
base::BindOnce(&OnGotAllPaymentApps,
ScopedJavaGlobalRef<jobject>(env, jcallback)),
base::BindOnce([]() {
/* Nothing needs to be done after writing cache. This callback is used
* only in tests. */
}));
}
static void JNI_ServiceWorkerPaymentAppBridge_HasServiceWorkerPaymentApps(
JNIEnv* env,
const JavaParamRef<jobject>& jcallback) {
......@@ -479,8 +363,7 @@ static void JNI_ServiceWorkerPaymentAppBridge_FireCanMakePaymentEvent(
const JavaParamRef<jobjectArray>& jmethod_data,
const JavaParamRef<jobjectArray>& jmodifiers,
const JavaParamRef<jstring>& jcurrency,
const JavaParamRef<jobject>& jcallback,
const JavaParamRef<jobject>& japp) {
const JavaParamRef<jobject>& jcallback) {
content::WebContents* web_contents =
content::WebContents::FromJavaWebContents(jweb_contents);
......@@ -533,8 +416,7 @@ static void JNI_ServiceWorkerPaymentAppBridge_FireCanMakePaymentEvent(
GURL(ConvertJavaStringToUTF8(env, jservice_worker_scope))),
ConvertJavaStringToUTF8(env, jpayment_request_id), std::move(event_data),
base::BindOnce(&OnCanMakePayment,
ScopedJavaGlobalRef<jobject>(env, jcallback),
ScopedJavaGlobalRef<jobject>(env, japp)));
ScopedJavaGlobalRef<jobject>(env, jcallback)));
}
static void JNI_ServiceWorkerPaymentAppBridge_InvokePaymentApp(
......
......@@ -84,8 +84,8 @@ class PaymentAppFactory {
// When SkipCreatingNativePaymentApps() is true, this callback is called
// when service-worker payment app info is available.
virtual void OnCreatingNativePaymentAppsSkipped(
const content::PaymentAppProvider::PaymentApps& apps,
const ServiceWorkerPaymentAppFinder::InstallablePaymentApps&
content::PaymentAppProvider::PaymentApps apps,
ServiceWorkerPaymentAppFinder::InstallablePaymentApps
installable_apps) = 0;
// Called when all apps of this factory have been created.
......
......@@ -181,8 +181,8 @@ bool PaymentRequestState::SkipCreatingNativePaymentApps() const {
}
void PaymentRequestState::OnCreatingNativePaymentAppsSkipped(
const content::PaymentAppProvider::PaymentApps& unused_apps,
const ServiceWorkerPaymentAppFinder::InstallablePaymentApps&
content::PaymentAppProvider::PaymentApps unused_apps,
ServiceWorkerPaymentAppFinder::InstallablePaymentApps
unused_installable_apps) {
NOTREACHED();
}
......
......@@ -150,9 +150,9 @@ class PaymentRequestState : public PaymentAppFactory::Delegate,
void OnPaymentAppCreationError(const std::string& error_message) override;
bool SkipCreatingNativePaymentApps() const override;
void OnCreatingNativePaymentAppsSkipped(
const content::PaymentAppProvider::PaymentApps& apps,
const ServiceWorkerPaymentAppFinder::InstallablePaymentApps&
installable_apps) override;
content::PaymentAppProvider::PaymentApps apps,
ServiceWorkerPaymentAppFinder::InstallablePaymentApps installable_apps)
override;
void OnDoneCreatingPaymentApps() override;
// PaymentResponseHelper::Delegate
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment