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 #include "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" | 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" |
10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); | 108 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); |
109 } | 109 } |
110 | 110 |
111 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 111 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
112 password_manager::StubPasswordManagerClient client; | 112 password_manager::StubPasswordManagerClient client; |
113 password_manager::StubPasswordManagerDriver driver; | 113 password_manager::StubPasswordManagerDriver driver; |
114 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 114 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
115 new password_manager::PasswordFormManager( | 115 new password_manager::PasswordFormManager( |
116 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | 116 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); |
117 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 117 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
118 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE, | 118 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
119 controller()->state()); | 119 controller()->state()); |
120 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); | 120 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); |
121 | 121 |
122 // TODO(mkwst): This should be the value of test_local_form().origin, but | 122 // TODO(mkwst): This should be the value of test_local_form().origin, but |
123 // it's being masked by the stub implementation of | 123 // it's being masked by the stub implementation of |
124 // ManagePasswordsUIControllerMock::PendingCredentials. | 124 // ManagePasswordsUIControllerMock::PendingCredentials. |
125 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 125 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); |
126 | 126 |
127 ManagePasswordsIconMock mock; | 127 ManagePasswordsIconMock mock; |
128 controller()->UpdateIconAndBubbleState(&mock); | 128 controller()->UpdateIconAndBubbleState(&mock); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { | 316 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
317 password_manager::StubPasswordManagerClient client; | 317 password_manager::StubPasswordManagerClient client; |
318 password_manager::StubPasswordManagerDriver driver; | 318 password_manager::StubPasswordManagerDriver driver; |
319 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 319 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
320 new password_manager::PasswordFormManager( | 320 new password_manager::PasswordFormManager( |
321 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | 321 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); |
322 | 322 |
323 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); | 323 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); |
324 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state()); | 324 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state()); |
325 | 325 |
| 326 controller()->OnBubbleHidden(); |
326 ManagePasswordsIconMock mock; | 327 ManagePasswordsIconMock mock; |
327 controller()->UpdateIconAndBubbleState(&mock); | 328 controller()->UpdateIconAndBubbleState(&mock); |
328 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); | 329 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); |
329 } | 330 } |
330 | 331 |
331 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { | 332 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { |
332 ScopedVector<autofill::PasswordForm> local_credentials; | 333 ScopedVector<autofill::PasswordForm> local_credentials; |
333 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 334 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
334 ScopedVector<autofill::PasswordForm> federated_credentials; | 335 ScopedVector<autofill::PasswordForm> federated_credentials; |
335 GURL origin("http://example.com"); | 336 GURL origin("http://example.com"); |
336 EXPECT_TRUE(controller()->OnChooseCredentials( | 337 EXPECT_TRUE(controller()->OnChooseCredentials( |
337 local_credentials.Pass(), federated_credentials.Pass(), origin, | 338 local_credentials.Pass(), federated_credentials.Pass(), origin, |
338 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 339 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
339 base::Unretained(this)))); | 340 base::Unretained(this)))); |
340 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, | 341 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
341 controller()->state()); | 342 controller()->state()); |
342 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 343 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
343 EXPECT_EQ(origin, controller()->origin()); | 344 EXPECT_EQ(origin, controller()->origin()); |
344 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); | 345 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); |
345 | 346 |
346 ManagePasswordsIconMock mock; | 347 ManagePasswordsIconMock mock; |
347 controller()->UpdateIconAndBubbleState(&mock); | 348 controller()->UpdateIconAndBubbleState(&mock); |
348 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); | 349 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
349 | 350 |
350 controller()->ManagePasswordsUIController::ChooseCredential( | 351 controller()->ManagePasswordsUIController::ChooseCredential( |
351 test_local_form(), | 352 test_local_form(), |
352 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); | 353 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); |
| 354 controller()->OnBubbleHidden(); |
353 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 355 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
354 ASSERT_TRUE(credential_info()); | 356 ASSERT_TRUE(credential_info()); |
355 EXPECT_EQ(test_local_form().username_value, credential_info()->id); | 357 EXPECT_EQ(test_local_form().username_value, credential_info()->id); |
356 EXPECT_EQ(test_local_form().password_value, credential_info()->password); | 358 EXPECT_EQ(test_local_form().password_value, credential_info()->password); |
357 EXPECT_TRUE(credential_info()->federation.is_empty()); | 359 EXPECT_TRUE(credential_info()->federation.is_empty()); |
358 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL, | 360 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL, |
359 credential_info()->type); | 361 credential_info()->type); |
360 } | 362 } |
361 | 363 |
362 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { | 364 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { |
363 ScopedVector<autofill::PasswordForm> local_credentials; | 365 ScopedVector<autofill::PasswordForm> local_credentials; |
364 local_credentials.push_back( | 366 local_credentials.push_back( |
365 new autofill::PasswordForm(test_federated_form())); | 367 new autofill::PasswordForm(test_federated_form())); |
366 ScopedVector<autofill::PasswordForm> federated_credentials; | 368 ScopedVector<autofill::PasswordForm> federated_credentials; |
367 GURL origin("http://example.com"); | 369 GURL origin("http://example.com"); |
368 EXPECT_TRUE(controller()->OnChooseCredentials( | 370 EXPECT_TRUE(controller()->OnChooseCredentials( |
369 local_credentials.Pass(), federated_credentials.Pass(), origin, | 371 local_credentials.Pass(), federated_credentials.Pass(), origin, |
370 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 372 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
371 base::Unretained(this)))); | 373 base::Unretained(this)))); |
372 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, | 374 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
373 controller()->state()); | 375 controller()->state()); |
374 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 376 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
375 EXPECT_EQ(origin, controller()->origin()); | 377 EXPECT_EQ(origin, controller()->origin()); |
376 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); | 378 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); |
377 | 379 |
378 ManagePasswordsIconMock mock; | 380 ManagePasswordsIconMock mock; |
379 controller()->UpdateIconAndBubbleState(&mock); | 381 controller()->UpdateIconAndBubbleState(&mock); |
380 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); | 382 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
381 | 383 |
382 controller()->ManagePasswordsUIController::ChooseCredential( | 384 controller()->ManagePasswordsUIController::ChooseCredential( |
383 test_federated_form(), | 385 test_federated_form(), |
384 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); | 386 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); |
| 387 controller()->OnBubbleHidden(); |
385 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 388 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
386 ASSERT_TRUE(credential_info()); | 389 ASSERT_TRUE(credential_info()); |
387 EXPECT_EQ(test_federated_form().username_value, credential_info()->id); | 390 EXPECT_EQ(test_federated_form().username_value, credential_info()->id); |
388 EXPECT_EQ(test_federated_form().federation_url, | 391 EXPECT_EQ(test_federated_form().federation_url, |
389 credential_info()->federation); | 392 credential_info()->federation); |
390 EXPECT_TRUE(credential_info()->password.empty()); | 393 EXPECT_TRUE(credential_info()->password.empty()); |
391 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 394 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
392 credential_info()->type); | 395 credential_info()->type); |
393 } | 396 } |
394 | 397 |
395 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { | 398 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { |
396 ScopedVector<autofill::PasswordForm> local_credentials; | 399 ScopedVector<autofill::PasswordForm> local_credentials; |
397 ScopedVector<autofill::PasswordForm> federated_credentials; | 400 ScopedVector<autofill::PasswordForm> federated_credentials; |
398 federated_credentials.push_back( | 401 federated_credentials.push_back( |
399 new autofill::PasswordForm(test_local_form())); | 402 new autofill::PasswordForm(test_local_form())); |
400 GURL origin("http://example.com"); | 403 GURL origin("http://example.com"); |
401 EXPECT_TRUE(controller()->OnChooseCredentials( | 404 EXPECT_TRUE(controller()->OnChooseCredentials( |
402 local_credentials.Pass(), federated_credentials.Pass(), origin, | 405 local_credentials.Pass(), federated_credentials.Pass(), origin, |
403 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 406 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
404 base::Unretained(this)))); | 407 base::Unretained(this)))); |
405 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, | 408 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
406 controller()->state()); | 409 controller()->state()); |
407 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 410 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
408 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); | 411 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); |
409 EXPECT_EQ(origin, controller()->origin()); | 412 EXPECT_EQ(origin, controller()->origin()); |
410 | 413 |
411 ManagePasswordsIconMock mock; | 414 ManagePasswordsIconMock mock; |
412 controller()->UpdateIconAndBubbleState(&mock); | 415 controller()->UpdateIconAndBubbleState(&mock); |
413 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); | 416 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
414 | 417 |
415 controller()->ManagePasswordsUIController::ChooseCredential( | 418 controller()->ManagePasswordsUIController::ChooseCredential( |
416 test_local_form(), | 419 test_local_form(), |
417 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); | 420 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); |
| 421 controller()->OnBubbleHidden(); |
418 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 422 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
419 ASSERT_TRUE(credential_info()); | 423 ASSERT_TRUE(credential_info()); |
420 EXPECT_EQ(test_local_form().username_value, credential_info()->id); | 424 EXPECT_EQ(test_local_form().username_value, credential_info()->id); |
421 EXPECT_TRUE(credential_info()->password.empty()); | 425 EXPECT_TRUE(credential_info()->password.empty()); |
422 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 426 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
423 credential_info()->type); | 427 credential_info()->type); |
424 } | 428 } |
425 | 429 |
426 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { | 430 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { |
427 ScopedVector<autofill::PasswordForm> local_credentials; | 431 ScopedVector<autofill::PasswordForm> local_credentials; |
428 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 432 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
429 ScopedVector<autofill::PasswordForm> federated_credentials; | 433 ScopedVector<autofill::PasswordForm> federated_credentials; |
430 GURL origin("http://example.com"); | 434 GURL origin("http://example.com"); |
431 EXPECT_TRUE(controller()->OnChooseCredentials( | 435 EXPECT_TRUE(controller()->OnChooseCredentials( |
432 local_credentials.Pass(), federated_credentials.Pass(), origin, | 436 local_credentials.Pass(), federated_credentials.Pass(), origin, |
433 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 437 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
434 base::Unretained(this)))); | 438 base::Unretained(this)))); |
435 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, | 439 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
436 controller()->state()); | 440 controller()->state()); |
437 EXPECT_EQ(origin, controller()->origin()); | 441 EXPECT_EQ(origin, controller()->origin()); |
438 controller()->ManagePasswordsUIController::ChooseCredential( | 442 controller()->ManagePasswordsUIController::ChooseCredential( |
439 test_local_form(), | 443 test_local_form(), |
440 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); | 444 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); |
| 445 controller()->OnBubbleHidden(); |
441 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 446 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
442 ASSERT_TRUE(credential_info()); | 447 ASSERT_TRUE(credential_info()); |
443 EXPECT_TRUE(credential_info()->federation.is_empty()); | 448 EXPECT_TRUE(credential_info()->federation.is_empty()); |
444 EXPECT_TRUE(credential_info()->password.empty()); | 449 EXPECT_TRUE(credential_info()->password.empty()); |
445 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, | 450 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, |
446 credential_info()->type); | 451 credential_info()->type); |
447 } | 452 } |
448 | 453 |
449 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 454 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
450 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 455 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
451 autofill::PasswordFormMap map; | 456 autofill::PasswordFormMap map; |
452 autofill::PasswordForm psl_matched_test_form = test_local_form(); | 457 autofill::PasswordForm psl_matched_test_form = test_local_form(); |
453 psl_matched_test_form.original_signon_realm = "http://pslmatched.example.com"; | 458 psl_matched_test_form.original_signon_realm = "http://pslmatched.example.com"; |
454 map[kTestUsername] = &psl_matched_test_form; | 459 map[kTestUsername] = &psl_matched_test_form; |
455 controller()->OnPasswordAutofilled(map); | 460 controller()->OnPasswordAutofilled(map); |
456 | 461 |
457 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 462 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
458 } | 463 } |
OLD | NEW |