1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5package org.chromium.chrome.browser.autofill;
6
7import org.chromium.base.CalledByNative;
8import org.chromium.base.JNINamespace;
9
10/**
11 * Java-side result of a non-cancelled AutofillDialog invocation, and
12 * JNI glue for C++ AutofillDialogResult used by AutofillDialogControllerAndroid.
13 */
14@JNINamespace("autofill")
15public class AutofillDialogResult {
16    /**
17     * Information about the credit card in the dialog result.
18     */
19    public static class ResultCard {
20        private final int mExpirationMonth;
21        private final int mExpirationYear;
22        private final String mPan;
23        private final String mCvn;
24
25        /**
26         * Creates a ResultCard.
27         * @param expirationMonth Expiration month
28         * @param expirationYear Expiration year
29         * @param pan Credit card number
30         * @param cvn Credit card verification number
31         */
32        public ResultCard(int expirationMonth, int expirationYear, String pan, String cvn) {
33            mExpirationMonth = expirationMonth;
34            mExpirationYear = expirationYear;
35            mPan = pan;
36            mCvn = cvn;
37        }
38
39        /**
40         * @return Expiration month
41         */
42        @CalledByNative("ResultCard")
43        public int getExpirationMonth() {
44            return mExpirationMonth;
45        }
46
47        /**
48         * @return Expiration year
49         */
50        @CalledByNative("ResultCard")
51        public int getExpirationYear() {
52            return mExpirationYear;
53        }
54
55        /**
56         * @return Credit card number
57         */
58        @CalledByNative("ResultCard")
59        public String getPan() {
60            return mPan;
61        }
62
63        /**
64         * @return Credit card verification number
65         */
66        @CalledByNative("ResultCard")
67        public String getCvn() {
68            return mCvn;
69        }
70    }
71
72    /**
73     * Information about an address in the dialog result.
74     */
75    public static class ResultAddress {
76        private final String mName;
77        private final String mPhoneNumber;
78        private final String mStreetAddress;
79        private final String mLocality;
80        private final String mDependentLocality;
81        private final String mAdministrativeArea;
82        private final String mPostalCode;
83        private final String mSortingCode;
84        private final String mCountryCode;
85        private final String mLanguageCode;
86
87        /**
88         * Creates a ResultAddress.
89         * Any parameter can be empty or null.
90         * @param name Full name
91         * @param phoneNumber Phone number
92         * @param streetAddress Street address
93         * @param locality Locality / City
94         * @param dependentLocality Inner-city district / Suburb / Dependent locality
95         * @param administrativeArea Region / State
96         * @param postalCode Postal code
97         * @param sortingCode Sorting code
98         * @param countryCode Country code
99         * @param languageCode Language code
100         */
101        public ResultAddress(
102                String name, String phoneNumber,
103                String streetAddress,
104                String locality, String dependentLocality,
105                String administrativeArea, String postalCode, String sortingCode,
106                String countryCode, String languageCode) {
107            mName = name;
108            mPhoneNumber = phoneNumber;
109            mStreetAddress = streetAddress;
110            mLocality = locality;
111            mDependentLocality = dependentLocality;
112            mAdministrativeArea = administrativeArea;
113            mPostalCode = postalCode;
114            mSortingCode = sortingCode;
115            mCountryCode = countryCode;
116            mLanguageCode = languageCode;
117        }
118
119        /**
120         * @return Full name
121         */
122        @CalledByNative("ResultAddress")
123        public String getName() {
124            return mName;
125        }
126
127        /**
128         * @return Phone number
129         */
130        @CalledByNative("ResultAddress")
131        public String getPhoneNumber() {
132            return mPhoneNumber;
133        }
134
135        /**
136         * @return Street address
137         */
138        @CalledByNative("ResultAddress")
139        public String getStreetAddress() {
140            return mStreetAddress;
141        }
142
143        /**
144         * @return Locality (city)
145         */
146        @CalledByNative("ResultAddress")
147        public String getLocality() {
148            return mLocality;
149        }
150
151        /**
152         * @return Dependent locality (inner-city district / suburb)
153         */
154        @CalledByNative("ResultAddress")
155        public String getDependentLocality() {
156            return mDependentLocality;
157        }
158
159        /**
160         * @return Administrative area (region / state)
161         */
162        @CalledByNative("ResultAddress")
163        public String getAdministrativeArea() {
164            return mAdministrativeArea;
165        }
166
167        /**
168         * @return Postal code
169         */
170        @CalledByNative("ResultAddress")
171        public String getPostalCode() {
172            return mPostalCode;
173        }
174
175        /**
176         * @return Sorting code
177         */
178        @CalledByNative("ResultAddress")
179        public String getSortingCode() {
180            return mSortingCode;
181        }
182
183        /**
184         * @return Country code
185         */
186        @CalledByNative("ResultAddress")
187        public String getCountryCode() {
188            return mCountryCode;
189        }
190
191        /**
192         * @return Language code
193         */
194        @CalledByNative("ResultAddress")
195        public String getLanguageCode() {
196            return mLanguageCode;
197        }
198    }
199
200    /**
201     * A response from the dialog.
202     */
203    public static class ResultWallet {
204        private final String mEmail;
205        private final String mGoogleTransactionId;
206        private final ResultCard mCard;
207        private final ResultAddress mBillingAddress;
208        private final ResultAddress mShippingAddress;
209
210        /**
211         * Creates a ResultWallet.
212         * Any fields could be empty or null.
213         * @param email Email address
214         * @param googleTransactionId Google transaction ID if any
215         * @param card Information about the credit card
216         * @param billingAddress Information about the billing address
217         * @param shippingAddress Information about the shipping address
218         */
219        public ResultWallet(
220                String email, String googleTransactionId,
221                ResultCard card, ResultAddress billingAddress, ResultAddress shippingAddress) {
222            mEmail = email;
223            mGoogleTransactionId = googleTransactionId;
224            mCard = card;
225            mBillingAddress = billingAddress;
226            mShippingAddress = shippingAddress;
227        }
228
229        /**
230         * @return Email address
231         */
232        @CalledByNative("ResultWallet")
233        public String getEmail() {
234            return mEmail;
235        }
236
237        /**
238         * @return Google transaction ID if any
239         */
240        @CalledByNative("ResultWallet")
241        public String getGoogleTransactionId() {
242            return mGoogleTransactionId;
243        }
244
245        /**
246         * @return Credit card information, or null
247         */
248        @CalledByNative("ResultWallet")
249        public ResultCard getCard() {
250            return mCard;
251        }
252
253        /**
254         * @return Billing address information, or null
255         */
256        @CalledByNative("ResultWallet")
257        public ResultAddress getBillingAddress() {
258            return mBillingAddress;
259        }
260
261        /**
262         * @return Shipping address information, or null
263         */
264        @CalledByNative("ResultWallet")
265        public ResultAddress getShippingAddress() {
266            return mShippingAddress;
267        }
268    }
269}
270