blob: 638620cd9653383be8657a6c2188935480dd24d2 [file] [log] [blame]
// Copyright 2015 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 "content/renderer/service_worker/service_worker_type_converters.h"
#include "base/logging.h"
#include "mojo/public/cpp/bindings/associated_interface_ptr_info.h"
#include "mojo/public/cpp/bindings/associated_interface_request.h"
namespace mojo {
blink::WebCanMakePaymentEventData
TypeConverter<blink::WebCanMakePaymentEventData,
payments::mojom::CanMakePaymentEventDataPtr>::
Convert(const payments::mojom::CanMakePaymentEventDataPtr& input) {
blink::WebCanMakePaymentEventData output;
output.top_origin = blink::WebString::FromUTF8(input->top_origin.spec());
output.payment_request_origin =
blink::WebString::FromUTF8(input->payment_request_origin.spec());
output.method_data =
blink::WebVector<blink::WebPaymentMethodData>(input->method_data.size());
for (size_t i = 0; i < input->method_data.size(); i++) {
output.method_data[i] = mojo::ConvertTo<blink::WebPaymentMethodData>(
std::move(input->method_data[i]));
}
output.modifiers = blink::WebVector<blink::WebPaymentDetailsModifier>(
input->modifiers.size());
for (size_t i = 0; i < input->modifiers.size(); i++) {
output.modifiers[i] =
mojo::ConvertTo<blink::WebPaymentDetailsModifier>(input->modifiers[i]);
}
return output;
}
blink::WebPaymentRequestEventData
TypeConverter<blink::WebPaymentRequestEventData,
payments::mojom::PaymentRequestEventDataPtr>::
Convert(const payments::mojom::PaymentRequestEventDataPtr& input) {
blink::WebPaymentRequestEventData output;
output.top_origin = blink::WebString::FromUTF8(input->top_origin.spec());
output.payment_request_origin =
blink::WebString::FromUTF8(input->payment_request_origin.spec());
output.payment_request_id =
blink::WebString::FromUTF8(input->payment_request_id);
output.method_data =
blink::WebVector<blink::WebPaymentMethodData>(input->method_data.size());
for (size_t i = 0; i < input->method_data.size(); i++) {
output.method_data[i] = mojo::ConvertTo<blink::WebPaymentMethodData>(
std::move(input->method_data[i]));
}
output.total = mojo::ConvertTo<blink::WebPaymentCurrencyAmount>(input->total);
output.modifiers = blink::WebVector<blink::WebPaymentDetailsModifier>(
input->modifiers.size());
for (size_t i = 0; i < input->modifiers.size(); i++) {
output.modifiers[i] =
mojo::ConvertTo<blink::WebPaymentDetailsModifier>(input->modifiers[i]);
}
output.instrument_key = blink::WebString::FromUTF8(input->instrument_key);
return output;
}
blink::WebPaymentMethodData
TypeConverter<blink::WebPaymentMethodData,
payments::mojom::PaymentMethodDataPtr>::
Convert(const payments::mojom::PaymentMethodDataPtr& input) {
DCHECK(!input->supported_method.empty());
blink::WebPaymentMethodData output;
output.supported_method = blink::WebString::FromUTF8(input->supported_method);
output.stringified_data = blink::WebString::FromUTF8(input->stringified_data);
return output;
}
blink::WebPaymentItem
TypeConverter<blink::WebPaymentItem, payments::mojom::PaymentItemPtr>::Convert(
const payments::mojom::PaymentItemPtr& input) {
blink::WebPaymentItem output;
output.label = blink::WebString::FromUTF8(input->label);
output.amount =
mojo::ConvertTo<blink::WebPaymentCurrencyAmount>(input->amount);
output.pending = input->pending;
return output;
}
blink::WebPaymentCurrencyAmount
TypeConverter<blink::WebPaymentCurrencyAmount,
payments::mojom::PaymentCurrencyAmountPtr>::
Convert(const payments::mojom::PaymentCurrencyAmountPtr& input) {
blink::WebPaymentCurrencyAmount output;
output.currency = blink::WebString::FromUTF8(input->currency);
output.value = blink::WebString::FromUTF8(input->value);
return output;
}
blink::WebPaymentDetailsModifier
TypeConverter<blink::WebPaymentDetailsModifier,
payments::mojom::PaymentDetailsModifierPtr>::
Convert(const payments::mojom::PaymentDetailsModifierPtr& input) {
DCHECK(!input->method_data->supported_method.empty());
blink::WebPaymentDetailsModifier output;
output.supported_method =
blink::WebString::FromUTF8(input->method_data->supported_method);
// The total is optional in a modifier.
if (input->total)
output.total = mojo::ConvertTo<blink::WebPaymentItem>(input->total);
output.additional_display_items = blink::WebVector<blink::WebPaymentItem>(
input->additional_display_items.size());
for (size_t i = 0; i < input->additional_display_items.size(); i++) {
output.additional_display_items[i] = mojo::ConvertTo<blink::WebPaymentItem>(
input->additional_display_items[i]);
}
output.stringified_data =
blink::WebString::FromUTF8(input->method_data->stringified_data);
return output;
}
blink::WebServiceWorkerObjectInfo
TypeConverter<blink::WebServiceWorkerObjectInfo,
blink::mojom::ServiceWorkerObjectInfoPtr>::
Convert(const blink::mojom::ServiceWorkerObjectInfoPtr& input) {
if (!input) {
return blink::WebServiceWorkerObjectInfo(
blink::mojom::kInvalidServiceWorkerVersionId,
blink::mojom::ServiceWorkerState::kUnknown, blink::WebURL(),
mojo::ScopedInterfaceEndpointHandle() /* host_ptr_info */,
mojo::ScopedInterfaceEndpointHandle() /* request */);
}
return blink::WebServiceWorkerObjectInfo(
input->version_id, input->state, input->url,
input->host_ptr_info.PassHandle(), input->request.PassHandle());
}
blink::WebServiceWorkerRegistrationObjectInfo
TypeConverter<blink::WebServiceWorkerRegistrationObjectInfo,
blink::mojom::ServiceWorkerRegistrationObjectInfoPtr>::
Convert(const blink::mojom::ServiceWorkerRegistrationObjectInfoPtr& input) {
if (!input) {
return blink::WebServiceWorkerRegistrationObjectInfo(
blink::mojom::kInvalidServiceWorkerRegistrationId, blink::WebURL(),
blink::mojom::ServiceWorkerUpdateViaCache::kImports,
mojo::ScopedInterfaceEndpointHandle() /* host_ptr_info */,
mojo::ScopedInterfaceEndpointHandle() /* request */,
blink::mojom::ServiceWorkerObjectInfoPtr()
.To<blink::WebServiceWorkerObjectInfo>() /* installing */,
blink::mojom::ServiceWorkerObjectInfoPtr()
.To<blink::WebServiceWorkerObjectInfo>() /* waiting */,
blink::mojom::ServiceWorkerObjectInfoPtr()
.To<blink::WebServiceWorkerObjectInfo>() /* active */);
}
return blink::WebServiceWorkerRegistrationObjectInfo(
input->registration_id, input->scope, input->update_via_cache,
input->host_ptr_info.PassHandle(), input->request.PassHandle(),
input->installing.To<blink::WebServiceWorkerObjectInfo>(),
input->waiting.To<blink::WebServiceWorkerObjectInfo>(),
input->active.To<blink::WebServiceWorkerObjectInfo>());
}
} // namespace mojo