| Index: third_party/WebKit/Source/modules/payments/PaymentTestHelper.cpp | 
| diff --git a/third_party/WebKit/Source/modules/payments/PaymentTestHelper.cpp b/third_party/WebKit/Source/modules/payments/PaymentTestHelper.cpp | 
| index d4e326b88afb2b7e3883cc540c1dd7b8b77e1bda..5f543fa5c588df433d7450056bc2f826dc001ed6 100644 | 
| --- a/third_party/WebKit/Source/modules/payments/PaymentTestHelper.cpp | 
| +++ b/third_party/WebKit/Source/modules/payments/PaymentTestHelper.cpp | 
| @@ -55,6 +55,40 @@ void setValues(PaymentItemOrPaymentShippingOption& original, | 
| } | 
| } | 
|  | 
| +void buildPaymentDetailsBase(PaymentTestDetailToChange detail, | 
| +                             PaymentTestDataToChange data, | 
| +                             PaymentTestModificationType modificationType, | 
| +                             const String& valueToUse, | 
| +                             PaymentDetailsBase* details) { | 
| +  PaymentItem item; | 
| +  if (detail == PaymentTestDetailItem) | 
| +    item = buildPaymentItemForTest(data, modificationType, valueToUse); | 
| +  else | 
| +    item = buildPaymentItemForTest(); | 
| + | 
| +  PaymentShippingOption shippingOption; | 
| +  if (detail == PaymentTestDetailShippingOption) { | 
| +    shippingOption = | 
| +        buildShippingOptionForTest(data, modificationType, valueToUse); | 
| +  } else { | 
| +    shippingOption = buildShippingOptionForTest(); | 
| +  } | 
| + | 
| +  PaymentDetailsModifier modifier; | 
| +  if (detail == PaymentTestDetailModifierTotal || | 
| +      detail == PaymentTestDetailModifierItem) { | 
| +    modifier = buildPaymentDetailsModifierForTest(detail, data, | 
| +                                                  modificationType, valueToUse); | 
| +  } else { | 
| +    modifier = buildPaymentDetailsModifierForTest(); | 
| +  } | 
| + | 
| +  details->setDisplayItems(HeapVector<PaymentItem>(1, item)); | 
| +  details->setShippingOptions( | 
| +      HeapVector<PaymentShippingOption>(1, shippingOption)); | 
| +  details->setModifiers(HeapVector<PaymentDetailsModifier>(1, modifier)); | 
| +} | 
| + | 
| }  // namespace | 
|  | 
| PaymentItem buildPaymentItemForTest( | 
| @@ -106,54 +140,50 @@ PaymentDetailsModifier buildPaymentDetailsModifierForTest( | 
| return modifier; | 
| } | 
|  | 
| -PaymentDetails buildPaymentDetailsForTest( | 
| +PaymentDetailsInit buildPaymentDetailsInitForTest( | 
| PaymentTestDetailToChange detail, | 
| PaymentTestDataToChange data, | 
| PaymentTestModificationType modificationType, | 
| const String& valueToUse) { | 
| -  PaymentItem total; | 
| -  if (detail == PaymentTestDetailTotal) | 
| -    total = buildPaymentItemForTest(data, modificationType, valueToUse); | 
| -  else | 
| -    total = buildPaymentItemForTest(); | 
| +  PaymentDetailsInit details; | 
| +  buildPaymentDetailsBase(detail, data, modificationType, valueToUse, &details); | 
|  | 
| -  PaymentItem item; | 
| -  if (detail == PaymentTestDetailItem) | 
| -    item = buildPaymentItemForTest(data, modificationType, valueToUse); | 
| -  else | 
| -    item = buildPaymentItemForTest(); | 
| +  if (detail == PaymentTestDetailTotal) { | 
| +    details.setTotal( | 
| +        buildPaymentItemForTest(data, modificationType, valueToUse)); | 
| +  } else { | 
| +    details.setTotal(buildPaymentItemForTest()); | 
| +  } | 
|  | 
| -  PaymentShippingOption shippingOption; | 
| -  if (detail == PaymentTestDetailShippingOption) | 
| -    shippingOption = | 
| -        buildShippingOptionForTest(data, modificationType, valueToUse); | 
| -  else | 
| -    shippingOption = buildShippingOptionForTest(); | 
| +  return details; | 
| +} | 
|  | 
| -  PaymentDetailsModifier modifier; | 
| -  if (detail == PaymentTestDetailModifierTotal || | 
| -      detail == PaymentTestDetailModifierItem) | 
| -    modifier = buildPaymentDetailsModifierForTest(detail, data, | 
| -                                                  modificationType, valueToUse); | 
| -  else | 
| -    modifier = buildPaymentDetailsModifierForTest(); | 
| +PaymentDetailsUpdate buildPaymentDetailsUpdateForTest( | 
| +    PaymentTestDetailToChange detail, | 
| +    PaymentTestDataToChange data, | 
| +    PaymentTestModificationType modificationType, | 
| +    const String& valueToUse) { | 
| +  PaymentDetailsUpdate details; | 
| +  buildPaymentDetailsBase(detail, data, modificationType, valueToUse, &details); | 
|  | 
| -  PaymentDetails result; | 
| -  result.setTotal(total); | 
| -  result.setDisplayItems(HeapVector<PaymentItem>(1, item)); | 
| -  result.setShippingOptions( | 
| -      HeapVector<PaymentShippingOption>(1, shippingOption)); | 
| -  result.setModifiers(HeapVector<PaymentDetailsModifier>(1, modifier)); | 
| +  if (detail == PaymentTestDetailTotal) { | 
| +    details.setTotal( | 
| +        buildPaymentItemForTest(data, modificationType, valueToUse)); | 
| +  } else { | 
| +    details.setTotal(buildPaymentItemForTest()); | 
| +  } | 
|  | 
| if (detail == PaymentTestDetailError) | 
| -    result.setError(valueToUse); | 
| +    details.setError(valueToUse); | 
|  | 
| -  return result; | 
| +  return details; | 
| } | 
|  | 
| -PaymentDetails buildPaymentDetailsErrorMsgForTest(const String& valueToUse) { | 
| -  return buildPaymentDetailsForTest(PaymentTestDetailError, PaymentTestDataNone, | 
| -                                    PaymentTestOverwriteValue, valueToUse); | 
| +PaymentDetailsUpdate buildPaymentDetailsErrorMsgForTest( | 
| +    const String& valueToUse) { | 
| +  return buildPaymentDetailsUpdateForTest( | 
| +      PaymentTestDetailError, PaymentTestDataNone, PaymentTestOverwriteValue, | 
| +      valueToUse); | 
| } | 
|  | 
| HeapVector<PaymentMethodData> buildPaymentMethodDataForTest() { | 
|  |