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

Unified Diff: content/renderer/service_worker/service_worker_context_client.cc

Issue 2718013004: PaymentApp: Implement respondWith() in PaymentRequestEvent. (content side) (Closed)
Patch Set: PaymentApp: Implement respondWith() in PaymentRequestEvent. (content side) Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
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 babd858683d03a2c59cc7499b4e784554a2dbe72..8590d768e80aa4bdbe1b0eb5e83abbbc5608f256 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -59,6 +59,7 @@
#include "third_party/WebKit/public/platform/WebURLResponse.h"
#include "third_party/WebKit/public/platform/modules/notifications/WebNotificationData.h"
#include "third_party/WebKit/public/platform/modules/payments/WebPaymentAppRequest.h"
+#include "third_party/WebKit/public/platform/modules/payments/WebPaymentAppResponse.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"
@@ -196,8 +197,10 @@ struct ServiceWorkerContextClient::WorkerContextData {
using ActivateEventCallbacksMap =
IDMap<std::unique_ptr<const DispatchActivateEventCallback>>;
using SyncEventCallbacksMap = IDMap<std::unique_ptr<const SyncCallback>>;
+ using PaymentResponseCallbacksMap =
+ IDMap<std::unique_ptr<mojom::PaymentAppResponseCallbackPtr>>;
shimazu 2017/03/08 01:39:40 IDMap was originally used here, but now we can use
zino 2017/03/19 04:47:23 Done.
using PaymentRequestEventCallbacksMap =
- IDMap<std::unique_ptr<const PaymentRequestEventCallback>>;
+ IDMap<std::unique_ptr<const DispatchPaymentRequestEventCallback>>;
using NotificationClickEventCallbacksMap =
IDMap<std::unique_ptr<const DispatchNotificationClickEventCallback>>;
using NotificationCloseEventCallbacksMap =
@@ -239,6 +242,9 @@ struct ServiceWorkerContextClient::WorkerContextData {
// Pending callbacks for Background Sync Events.
SyncEventCallbacksMap sync_event_callbacks;
+ // Pending callbacks for Payment App Response.
+ PaymentResponseCallbacksMap payment_response_callbacks;
+
// Pending callbacks for Payment Request Events.
PaymentRequestEventCallbacksMap payment_request_event_callbacks;
@@ -782,16 +788,31 @@ void ServiceWorkerContextClient::didHandleSyncEvent(
context_->sync_event_callbacks.Remove(request_id);
}
+void ServiceWorkerContextClient::respondToPaymentRequestEvent(
+ int event_id,
shimazu 2017/03/08 01:39:40 |payment_request_id|
zino 2017/03/19 04:47:23 Done.
+ const blink::WebPaymentAppResponse& web_response,
+ double dispatch_event_time) {
+ mojom::PaymentAppResponseCallbackPtr* response_callback =
+ context_->payment_response_callbacks.Lookup(event_id);
+ payments::mojom::PaymentAppResponsePtr response =
+ payments::mojom::PaymentAppResponse::New();
+ response->method_name = web_response.methodName.utf8();
+ (*response_callback)
+ ->OnPaymentAppResponse(std::move(response),
+ base::Time::FromDoubleT(dispatch_event_time));
+ context_->payment_response_callbacks.Remove(event_id);
+}
+
void ServiceWorkerContextClient::didHandlePaymentRequestEvent(
- int request_id,
+ int event_id,
blink::WebServiceWorkerEventResult result,
double event_dispatch_time) {
- const PaymentRequestEventCallback* callback =
- context_->payment_request_event_callbacks.Lookup(request_id);
+ const DispatchPaymentRequestEventCallback* callback =
+ context_->payment_request_event_callbacks.Lookup(event_id);
DCHECK(callback);
callback->Run(EventResultToStatus(result),
base::Time::FromDoubleT(event_dispatch_time));
- context_->payment_request_event_callbacks.Remove(request_id);
+ context_->payment_request_event_callbacks.Remove(event_id);
}
blink::WebServiceWorkerNetworkProvider*
@@ -903,13 +924,23 @@ void ServiceWorkerContextClient::DispatchSyncEvent(
}
void ServiceWorkerContextClient::DispatchPaymentRequestEvent(
+ int event_id,
shimazu 2017/03/08 01:39:39 |payment_request_id|
zino 2017/03/19 04:47:23 Done.
payments::mojom::PaymentAppRequestPtr app_request,
+ mojom::PaymentAppResponseCallbackPtr response_callback,
const DispatchPaymentRequestEventCallback& callback) {
- int request_id = context_->payment_request_event_callbacks.Add(
- base::MakeUnique<PaymentRequestEventCallback>(callback));
+ TRACE_EVENT0("ServiceWorker",
+ "ServiceWorkerContextClient::DispatchPaymentRequestEvent");
+ context_->payment_response_callbacks.AddWithID(
+ base::MakeUnique<mojom::PaymentAppResponseCallbackPtr>(
+ std::move(response_callback)),
+ event_id);
+ context_->payment_request_event_callbacks.AddWithID(
+ base::MakeUnique<DispatchPaymentRequestEventCallback>(callback),
+ event_id);
+
blink::WebPaymentAppRequest webAppRequest =
mojo::ConvertTo<blink::WebPaymentAppRequest>(std::move(app_request));
- proxy_->dispatchPaymentRequestEvent(request_id, webAppRequest);
+ proxy_->dispatchPaymentRequestEvent(event_id, webAppRequest);
}
void ServiceWorkerContextClient::Send(IPC::Message* message) {

Powered by Google App Engine
This is Rietveld 408576698