Backed out changeset 5a77e82d273e (bug 1480872) for browser-chorme failure on dom/payments/test/browser_payment_in_different_tabs.js. CLOSED TREE

This commit is contained in:
Dorel Luca 2018-08-16 11:58:12 +03:00
parent 2b8aa56d1e
commit 536ac71605
5 changed files with 68 additions and 53 deletions

View File

@ -365,52 +365,58 @@ PaymentDetails::Create(const IPCPaymentDetails& aIPCDetails,
}
nsCOMPtr<nsIArray> displayItems;
nsCOMPtr<nsIMutableArray> items = do_CreateInstance(NS_ARRAY_CONTRACTID);
MOZ_ASSERT(items);
for (const IPCPaymentItem& displayItem : aIPCDetails.displayItems()) {
nsCOMPtr<nsIPaymentItem> item;
rv = PaymentItem::Create(displayItem, getter_AddRefs(item));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = items->AppendElement(item);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
if (aIPCDetails.displayItemsPassed()) {
nsCOMPtr<nsIMutableArray> items = do_CreateInstance(NS_ARRAY_CONTRACTID);
MOZ_ASSERT(items);
for (const IPCPaymentItem& displayItem : aIPCDetails.displayItems()) {
nsCOMPtr<nsIPaymentItem> item;
rv = PaymentItem::Create(displayItem, getter_AddRefs(item));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = items->AppendElement(item);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
}
displayItems = items.forget();
}
displayItems = items.forget();
nsCOMPtr<nsIArray> shippingOptions;
nsCOMPtr<nsIMutableArray> options = do_CreateInstance(NS_ARRAY_CONTRACTID);
MOZ_ASSERT(options);
for (const IPCPaymentShippingOption& shippingOption : aIPCDetails.shippingOptions()) {
nsCOMPtr<nsIPaymentShippingOption> option;
rv = PaymentShippingOption::Create(shippingOption, getter_AddRefs(option));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = options->AppendElement(option);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
if (aIPCDetails.shippingOptionsPassed()) {
nsCOMPtr<nsIMutableArray> options = do_CreateInstance(NS_ARRAY_CONTRACTID);
MOZ_ASSERT(options);
for (const IPCPaymentShippingOption& shippingOption : aIPCDetails.shippingOptions()) {
nsCOMPtr<nsIPaymentShippingOption> option;
rv = PaymentShippingOption::Create(shippingOption, getter_AddRefs(option));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = options->AppendElement(option);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
}
shippingOptions = options.forget();
}
shippingOptions = options.forget();
nsCOMPtr<nsIArray> modifiers;
nsCOMPtr<nsIMutableArray> detailsModifiers = do_CreateInstance(NS_ARRAY_CONTRACTID);
MOZ_ASSERT(detailsModifiers);
for (const IPCPaymentDetailsModifier& modifier : aIPCDetails.modifiers()) {
nsCOMPtr<nsIPaymentDetailsModifier> detailsModifier;
rv = PaymentDetailsModifier::Create(modifier, getter_AddRefs(detailsModifier));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = detailsModifiers->AppendElement(detailsModifier);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
if (aIPCDetails.modifiersPassed()) {
nsCOMPtr<nsIMutableArray> detailsModifiers = do_CreateInstance(NS_ARRAY_CONTRACTID);
MOZ_ASSERT(detailsModifiers);
for (const IPCPaymentDetailsModifier& modifier : aIPCDetails.modifiers()) {
nsCOMPtr<nsIPaymentDetailsModifier> detailsModifier;
rv = PaymentDetailsModifier::Create(modifier, getter_AddRefs(detailsModifier));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = detailsModifiers->AppendElement(detailsModifier);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
}
modifiers = detailsModifiers.forget();
}
modifiers = detailsModifiers.forget();
nsCOMPtr<nsIPaymentDetails> details =
new PaymentDetails(aIPCDetails.id(), total, displayItems, shippingOptions,

View File

@ -178,7 +178,10 @@ ConvertDetailsInit(JSContext* aCx,
shippingOptions,
modifiers,
EmptyString(), // error message
EmptyString()); // shippingAddressErrors
EmptyString(), // shippingAddressErrors
aDetails.mDisplayItems.WasPassed(),
aDetails.mShippingOptions.WasPassed(),
aDetails.mModifiers.WasPassed());
return NS_OK;
}
@ -220,7 +223,10 @@ ConvertDetailsUpdate(JSContext* aCx,
shippingOptions,
modifiers,
error,
shippingAddressErrors);
shippingAddressErrors,
aDetails.mDisplayItems.WasPassed(),
aDetails.mShippingOptions.WasPassed(),
aDetails.mModifiers.WasPassed());
return NS_OK;
}

View File

@ -56,6 +56,9 @@ struct IPCPaymentDetails
IPCPaymentDetailsModifier[] modifiers;
nsString error;
nsString shippingAddressErrors;
bool displayItemsPassed;
bool shippingOptionsPassed;
bool modifiersPassed;
};
struct IPCPaymentOptions

View File

@ -45,14 +45,14 @@ function checkSimplestRequest(payRequest) {
emitTestFail("total item's value should be '1.00'.");
}
if (details.displayItems.length !== 0) {
emitTestFail("details.displayItems should be an empty array.");
if (details.displayItems) {
emitTestFail("details.displayItems should be undefined.");
}
if (details.modifiers.length !== 0) {
emitTestFail("details.modifiers should be an empty array.");
if (details.modifiers) {
emitTestFail("details.displayItems should be undefined.");
}
if (details.shippingOptions.length !== 0) {
emitTestFail("details.shippingOptions should be an empty array.");
if (details.shippingOptions) {
emitTestFail("details.shippingOptions should be undefined.");
}
// checking the default generated PaymentOptions parameter
@ -319,14 +319,14 @@ function checkNonBasicCardRequest(payRequest) {
emitTestFail("total item's value should be '1.00'.");
}
if (details.displayItems.length !== 0) {
emitTestFail("details.displayItems should be an zero length array.");
if (details.displayItems) {
emitTestFail("details.displayItems should be undefined.");
}
if (details.displayItems.length !== 0) {
emitTestFail("details.modifiers should be an zero length array.");
if (details.modifiers) {
emitTestFail("details.displayItems should be undefined.");
}
if (details.displayItems.length !== 0) {
emitTestFail("details.shippingOptions should be an zero length array.");
if (details.shippingOptions) {
emitTestFail("details.shippingOptions should be undefined.");
}
// checking the default generated PaymentOptions parameter

View File

@ -17,9 +17,9 @@ function checkSimplePayment(aSimplePayment) {
is(details.totalItem.amount.currency, "USD", "total item's currency should be 'USD'.");
is(details.totalItem.amount.value, "55.00", "total item's value should be '55.00'.");
ok(details.displayItems.length, 0, "details.displayItems should be a zero length array.");
ok(details.modifiers.length, 0, "details.modifiers should be a zero length array.");
ok(details.shippingOptions.length, 0, "details.shippingOptions should be a zero length array.");
ok(!details.displayItems, "details.displayItems should be undefined.");
ok(!details.modifiers, "details.modifiers should be undefined.");
ok(!details.shippingOptions, "details.shippingOptions should be undefined.");
// checking the default generated PaymentOptions parameter
const paymentOptions = aSimplePayment.paymentOptions;