OLD | NEW |
---|---|
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 /** | 5 /** |
6 * Used to create fake data for both passwords and autofill. | 6 * Used to create fake data for both passwords and autofill. |
7 * These sections are related, so it made sense to share this. | 7 * These sections are related, so it made sense to share this. |
8 */ | 8 */ |
9 | |
9 function FakeDataMaker() {} | 10 function FakeDataMaker() {} |
10 /** | 11 /** |
11 * Creates a single item for the list of passwords. | 12 * Creates a single item for the list of passwords. |
12 * @param {string|undefined} url | 13 * @param {string|undefined} url |
13 * @param {string|undefined} username | 14 * @param {string|undefined} username |
14 * @param {number|undefined} passwordLength | 15 * @param {number|undefined} passwordLength |
15 * @return {chrome.passwordsPrivate.PasswordUiEntry} | 16 * @return {chrome.passwordsPrivate.PasswordUiEntry} |
16 */ | 17 */ |
17 FakeDataMaker.passwordEntry = function(url, username, passwordLength) { | 18 FakeDataMaker.passwordEntry = function(url, username, passwordLength) { |
18 // Generate fake data if param is undefined. | 19 // Generate fake data if param is undefined. |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
120 * @param {string} pattern The pattern that should be used as an input. | 121 * @param {string} pattern The pattern that should be used as an input. |
121 * @param {number} base The number base. ie: 16 for hex or 10 for decimal. | 122 * @param {number} base The number base. ie: 16 for hex or 10 for decimal. |
122 * @return {string} | 123 * @return {string} |
123 * @private | 124 * @private |
124 */ | 125 */ |
125 FakeDataMaker.patternMaker_ = function(pattern, base) { | 126 FakeDataMaker.patternMaker_ = function(pattern, base) { |
126 return pattern.replace(/x/g, function() { | 127 return pattern.replace(/x/g, function() { |
127 return Math.floor(Math.random() * base).toString(base); | 128 return Math.floor(Math.random() * base).toString(base); |
128 }); | 129 }); |
129 }; | 130 }; |
131 | |
132 /** @constructor */ | |
133 function PasswordManagerExpectations() {} | |
134 | |
135 PasswordManagerExpectations.prototype = { | |
136 requested: { | |
dpapad
2017/02/14 19:00:10
Why are those defined on the prototype? Can we mov
Dan Beam
2017/02/14 19:33:23
fwiw, this is saner and safer
hcarmona
2017/02/14 20:34:30
Done. Had to update |PasswordsAndFormsBrowserTest|
| |
137 passwords: 0, | |
138 exceptions: 0, | |
139 plaintextPassword: 0, | |
140 }, | |
141 | |
142 removed: { | |
143 passwords: 0, | |
144 exceptions: 0, | |
145 }, | |
146 | |
147 listening: { | |
148 passwords: 0, | |
149 exceptions: 0, | |
150 }, | |
151 }; | |
152 | |
153 /** | |
154 * Test implementation | |
155 * @implements {PasswordManager} | |
156 * @constructor | |
157 */ | |
158 function TestPasswordManager() { | |
159 this.actual_ = new PasswordManagerExpectations(); | |
160 } | |
161 | |
162 TestPasswordManager.prototype = { | |
163 /** @override */ | |
164 addSavedPasswordListChangedListener: function(listener) { | |
165 this.actual_.listening.passwords++; | |
166 this.lastCallback.addSavedPasswordListChangedListener = listener; | |
167 }, | |
168 | |
169 /** @override */ | |
170 removeSavedPasswordListChangedListener: function(listener) { | |
171 this.actual_.listening.passwords--; | |
172 }, | |
173 | |
174 /** @override */ | |
175 getSavedPasswordList: function(callback) { | |
176 this.actual_.requested.passwords++; | |
177 callback(this.data.passwords); | |
178 }, | |
179 | |
180 /** @override */ | |
181 removeSavedPassword: function(loginPair) { | |
182 this.actual_.removed.passwords++; | |
183 | |
184 if (this.onRemoveSavedPassword) | |
185 this.onRemoveSavedPassword(loginPair); | |
186 }, | |
187 | |
188 /** @override */ | |
189 addExceptionListChangedListener: function(listener) { | |
190 this.actual_.listening.exceptions++; | |
191 this.lastCallback.addExceptionListChangedListener = listener; | |
192 }, | |
193 | |
194 /** @override */ | |
195 removeExceptionListChangedListener: function(listener) { | |
196 this.actual_.listening.exceptions--; | |
197 }, | |
198 | |
199 /** @override */ | |
200 getExceptionList: function(callback) { | |
201 this.actual_.requested.exceptions++; | |
202 callback(this.data.exceptions); | |
203 }, | |
204 | |
205 /** @override */ | |
206 removeException: function(exception) { | |
207 this.actual_.removed.exceptions++; | |
208 | |
209 if (this.onRemoveException) | |
210 this.onRemoveException(exception); | |
211 }, | |
212 | |
213 /** @override */ | |
214 getPlaintextPassword: function(loginPair, callback) { | |
215 this.actual_.requested.plaintextPassword++; | |
216 this.lastCallback.getPlaintextPassword = callback; | |
217 }, | |
218 | |
219 /** | |
220 * Verifies expectations. | |
221 * @param {!PasswordManagerExpectations} expected | |
222 */ | |
223 assertExpectations: function(expected) { | |
224 var actual = this.actual_; | |
225 | |
226 assertEquals(expected.requested.passwords, actual.requested.passwords); | |
227 assertEquals(expected.requested.exceptions, actual.requested.exceptions); | |
228 assertEquals(expected.requested.plaintextPassword, | |
229 actual.requested.plaintextPassword); | |
230 | |
231 assertEquals(expected.removed.passwords, actual.removed.passwords); | |
232 assertEquals(expected.removed.exceptions, actual.removed.exceptions); | |
233 | |
234 assertEquals(expected.listening.passwords, actual.listening.passwords); | |
235 assertEquals(expected.listening.exceptions, actual.listening.exceptions); | |
236 }, | |
237 | |
238 // Set these to have non-empty data. | |
239 data: { | |
240 passwords: [], | |
241 exceptions: [], | |
242 }, | |
243 | |
244 // Holds the last callbacks so they can be called when needed/ | |
245 lastCallback: { | |
dpapad
2017/02/14 19:00:10
Can |data| and |lastCallback| be declared in the c
hcarmona
2017/02/14 20:34:30
Done.
| |
246 addSavedPasswordListChangedListener: null, | |
247 addExceptionListChangedListener: null, | |
248 getPlaintextPassword: null, | |
249 }, | |
250 }; | |
251 | |
252 function AutofillManagerExpectations() {} | |
253 AutofillManagerExpectations.prototype = { | |
254 requested: { | |
dpapad
2017/02/14 19:00:10
Same here.
hcarmona
2017/02/14 20:34:30
Done.
| |
255 addresses: 0, | |
256 creditCards: 0, | |
257 }, | |
258 | |
259 listening: { | |
260 addresses: 0, | |
261 creditCards: 0, | |
262 }, | |
263 }; | |
264 | |
265 /** | |
266 * Test implementation | |
267 * @implements {AutofillManager} | |
268 * @constructor | |
269 */ | |
270 function TestAutofillManager() { | |
271 this.actual_ = new AutofillManagerExpectations(); | |
272 } | |
273 | |
274 TestAutofillManager.prototype = { | |
275 /** @override */ | |
276 addAddressListChangedListener: function(listener) { | |
277 this.actual_.listening.addresses++; | |
278 this.lastCallback.addAddressListChangedListener = listener; | |
279 }, | |
280 | |
281 /** @override */ | |
282 removeAddressListChangedListener: function(listener) { | |
283 this.actual_.listening.addresses--; | |
284 }, | |
285 | |
286 /** @override */ | |
287 getAddressList: function(callback) { | |
288 this.actual_.requested.addresses++; | |
289 callback(this.data.addresses); | |
290 }, | |
291 | |
292 /** @override */ | |
293 addCreditCardListChangedListener: function(listener) { | |
294 this.actual_.listening.creditCards++; | |
295 this.lastCallback.addCreditCardListChangedListener = listener; | |
296 }, | |
297 | |
298 /** @override */ | |
299 removeCreditCardListChangedListener: function(listener) { | |
300 this.actual_.listening.creditCards--; | |
301 }, | |
302 | |
303 /** @override */ | |
304 getCreditCardList: function(callback) { | |
305 this.actual_.requested.creditCards++; | |
306 callback(this.data.creditCards); | |
307 }, | |
308 | |
309 /** | |
310 * Verifies expectations. | |
311 * @param {!AutofillManagerExpectations} expected | |
312 */ | |
313 assertExpectations: function(expected) { | |
314 var actual = this.actual_; | |
315 | |
316 assertEquals(expected.requested.addresses, actual.requested.addresses); | |
317 assertEquals(expected.requested.creditCards, actual.requested.creditCards); | |
318 | |
319 assertEquals(expected.listening.addresses, actual.listening.addresses); | |
320 assertEquals(expected.listening.creditCards, actual.listening.creditCards); | |
321 }, | |
322 | |
323 // Set these to have non-empty data. | |
324 data: { | |
325 addresses: [], | |
326 creditCards: [], | |
327 }, | |
328 | |
329 // Holds the last callbacks so they can be called when needed. | |
330 lastCallback: { | |
331 addAddressListChangedListener: null, | |
332 addCreditCardListChangedListener: null, | |
333 }, | |
334 }; | |
OLD | NEW |