blob: 4d8b2b4a065412051636c4565a93b76a641027c4 [file] [log] [blame]
function activateThen(completion)
{
return new Promise(resolve => {
var button = document.createElement("button");
button.style["position"] = "absolute";
button.onclick = () => {
document.body.removeChild(button);
resolve(completion());
};
document.body.insertBefore(button, document.body.firstChild);
UIHelper.activateElement(button);
});
}
function user_activation_test(func, name)
{
promise_test(async t => {
await activateThen(() => func(t));
}, name);
}
function validPaymentMethod()
{
return {
supportedMethods: 'https://apple.com/apple-pay',
data: {
version: 2,
merchantIdentifier: '',
countryCode: 'US',
supportedNetworks: ['visa', 'masterCard'],
merchantCapabilities: ['supports3DS'],
},
}
}
function validPaymentDetails()
{
return {
total: {
label: 'Total',
amount: {
currency: 'USD',
value: '10.00',
},
},
displayItems: [{
label: 'Item',
amount: {
currency: 'USD',
value: '10.00',
},
}],
}
}
function updateDetailsOnShippingAddressChange(paymentDetailsInit, paymentOptions, detailsUpdate)
{
return new Promise((resolve, reject) => {
activateThen(() => {
var request = new PaymentRequest([validPaymentMethod()], paymentDetailsInit, paymentOptions);
request.onmerchantvalidation = (event) => {
event.complete({ });
};
request.onshippingaddresschange = (event) => {
var detailsUpdatePromise = new Promise((resolve, reject) => {
resolve(detailsUpdate);
});
event.updateWith(detailsUpdatePromise);
detailsUpdatePromise.then(() => {
resolve();
request.abort().catch(() => { });
});
};
request.show().catch(error => error);
});
});
}