OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #import "ios/chrome/browser/autofill/form_suggestion_controller.h" | 5 #import "ios/chrome/browser/autofill/form_suggestion_controller.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/ios/ios_util.h" | 10 #include "base/ios/ios_util.h" |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 [[mock_js_suggestion_manager_ expect] inject]; | 278 [[mock_js_suggestion_manager_ expect] inject]; |
279 [suggestion_controller_ webStateDidLoadPage:web_state()]; | 279 [suggestion_controller_ webStateDidLoadPage:web_state()]; |
280 EXPECT_OCMOCK_VERIFY(mock_js_suggestion_manager_); | 280 EXPECT_OCMOCK_VERIFY(mock_js_suggestion_manager_); |
281 | 281 |
282 // Trigger form activity, which should set up the suggestions view. | 282 // Trigger form activity, which should set up the suggestions view. |
283 [accessory_controller_ webState:web_state() | 283 [accessory_controller_ webState:web_state() |
284 didRegisterFormActivityWithFormNamed:"form" | 284 didRegisterFormActivityWithFormNamed:"form" |
285 fieldName:"field" | 285 fieldName:"field" |
286 type:"type" | 286 type:"type" |
287 value:"value" | 287 value:"value" |
288 keyCode:web::WebStateObserver:: | |
289 kInvalidFormKeyCode | |
290 inputMissing:false]; | 288 inputMissing:false]; |
291 EXPECT_TRUE(GetSuggestionView(input_accessory_view_)); | 289 EXPECT_TRUE(GetSuggestionView(input_accessory_view_)); |
292 | 290 |
293 // Trigger another page load. The suggestions accessory view should | 291 // Trigger another page load. The suggestions accessory view should |
294 // not be present. | 292 // not be present. |
295 [accessory_controller_ webStateDidLoadPage:web_state()]; | 293 [accessory_controller_ webStateDidLoadPage:web_state()]; |
296 EXPECT_FALSE(GetSuggestionView(input_accessory_view_)); | 294 EXPECT_FALSE(GetSuggestionView(input_accessory_view_)); |
297 } | 295 } |
298 | 296 |
299 // Tests that "blur" events are ignored. | 297 // Tests that "blur" events are ignored. |
300 TEST_F(FormSuggestionControllerTest, FormActivityBlurShouldBeIgnored) { | 298 TEST_F(FormSuggestionControllerTest, FormActivityBlurShouldBeIgnored) { |
301 [accessory_controller_ webState:web_state() | 299 [accessory_controller_ webState:web_state() |
302 didRegisterFormActivityWithFormNamed:"form" | 300 didRegisterFormActivityWithFormNamed:"form" |
303 fieldName:"field" | 301 fieldName:"field" |
304 type:"blur" // blur! | 302 type:"blur" // blur! |
305 value:"value" | 303 value:"value" |
306 keyCode:web::WebStateObserver:: | |
307 kInvalidFormKeyCode | |
308 inputMissing:false]; | 304 inputMissing:false]; |
309 EXPECT_FALSE(GetSuggestionView(input_accessory_view_)); | 305 EXPECT_FALSE(GetSuggestionView(input_accessory_view_)); |
310 } | 306 } |
311 | 307 |
312 // Tests that no suggestions are displayed when no providers are registered. | 308 // Tests that no suggestions are displayed when no providers are registered. |
313 TEST_F(FormSuggestionControllerTest, | 309 TEST_F(FormSuggestionControllerTest, |
314 FormActivityShouldRetrieveSuggestions_NoProvidersAvailable) { | 310 FormActivityShouldRetrieveSuggestions_NoProvidersAvailable) { |
315 // Set up the controller without any providers. | 311 // Set up the controller without any providers. |
316 SetUpController(@[]); | 312 SetUpController(@[]); |
317 SetCurrentUrl("http://foo.com"); | 313 SetCurrentUrl("http://foo.com"); |
318 [accessory_controller_ webState:web_state() | 314 [accessory_controller_ webState:web_state() |
319 didRegisterFormActivityWithFormNamed:"form" | 315 didRegisterFormActivityWithFormNamed:"form" |
320 fieldName:"field" | 316 fieldName:"field" |
321 type:"type" | 317 type:"type" |
322 value:"value" | 318 value:"value" |
323 keyCode:web::WebStateObserver:: | |
324 kInvalidFormKeyCode | |
325 inputMissing:false]; | 319 inputMissing:false]; |
326 | 320 |
327 // The suggestions accessory view should be empty. | 321 // The suggestions accessory view should be empty. |
328 FormSuggestionView* suggestionView = GetSuggestionView(input_accessory_view_); | 322 FormSuggestionView* suggestionView = GetSuggestionView(input_accessory_view_); |
329 EXPECT_TRUE(suggestionView); | 323 EXPECT_TRUE(suggestionView); |
330 EXPECT_EQ(0U, [suggestionView.suggestions count]); | 324 EXPECT_EQ(0U, [suggestionView.suggestions count]); |
331 } | 325 } |
332 | 326 |
333 // Tests that, when no providers have suggestions to offer for a form/field, | 327 // Tests that, when no providers have suggestions to offer for a form/field, |
334 // they aren't asked and no suggestions are displayed. | 328 // they aren't asked and no suggestions are displayed. |
335 TEST_F(FormSuggestionControllerTest, | 329 TEST_F(FormSuggestionControllerTest, |
336 FormActivityShouldRetrieveSuggestions_NoSuggestionsAvailable) { | 330 FormActivityShouldRetrieveSuggestions_NoSuggestionsAvailable) { |
337 // Set up the controller with some providers, but none of them will | 331 // Set up the controller with some providers, but none of them will |
338 // have suggestions available. | 332 // have suggestions available. |
339 TestSuggestionProvider* provider1 = | 333 TestSuggestionProvider* provider1 = |
340 [[TestSuggestionProvider alloc] initWithSuggestions:@[]]; | 334 [[TestSuggestionProvider alloc] initWithSuggestions:@[]]; |
341 TestSuggestionProvider* provider2 = | 335 TestSuggestionProvider* provider2 = |
342 [[TestSuggestionProvider alloc] initWithSuggestions:@[]]; | 336 [[TestSuggestionProvider alloc] initWithSuggestions:@[]]; |
343 SetUpController(@[ provider1, provider2 ]); | 337 SetUpController(@[ provider1, provider2 ]); |
344 SetCurrentUrl("http://foo.com"); | 338 SetCurrentUrl("http://foo.com"); |
345 | 339 |
346 [accessory_controller_ webState:web_state() | 340 [accessory_controller_ webState:web_state() |
347 didRegisterFormActivityWithFormNamed:"form" | 341 didRegisterFormActivityWithFormNamed:"form" |
348 fieldName:"field" | 342 fieldName:"field" |
349 type:"type" | 343 type:"type" |
350 value:"value" | 344 value:"value" |
351 keyCode:web::WebStateObserver:: | |
352 kInvalidFormKeyCode | |
353 inputMissing:false]; | 345 inputMissing:false]; |
354 | 346 |
355 // The providers should each be asked if they have suggestions for the | 347 // The providers should each be asked if they have suggestions for the |
356 // form in question. | 348 // form in question. |
357 EXPECT_TRUE([provider1 askedIfSuggestionsAvailable]); | 349 EXPECT_TRUE([provider1 askedIfSuggestionsAvailable]); |
358 EXPECT_TRUE([provider2 askedIfSuggestionsAvailable]); | 350 EXPECT_TRUE([provider2 askedIfSuggestionsAvailable]); |
359 | 351 |
360 // Since none of the providers had suggestions available, none of them | 352 // Since none of the providers had suggestions available, none of them |
361 // should have been asked for suggestions. | 353 // should have been asked for suggestions. |
362 EXPECT_FALSE([provider1 askedForSuggestions]); | 354 EXPECT_FALSE([provider1 askedForSuggestions]); |
(...skipping 27 matching lines...) Expand all Loading... |
390 TestSuggestionProvider* provider2 = | 382 TestSuggestionProvider* provider2 = |
391 [[TestSuggestionProvider alloc] initWithSuggestions:@[]]; | 383 [[TestSuggestionProvider alloc] initWithSuggestions:@[]]; |
392 SetUpController(@[ provider1, provider2 ]); | 384 SetUpController(@[ provider1, provider2 ]); |
393 SetCurrentUrl("http://foo.com"); | 385 SetCurrentUrl("http://foo.com"); |
394 | 386 |
395 [accessory_controller_ webState:web_state() | 387 [accessory_controller_ webState:web_state() |
396 didRegisterFormActivityWithFormNamed:"form" | 388 didRegisterFormActivityWithFormNamed:"form" |
397 fieldName:"field" | 389 fieldName:"field" |
398 type:"type" | 390 type:"type" |
399 value:"value" | 391 value:"value" |
400 keyCode:web::WebStateObserver:: | |
401 kInvalidFormKeyCode | |
402 inputMissing:false]; | 392 inputMissing:false]; |
403 | 393 |
404 // Since the first provider has suggestions available, it and only it | 394 // Since the first provider has suggestions available, it and only it |
405 // should have been asked. | 395 // should have been asked. |
406 EXPECT_TRUE([provider1 askedIfSuggestionsAvailable]); | 396 EXPECT_TRUE([provider1 askedIfSuggestionsAvailable]); |
407 EXPECT_FALSE([provider2 askedIfSuggestionsAvailable]); | 397 EXPECT_FALSE([provider2 askedIfSuggestionsAvailable]); |
408 | 398 |
409 // Since the first provider said it had suggestions, it and only it | 399 // Since the first provider said it had suggestions, it and only it |
410 // should have been asked to provide them. | 400 // should have been asked to provide them. |
411 EXPECT_TRUE([provider1 askedForSuggestions]); | 401 EXPECT_TRUE([provider1 askedForSuggestions]); |
(...skipping 17 matching lines...) Expand all Loading... |
429 ]; | 419 ]; |
430 TestSuggestionProvider* provider = | 420 TestSuggestionProvider* provider = |
431 [[TestSuggestionProvider alloc] initWithSuggestions:suggestions]; | 421 [[TestSuggestionProvider alloc] initWithSuggestions:suggestions]; |
432 SetUpController(@[ provider ]); | 422 SetUpController(@[ provider ]); |
433 SetCurrentUrl("http://foo.com"); | 423 SetCurrentUrl("http://foo.com"); |
434 [accessory_controller_ webState:web_state() | 424 [accessory_controller_ webState:web_state() |
435 didRegisterFormActivityWithFormNamed:"form" | 425 didRegisterFormActivityWithFormNamed:"form" |
436 fieldName:"field" | 426 fieldName:"field" |
437 type:"type" | 427 type:"type" |
438 value:"value" | 428 value:"value" |
439 keyCode:web::WebStateObserver:: | |
440 kInvalidFormKeyCode | |
441 inputMissing:false]; | 429 inputMissing:false]; |
442 | 430 |
443 // Selecting a suggestion should notify the delegate. | 431 // Selecting a suggestion should notify the delegate. |
444 [suggestion_controller_ didSelectSuggestion:suggestions[0]]; | 432 [suggestion_controller_ didSelectSuggestion:suggestions[0]]; |
445 EXPECT_TRUE([provider selected]); | 433 EXPECT_TRUE([provider selected]); |
446 EXPECT_NSEQ(@"form", [provider formName]); | 434 EXPECT_NSEQ(@"form", [provider formName]); |
447 EXPECT_NSEQ(@"field", [provider fieldName]); | 435 EXPECT_NSEQ(@"field", [provider fieldName]); |
448 EXPECT_NSEQ(suggestions[0], [provider suggestion]); | 436 EXPECT_NSEQ(suggestions[0], [provider suggestion]); |
449 } | 437 } |
450 | 438 |
451 } // namespace | 439 } // namespace |
OLD | NEW |