| Index: content/renderer/service_worker/service_worker_context_client.cc
|
| diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc
|
| index c4b51fb99a0920dfd06c7cd1fb8d61bc40513075..eaada81efd037409e75908d478fd01c8172f63e2 100644
|
| --- a/content/renderer/service_worker/service_worker_context_client.cc
|
| +++ b/content/renderer/service_worker/service_worker_context_client.cc
|
| @@ -54,6 +54,7 @@
|
| #include "third_party/WebKit/public/platform/WebSecurityOrigin.h"
|
| #include "third_party/WebKit/public/platform/WebString.h"
|
| #include "third_party/WebKit/public/platform/modules/notifications/WebNotificationData.h"
|
| +#include "third_party/WebKit/public/platform/modules/payments/WebPaymentAppRequestData.h"
|
| #include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerClientQueryOptions.h"
|
| #include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerError.h"
|
| #include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerRequest.h"
|
| @@ -63,6 +64,19 @@
|
| #include "third_party/WebKit/public/web/modules/serviceworker/WebServiceWorkerContextProxy.h"
|
| #include "third_party/WebKit/public/web/modules/serviceworker/WebServiceWorkerNetworkProvider.h"
|
|
|
| +namespace mojo {
|
| +
|
| +template <>
|
| +struct TypeConverter<blink::WebPaymentAppRequestData,
|
| + payments::mojom::PaymentAppRequestDataPtr> {
|
| + static blink::WebPaymentAppRequestData Convert(
|
| + const payments::mojom::PaymentAppRequestDataPtr& input) {
|
| + blink::WebPaymentAppRequestData output;
|
| + return output;
|
| + }
|
| +};
|
| +}
|
| +
|
| namespace content {
|
|
|
| namespace {
|
| @@ -179,6 +193,8 @@ struct ServiceWorkerContextClient::WorkerContextData {
|
| using SkipWaitingCallbacksMap =
|
| IDMap<std::unique_ptr<blink::WebServiceWorkerSkipWaitingCallbacks>>;
|
| using SyncEventCallbacksMap = IDMap<std::unique_ptr<const SyncCallback>>;
|
| + using PaymentRequestEventCallbacksMap =
|
| + IDMap<std::unique_ptr<const PaymentRequestEventCallback>>;
|
| using FetchEventCallbacksMap = IDMap<std::unique_ptr<const FetchCallback>>;
|
| using ExtendableMessageEventCallbacksMap =
|
| IDMap<std::unique_ptr<const DispatchExtendableMessageEventCallback>>;
|
| @@ -211,6 +227,9 @@ struct ServiceWorkerContextClient::WorkerContextData {
|
| // Pending callbacks for Background Sync Events.
|
| SyncEventCallbacksMap sync_event_callbacks;
|
|
|
| + // Pending callbacks for Payment Request Events.
|
| + PaymentRequestEventCallbacksMap payment_request_event_callbacks;
|
| +
|
| // Pending callbacks for Fetch Events.
|
| FetchEventCallbacksMap fetch_event_callbacks;
|
|
|
| @@ -902,6 +921,21 @@ void ServiceWorkerContextClient::DispatchSyncEvent(
|
| web_last_chance);
|
| }
|
|
|
| +void ServiceWorkerContextClient::DispatchPaymentRequestEvent(
|
| + payments::mojom::PaymentAppRequestDataPtr data,
|
| + const DispatchPaymentRequestEventCallback& callback) {
|
| + TRACE_EVENT0("ServiceWorker",
|
| + "ServiceWorkerContextClient::DispatchPaymentRequestEvent");
|
| + int request_id = context_->payment_request_event_callbacks.Add(
|
| + base::MakeUnique<PaymentRequestEventCallback>(callback));
|
| +
|
| + // TODO(zino): Use typemap when this is moved to blink-side.
|
| + blink::WebPaymentAppRequestData webData =
|
| + mojo::ConvertTo<blink::WebPaymentAppRequestData>(std::move(data));
|
| +
|
| + proxy_->dispatchPaymentRequestEvent(request_id, webData);
|
| +}
|
| +
|
| void ServiceWorkerContextClient::Send(IPC::Message* message) {
|
| sender_->Send(message);
|
| }
|
|
|