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

Side by Side Diff: third_party/WebKit/Source/modules/payments/PaymentRequest.cpp

Issue 2406923002: Move payment_request.mojom file to components/ (Closed)
Patch Set: Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/payments/PaymentRequest.h" 5 #include "modules/payments/PaymentRequest.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/JSONValuesForV8.h" 8 #include "bindings/core/v8/JSONValuesForV8.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 const blink::PaymentDetailsModifier& input) { 87 const blink::PaymentDetailsModifier& input) {
88 PaymentDetailsModifierPtr output = PaymentDetailsModifier::New(); 88 PaymentDetailsModifierPtr output = PaymentDetailsModifier::New();
89 output->supported_methods = 89 output->supported_methods =
90 WTF::Vector<WTF::String>(input.supportedMethods()); 90 WTF::Vector<WTF::String>(input.supportedMethods());
91 91
92 if (input.hasTotal()) 92 if (input.hasTotal())
93 output->total = PaymentItem::From(input.total()); 93 output->total = PaymentItem::From(input.total());
94 else 94 else
95 output->total = PaymentItem::New(); 95 output->total = PaymentItem::New();
96 96
97 if (input.hasAdditionalDisplayItems()) 97 if (input.hasAdditionalDisplayItems()) {
98 output->additional_display_items = 98 for (size_t i = 0; i < input.additionalDisplayItems().size(); ++i) {
99 mojo::WTFArray<PaymentItemPtr>::From(input.additionalDisplayItems()); 99 output->additional_display_items.append(
please use gerrit instead 2016/10/12 23:51:55 Is it not possible to continue using WTFArray::Fro
Kevin Bailey 2016/10/13 18:30:42 The destination field has changed from mojo::WTFAr
please use gerrit instead 2016/10/13 20:24:00 Please see if there's a shorter way to write this,
100 else 100 TypeConverter<PaymentItemPtr, blink::PaymentItem>::Convert(
101 output->additional_display_items = mojo::WTFArray<PaymentItemPtr>::New(0); 101 input.additionalDisplayItems()[i]));
please use gerrit instead 2016/10/12 23:51:55 It's shorter to call "PaymentItem::From()" instead
Kevin Bailey 2016/10/13 18:30:42 Ok, changed all 4 occurrences.
102 102 }
103 }
103 return output; 104 return output;
104 } 105 }
105 }; 106 };
106 107
107 template <> 108 template <>
108 struct TypeConverter<PaymentDetailsPtr, blink::PaymentDetails> { 109 struct TypeConverter<PaymentDetailsPtr, blink::PaymentDetails> {
109 static PaymentDetailsPtr Convert(const blink::PaymentDetails& input) { 110 static PaymentDetailsPtr Convert(const blink::PaymentDetails& input) {
110 PaymentDetailsPtr output = PaymentDetails::New(); 111 PaymentDetailsPtr output = PaymentDetails::New();
111 output->total = PaymentItem::From(input.total()); 112 output->total = PaymentItem::From(input.total());
112 113
113 if (input.hasDisplayItems()) 114 if (input.hasDisplayItems()) {
114 output->display_items = 115 for (size_t i = 0; i < input.displayItems().size(); ++i) {
115 mojo::WTFArray<PaymentItemPtr>::From(input.displayItems()); 116 output->display_items.append(
116 else 117 TypeConverter<PaymentItemPtr, blink::PaymentItem>::Convert(
117 output->display_items = mojo::WTFArray<PaymentItemPtr>::New(0); 118 input.displayItems()[i]));
119 }
120 }
118 121
119 if (input.hasShippingOptions()) 122 if (input.hasShippingOptions()) {
120 output->shipping_options = mojo::WTFArray<PaymentShippingOptionPtr>::From( 123 for (size_t i = 0; i < input.shippingOptions().size(); ++i) {
121 input.shippingOptions()); 124 output->shipping_options.append(
122 else 125 TypeConverter<PaymentShippingOptionPtr,
123 output->shipping_options = 126 blink::PaymentShippingOption>::
124 mojo::WTFArray<PaymentShippingOptionPtr>::New(0); 127 Convert(input.shippingOptions()[i]));
128 }
129 }
125 130
126 if (input.hasModifiers()) 131 if (input.hasModifiers()) {
127 output->modifiers = 132 for (size_t i = 0; i < input.modifiers().size(); ++i) {
128 mojo::WTFArray<PaymentDetailsModifierPtr>::From(input.modifiers()); 133 output->modifiers.append(
129 else 134 TypeConverter<
130 output->modifiers = mojo::WTFArray<PaymentDetailsModifierPtr>::New(0); 135 PaymentDetailsModifierPtr,
136 blink::PaymentDetailsModifier>::Convert(input.modifiers()[i]));
137 }
138 }
131 139
132 if (input.hasError()) 140 if (input.hasError())
133 output->error = input.error(); 141 output->error = input.error();
134 else 142 else
135 output->error = WTF::emptyString(); 143 output->error = WTF::emptyString();
136 144
137 return output; 145 return output;
138 } 146 }
139 }; 147 };
140 148
(...skipping 21 matching lines...) Expand all
162 WTF::Vector<WTF::String>(input[i].supportedMethods); 170 WTF::Vector<WTF::String>(input[i].supportedMethods);
163 output[i]->stringified_data = input[i].stringifiedData; 171 output[i]->stringified_data = input[i].stringifiedData;
164 } 172 }
165 return output; 173 return output;
166 } 174 }
167 }; 175 };
168 176
169 } // namespace mojo 177 } // namespace mojo
170 178
171 namespace blink { 179 namespace blink {
180
181 bool validatePaymentDetails(const mojo::PaymentDetailsPtr&);
please use gerrit instead 2016/10/12 23:51:55 Pretty sure that this declaration is no-op, becaus
Kevin Bailey 2016/10/13 18:30:42 Was left-over. Gone.
182
172 namespace { 183 namespace {
173 184
174 // If the website does not call complete() 60 seconds after show() has been 185 // If the website does not call complete() 60 seconds after show() has been
175 // resolved, then behave as if the website called complete("fail"). 186 // resolved, then behave as if the website called complete("fail").
176 static const int completeTimeoutSeconds = 60; 187 static const int completeTimeoutSeconds = 60;
177 188
178 // Validates ShippingOption or PaymentItem, which happen to have identical 189 // Validates ShippingOption or PaymentItem, which happen to have identical
179 // fields, except for "id", which is present only in ShippingOption. 190 // fields, except for "id", which is present only in ShippingOption.
180 template <typename T> 191 template <typename T>
181 void validateShippingOptionOrPaymentItem(const T& item, 192 void validateShippingOptionOrPaymentItem(const T& item,
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 exceptionState.throwSecurityError("Must be in a secure context"); 592 exceptionState.throwSecurityError("Must be in a secure context");
582 return; 593 return;
583 } 594 }
584 595
585 if (!scriptState->domWindow()->frame() || 596 if (!scriptState->domWindow()->frame() ||
586 !scriptState->domWindow()->frame()->isMainFrame()) { 597 !scriptState->domWindow()->frame()->isMainFrame()) {
587 exceptionState.throwSecurityError( 598 exceptionState.throwSecurityError(
588 "Must be in a top-level browsing context"); 599 "Must be in a top-level browsing context");
589 return; 600 return;
590 } 601 }
591
592 validatePaymentDetails(details, exceptionState);
593 if (exceptionState.hadException()) 602 if (exceptionState.hadException())
594 return; 603 return;
595 604
596 if (details.hasError() && !details.error().isEmpty()) { 605 if (details.hasError() && !details.error().isEmpty()) {
597 exceptionState.throwTypeError("Error value should be empty"); 606 exceptionState.throwTypeError("Error value should be empty");
598 return; 607 return;
599 } 608 }
600 609
601 if (m_options.requestShipping()) { 610 if (m_options.requestShipping()) {
602 m_shippingOption = getSelectedShippingOption(details); 611 m_shippingOption = getSelectedShippingOption(details);
603 m_shippingType = getValidShippingType(m_options.shippingType()); 612 m_shippingType = getValidShippingType(m_options.shippingType());
604 } 613 }
605 614
606 scriptState->domWindow()->frame()->interfaceProvider()->getInterface( 615 scriptState->domWindow()->frame()->interfaceProvider()->getInterface(
607 mojo::GetProxy(&m_paymentProvider)); 616 mojo::GetProxy(&m_paymentProvider));
608 m_paymentProvider.set_connection_error_handler(convertToBaseCallback( 617 m_paymentProvider.set_connection_error_handler(convertToBaseCallback(
609 WTF::bind(&PaymentRequest::OnError, wrapWeakPersistent(this), 618 WTF::bind(&PaymentRequest::OnError, wrapWeakPersistent(this),
610 mojom::blink::PaymentErrorReason::UNKNOWN))); 619 mojom::blink::PaymentErrorReason::UNKNOWN)));
611 m_paymentProvider->Init( 620
612 m_clientBinding.CreateInterfacePtrAndBind(), 621 WTF::Vector<mojom::blink::PaymentMethodDataPtr> methods(
613 mojo::WTFArray<mojom::blink::PaymentMethodDataPtr>::From( 622 validatedMethodData.size());
614 validatedMethodData), 623 for (size_t i = 0; i < validatedMethodData.size(); ++i) {
615 mojom::blink::PaymentDetails::From(details), 624 methods[i] = mojom::blink::PaymentMethodData::New();
616 mojom::blink::PaymentOptions::From(m_options)); 625 methods[i]->supported_methods =
626 WTF::Vector<WTF::String>(validatedMethodData[i].supportedMethods);
627 methods[i]->stringified_data = validatedMethodData[i].stringifiedData;
628 }
629 m_paymentProvider->Init(m_clientBinding.CreateInterfacePtrAndBind(),
630 std::move(methods),
631 mojom::blink::PaymentDetails::From(details),
632 mojom::blink::PaymentOptions::From(m_options));
617 } 633 }
618 634
619 void PaymentRequest::contextDestroyed() { 635 void PaymentRequest::contextDestroyed() {
620 clearResolversAndCloseMojoConnection(); 636 clearResolversAndCloseMojoConnection();
621 } 637 }
622 638
623 void PaymentRequest::OnShippingAddressChange( 639 void PaymentRequest::OnShippingAddressChange(
624 mojom::blink::PaymentAddressPtr address) { 640 mojom::blink::PaymentAddressPtr address) {
625 DCHECK(m_showResolver); 641 DCHECK(m_showResolver);
626 DCHECK(!m_completeResolver); 642 DCHECK(!m_completeResolver);
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 m_completeTimer.stop(); 799 m_completeTimer.stop();
784 m_completeResolver.clear(); 800 m_completeResolver.clear();
785 m_showResolver.clear(); 801 m_showResolver.clear();
786 m_abortResolver.clear(); 802 m_abortResolver.clear();
787 if (m_clientBinding.is_bound()) 803 if (m_clientBinding.is_bound())
788 m_clientBinding.Close(); 804 m_clientBinding.Close();
789 m_paymentProvider.reset(); 805 m_paymentProvider.reset();
790 } 806 }
791 807
792 } // namespace blink 808 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698