| 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 |