| 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_model.h" | 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
| 10 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" | 10 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 OnBubbleShown(); | 104 OnBubbleShown(); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void TestManagePasswordsUIController:: | 107 void TestManagePasswordsUIController:: |
| 108 UpdateAndroidAccountChooserInfoBarVisibility() { | 108 UpdateAndroidAccountChooserInfoBarVisibility() { |
| 109 OnBubbleShown(); | 109 OnBubbleShown(); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void TestManagePasswordsUIController::NeverSavePasswordInternal() { | 112 void TestManagePasswordsUIController::NeverSavePasswordInternal() { |
| 113 autofill::PasswordForm blacklisted; | 113 autofill::PasswordForm blacklisted; |
| 114 blacklisted.origin = this->origin(); | 114 blacklisted.origin = this->GetOrigin(); |
| 115 blacklisted.signon_realm = blacklisted.origin.spec(); | 115 blacklisted.signon_realm = blacklisted.origin.spec(); |
| 116 blacklisted.blacklisted_by_user = true; | 116 blacklisted.blacklisted_by_user = true; |
| 117 password_manager::PasswordStoreChange change( | 117 password_manager::PasswordStoreChange change( |
| 118 password_manager::PasswordStoreChange::ADD, blacklisted); | 118 password_manager::PasswordStoreChange::ADD, blacklisted); |
| 119 password_manager::PasswordStoreChangeList list(1, change); | 119 password_manager::PasswordStoreChangeList list(1, change); |
| 120 OnLoginsChanged(list); | 120 OnLoginsChanged(list); |
| 121 } | 121 } |
| 122 | 122 |
| 123 // TODO(crbug.com/554886) Centralise mock clients. | 123 // TODO(crbug.com/554886) Centralise mock clients. |
| 124 class MockPasswordManagerClient | 124 class MockPasswordManagerClient |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 // No op on Android, where there is no icon. | 162 // No op on Android, where there is no icon. |
| 163 #if !defined(OS_ANDROID) | 163 #if !defined(OS_ANDROID) |
| 164 TestManagePasswordsIconView view; | 164 TestManagePasswordsIconView view; |
| 165 controller()->UpdateIconAndBubbleState(&view); | 165 controller()->UpdateIconAndBubbleState(&view); |
| 166 EXPECT_EQ(state, view.state()); | 166 EXPECT_EQ(state, view.state()); |
| 167 #endif | 167 #endif |
| 168 } | 168 } |
| 169 | 169 |
| 170 void ExpectIconAndControllerStateIs(password_manager::ui::State state) { | 170 void ExpectIconAndControllerStateIs(password_manager::ui::State state) { |
| 171 ExpectIconStateIs(state); | 171 ExpectIconStateIs(state); |
| 172 EXPECT_EQ(state, controller()->state()); | 172 EXPECT_EQ(state, controller()->GetState()); |
| 173 } | 173 } |
| 174 | 174 |
| 175 autofill::PasswordForm& test_local_form() { return test_local_form_; } | 175 autofill::PasswordForm& test_local_form() { return test_local_form_; } |
| 176 autofill::PasswordForm& test_federated_form() { return test_federated_form_; } | 176 autofill::PasswordForm& test_federated_form() { return test_federated_form_; } |
| 177 password_manager::CredentialInfo* credential_info() const { | 177 password_manager::CredentialInfo* credential_info() const { |
| 178 return credential_info_.get(); | 178 return credential_info_.get(); |
| 179 } | 179 } |
| 180 | 180 |
| 181 TestManagePasswordsUIController* controller() { | 181 TestManagePasswordsUIController* controller() { |
| 182 return static_cast<TestManagePasswordsUIController*>( | 182 return static_cast<TestManagePasswordsUIController*>( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 | 219 |
| 220 scoped_ptr<password_manager::PasswordFormManager> | 220 scoped_ptr<password_manager::PasswordFormManager> |
| 221 ManagePasswordsUIControllerTest::CreateFormManager() { | 221 ManagePasswordsUIControllerTest::CreateFormManager() { |
| 222 ScopedVector<autofill::PasswordForm> stored_forms; | 222 ScopedVector<autofill::PasswordForm> stored_forms; |
| 223 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); | 223 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); |
| 224 return CreateFormManagerWithBestMatches(test_local_form(), | 224 return CreateFormManagerWithBestMatches(test_local_form(), |
| 225 stored_forms.Pass()); | 225 stored_forms.Pass()); |
| 226 } | 226 } |
| 227 | 227 |
| 228 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { | 228 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { |
| 229 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 229 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 230 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 230 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 231 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | |
| 232 | 231 |
| 233 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 232 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| 234 } | 233 } |
| 235 | 234 |
| 236 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { | 235 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { |
| 237 scoped_ptr<autofill::PasswordForm> test_form( | 236 scoped_ptr<autofill::PasswordForm> test_form( |
| 238 new autofill::PasswordForm(test_local_form())); | 237 new autofill::PasswordForm(test_local_form())); |
| 239 autofill::PasswordForm* test_form_ptr = test_form.get(); | 238 autofill::PasswordForm* test_form_ptr = test_form.get(); |
| 240 base::string16 kTestUsername = test_form->username_value; | 239 base::string16 kTestUsername = test_form->username_value; |
| 241 autofill::PasswordFormMap map; | 240 autofill::PasswordFormMap map; |
| 242 map.insert(kTestUsername, test_form.Pass()); | 241 map.insert(kTestUsername, test_form.Pass()); |
| 243 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); | 242 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); |
| 244 | 243 |
| 245 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 244 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 246 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 245 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); |
| 247 EXPECT_EQ(test_form_ptr->origin, controller()->origin()); | |
| 248 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); | 246 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
| 249 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); | 247 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
| 250 | 248 |
| 251 // Controller should store a separate copy of the form as it doesn't own it. | 249 // Controller should store a separate copy of the form as it doesn't own it. |
| 252 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); | 250 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); |
| 253 | 251 |
| 254 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 252 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 255 } | 253 } |
| 256 | 254 |
| 257 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 255 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
| 258 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 256 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 259 CreateFormManager()); | 257 CreateFormManager()); |
| 260 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 258 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 261 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 259 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 262 controller()->state()); | 260 controller()->GetState()); |
| 263 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); | |
| 264 EXPECT_TRUE(controller()->opened_bubble()); | 261 EXPECT_TRUE(controller()->opened_bubble()); |
| 265 | 262 |
| 266 // TODO(mkwst): This should be the value of test_local_form().origin, but | 263 // TODO(mkwst): This should be the value of test_local_form().origin, but |
| 267 // it's being masked by the stub implementation of | 264 // it's being masked by the stub implementation of |
| 268 // ManagePasswordsUIControllerMock::PendingCredentials. | 265 // ManagePasswordsUIControllerMock::PendingCredentials. |
| 269 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 266 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 270 | 267 |
| 271 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 268 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 272 } | 269 } |
| 273 | 270 |
| 274 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { | 271 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { |
| 275 autofill::PasswordForm blacklisted; | 272 autofill::PasswordForm blacklisted; |
| 276 blacklisted.origin = test_local_form().origin; | 273 blacklisted.origin = test_local_form().origin; |
| 277 blacklisted.signon_realm = blacklisted.origin.spec(); | 274 blacklisted.signon_realm = blacklisted.origin.spec(); |
| 278 blacklisted.blacklisted_by_user = true; | 275 blacklisted.blacklisted_by_user = true; |
| 279 ScopedVector<autofill::PasswordForm> stored_forms; | 276 ScopedVector<autofill::PasswordForm> stored_forms; |
| 280 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); | 277 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); |
| 281 scoped_ptr<password_manager::PasswordFormManager> test_form_manager = | 278 scoped_ptr<password_manager::PasswordFormManager> test_form_manager = |
| 282 CreateFormManagerWithBestMatches(test_local_form(), stored_forms.Pass()); | 279 CreateFormManagerWithBestMatches(test_local_form(), stored_forms.Pass()); |
| 283 | 280 |
| 284 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 281 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 285 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 282 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 286 controller()->state()); | 283 controller()->GetState()); |
| 287 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); | |
| 288 EXPECT_FALSE(controller()->opened_bubble()); | 284 EXPECT_FALSE(controller()->opened_bubble()); |
| 289 | 285 |
| 290 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 286 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 291 } | 287 } |
| 292 | 288 |
| 293 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { | 289 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { |
| 294 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 290 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 295 CreateFormManager()); | 291 CreateFormManager()); |
| 296 test_form_manager->ProvisionallySave( | 292 test_form_manager->ProvisionallySave( |
| 297 test_local_form(), | 293 test_local_form(), |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 } | 345 } |
| 350 | 346 |
| 351 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { | 347 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { |
| 352 // Navigate to a non-webby URL, then see what happens! | 348 // Navigate to a non-webby URL, then see what happens! |
| 353 content::WebContentsTester::For(web_contents()) | 349 content::WebContentsTester::For(web_contents()) |
| 354 ->NavigateAndCommit(GURL("chrome://sign-in")); | 350 ->NavigateAndCommit(GURL("chrome://sign-in")); |
| 355 | 351 |
| 356 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 352 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 357 CreateFormManager()); | 353 CreateFormManager()); |
| 358 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 354 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 359 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 355 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 360 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | |
| 361 | 356 |
| 362 // TODO(mkwst): This should be the value of test_local_form().origin, but | 357 // TODO(mkwst): This should be the value of test_local_form().origin, but |
| 363 // it's being masked by the stub implementation of | 358 // it's being masked by the stub implementation of |
| 364 // ManagePasswordsUIControllerMock::PendingCredentials. | 359 // ManagePasswordsUIControllerMock::PendingCredentials. |
| 365 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 360 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 366 | 361 |
| 367 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 362 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| 368 } | 363 } |
| 369 | 364 |
| 370 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { | 365 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { |
| 371 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 366 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
| 372 autofill::PasswordFormMap map; | 367 autofill::PasswordFormMap map; |
| 373 map.insert(kTestUsername, | 368 map.insert(kTestUsername, |
| 374 make_scoped_ptr(new autofill::PasswordForm(test_local_form()))); | 369 make_scoped_ptr(new autofill::PasswordForm(test_local_form()))); |
| 375 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); | 370 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); |
| 376 | 371 |
| 377 test_local_form().blacklisted_by_user = true; | 372 test_local_form().blacklisted_by_user = true; |
| 378 password_manager::PasswordStoreChange change( | 373 password_manager::PasswordStoreChange change( |
| 379 password_manager::PasswordStoreChange::ADD, test_local_form()); | 374 password_manager::PasswordStoreChange::ADD, test_local_form()); |
| 380 password_manager::PasswordStoreChangeList list(1, change); | 375 password_manager::PasswordStoreChangeList list(1, change); |
| 381 controller()->OnLoginsChanged(list); | 376 controller()->OnLoginsChanged(list); |
| 382 | 377 |
| 383 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 378 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 384 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 379 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
| 385 | 380 |
| 386 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 381 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 387 } | 382 } |
| 388 | 383 |
| 389 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { | 384 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
| 390 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 385 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 391 CreateFormManager()); | 386 CreateFormManager()); |
| 392 | 387 |
| 393 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); | 388 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); |
| 394 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state()); | 389 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); |
| 395 | 390 |
| 396 controller()->OnBubbleHidden(); | 391 controller()->OnBubbleHidden(); |
| 397 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 392 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 398 } | 393 } |
| 399 | 394 |
| 400 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { | 395 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { |
| 401 ScopedVector<autofill::PasswordForm> local_credentials; | 396 ScopedVector<autofill::PasswordForm> local_credentials; |
| 402 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 397 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| 403 ScopedVector<autofill::PasswordForm> federated_credentials; | 398 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 404 GURL origin("http://example.com"); | 399 GURL origin("http://example.com"); |
| 405 EXPECT_TRUE(controller()->OnChooseCredentials( | 400 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 406 local_credentials.Pass(), federated_credentials.Pass(), origin, | 401 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 407 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 402 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 408 base::Unretained(this)))); | 403 base::Unretained(this)))); |
| 409 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 404 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 410 controller()->state()); | 405 controller()->GetState()); |
| 411 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 406 EXPECT_EQ(origin, controller()->GetOrigin()); |
| 412 EXPECT_EQ(origin, controller()->origin()); | |
| 413 EXPECT_THAT(controller()->GetCurrentForms(), | 407 EXPECT_THAT(controller()->GetCurrentForms(), |
| 414 ElementsAre(Pointee(test_local_form()))); | 408 ElementsAre(Pointee(test_local_form()))); |
| 415 | 409 |
| 416 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); | 410 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); |
| 417 | 411 |
| 418 controller()->ManagePasswordsUIController::ChooseCredential( | 412 controller()->ManagePasswordsUIController::ChooseCredential( |
| 419 test_local_form(), | 413 test_local_form(), |
| 420 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); | 414 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); |
| 421 controller()->OnBubbleHidden(); | 415 controller()->OnBubbleHidden(); |
| 422 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 416 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 423 ASSERT_TRUE(credential_info()); | 417 ASSERT_TRUE(credential_info()); |
| 424 EXPECT_EQ(test_local_form().username_value, credential_info()->id); | 418 EXPECT_EQ(test_local_form().username_value, credential_info()->id); |
| 425 EXPECT_EQ(test_local_form().password_value, credential_info()->password); | 419 EXPECT_EQ(test_local_form().password_value, credential_info()->password); |
| 426 EXPECT_TRUE(credential_info()->federation.is_empty()); | 420 EXPECT_TRUE(credential_info()->federation.is_empty()); |
| 427 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD, | 421 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD, |
| 428 credential_info()->type); | 422 credential_info()->type); |
| 429 } | 423 } |
| 430 | 424 |
| 431 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { | 425 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { |
| 432 ScopedVector<autofill::PasswordForm> local_credentials; | 426 ScopedVector<autofill::PasswordForm> local_credentials; |
| 433 local_credentials.push_back( | 427 local_credentials.push_back( |
| 434 new autofill::PasswordForm(test_federated_form())); | 428 new autofill::PasswordForm(test_federated_form())); |
| 435 ScopedVector<autofill::PasswordForm> federated_credentials; | 429 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 436 GURL origin("http://example.com"); | 430 GURL origin("http://example.com"); |
| 437 EXPECT_TRUE(controller()->OnChooseCredentials( | 431 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 438 local_credentials.Pass(), federated_credentials.Pass(), origin, | 432 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 439 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 433 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 440 base::Unretained(this)))); | 434 base::Unretained(this)))); |
| 441 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 435 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 442 controller()->state()); | 436 controller()->GetState()); |
| 443 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 437 EXPECT_EQ(origin, controller()->GetOrigin()); |
| 444 EXPECT_EQ(origin, controller()->origin()); | |
| 445 EXPECT_THAT(controller()->GetCurrentForms(), | 438 EXPECT_THAT(controller()->GetCurrentForms(), |
| 446 ElementsAre(Pointee(test_federated_form()))); | 439 ElementsAre(Pointee(test_federated_form()))); |
| 447 | 440 |
| 448 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); | 441 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); |
| 449 | 442 |
| 450 controller()->ManagePasswordsUIController::ChooseCredential( | 443 controller()->ManagePasswordsUIController::ChooseCredential( |
| 451 test_federated_form(), | 444 test_federated_form(), |
| 452 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); | 445 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); |
| 453 controller()->OnBubbleHidden(); | 446 controller()->OnBubbleHidden(); |
| 454 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 447 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 455 ASSERT_TRUE(credential_info()); | 448 ASSERT_TRUE(credential_info()); |
| 456 EXPECT_EQ(test_federated_form().username_value, credential_info()->id); | 449 EXPECT_EQ(test_federated_form().username_value, credential_info()->id); |
| 457 EXPECT_EQ(test_federated_form().federation_url, | 450 EXPECT_EQ(test_federated_form().federation_url, |
| 458 credential_info()->federation); | 451 credential_info()->federation); |
| 459 EXPECT_TRUE(credential_info()->password.empty()); | 452 EXPECT_TRUE(credential_info()->password.empty()); |
| 460 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 453 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
| 461 credential_info()->type); | 454 credential_info()->type); |
| 462 } | 455 } |
| 463 | 456 |
| 464 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { | 457 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { |
| 465 ScopedVector<autofill::PasswordForm> local_credentials; | 458 ScopedVector<autofill::PasswordForm> local_credentials; |
| 466 ScopedVector<autofill::PasswordForm> federated_credentials; | 459 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 467 federated_credentials.push_back( | 460 federated_credentials.push_back( |
| 468 new autofill::PasswordForm(test_local_form())); | 461 new autofill::PasswordForm(test_local_form())); |
| 469 GURL origin("http://example.com"); | 462 GURL origin("http://example.com"); |
| 470 EXPECT_TRUE(controller()->OnChooseCredentials( | 463 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 471 local_credentials.Pass(), federated_credentials.Pass(), origin, | 464 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 472 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 465 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 473 base::Unretained(this)))); | 466 base::Unretained(this)))); |
| 474 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 467 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 475 controller()->state()); | 468 controller()->GetState()); |
| 476 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | |
| 477 EXPECT_EQ(0u, controller()->GetCurrentForms().size()); | 469 EXPECT_EQ(0u, controller()->GetCurrentForms().size()); |
| 478 EXPECT_EQ(origin, controller()->origin()); | 470 EXPECT_EQ(origin, controller()->GetOrigin()); |
| 479 | 471 |
| 480 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); | 472 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); |
| 481 | 473 |
| 482 controller()->ManagePasswordsUIController::ChooseCredential( | 474 controller()->ManagePasswordsUIController::ChooseCredential( |
| 483 test_local_form(), | 475 test_local_form(), |
| 484 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); | 476 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); |
| 485 controller()->OnBubbleHidden(); | 477 controller()->OnBubbleHidden(); |
| 486 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 478 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 487 ASSERT_TRUE(credential_info()); | 479 ASSERT_TRUE(credential_info()); |
| 488 EXPECT_EQ(test_local_form().username_value, credential_info()->id); | 480 EXPECT_EQ(test_local_form().username_value, credential_info()->id); |
| 489 EXPECT_TRUE(credential_info()->password.empty()); | 481 EXPECT_TRUE(credential_info()->password.empty()); |
| 490 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 482 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
| 491 credential_info()->type); | 483 credential_info()->type); |
| 492 } | 484 } |
| 493 | 485 |
| 494 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { | 486 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { |
| 495 ScopedVector<autofill::PasswordForm> local_credentials; | 487 ScopedVector<autofill::PasswordForm> local_credentials; |
| 496 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 488 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| 497 ScopedVector<autofill::PasswordForm> federated_credentials; | 489 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 498 GURL origin("http://example.com"); | 490 GURL origin("http://example.com"); |
| 499 EXPECT_TRUE(controller()->OnChooseCredentials( | 491 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 500 local_credentials.Pass(), federated_credentials.Pass(), origin, | 492 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 501 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 493 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 502 base::Unretained(this)))); | 494 base::Unretained(this)))); |
| 503 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 495 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 504 controller()->state()); | 496 controller()->GetState()); |
| 505 EXPECT_EQ(origin, controller()->origin()); | 497 EXPECT_EQ(origin, controller()->GetOrigin()); |
| 506 controller()->ManagePasswordsUIController::ChooseCredential( | 498 controller()->ManagePasswordsUIController::ChooseCredential( |
| 507 test_local_form(), | 499 test_local_form(), |
| 508 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); | 500 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); |
| 509 controller()->OnBubbleHidden(); | 501 controller()->OnBubbleHidden(); |
| 510 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 502 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 511 ASSERT_TRUE(credential_info()); | 503 ASSERT_TRUE(credential_info()); |
| 512 EXPECT_TRUE(credential_info()->federation.is_empty()); | 504 EXPECT_TRUE(credential_info()->federation.is_empty()); |
| 513 EXPECT_TRUE(credential_info()->password.empty()); | 505 EXPECT_TRUE(credential_info()->password.empty()); |
| 514 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, | 506 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, |
| 515 credential_info()->type); | 507 credential_info()->type); |
| 516 } | 508 } |
| 517 | 509 |
| 518 TEST_F(ManagePasswordsUIControllerTest, AutoSignin) { | 510 TEST_F(ManagePasswordsUIControllerTest, AutoSignin) { |
| 519 ScopedVector<autofill::PasswordForm> local_credentials; | 511 ScopedVector<autofill::PasswordForm> local_credentials; |
| 520 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 512 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| 521 controller()->OnAutoSignin(local_credentials.Pass()); | 513 controller()->OnAutoSignin(local_credentials.Pass()); |
| 522 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->state()); | 514 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); |
| 523 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 515 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
| 524 ASSERT_FALSE(controller()->GetCurrentForms().empty()); | 516 ASSERT_FALSE(controller()->GetCurrentForms().empty()); |
| 525 EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]); | 517 EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]); |
| 526 ExpectIconStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 518 ExpectIconStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
| 527 controller()->OnBubbleHidden(); | 519 controller()->OnBubbleHidden(); |
| 528 ExpectIconAndControllerStateIs(password_manager::ui::MANAGE_STATE); | 520 ExpectIconAndControllerStateIs(password_manager::ui::MANAGE_STATE); |
| 529 } | 521 } |
| 530 | 522 |
| 531 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { | 523 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { |
| 532 ScopedVector<autofill::PasswordForm> local_credentials; | 524 ScopedVector<autofill::PasswordForm> local_credentials; |
| 533 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 525 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 545 | 537 |
| 546 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 538 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
| 547 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 539 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
| 548 autofill::PasswordFormMap map; | 540 autofill::PasswordFormMap map; |
| 549 scoped_ptr<autofill::PasswordForm> psl_matched_test_form( | 541 scoped_ptr<autofill::PasswordForm> psl_matched_test_form( |
| 550 new autofill::PasswordForm(test_local_form())); | 542 new autofill::PasswordForm(test_local_form())); |
| 551 psl_matched_test_form->is_public_suffix_match = true; | 543 psl_matched_test_form->is_public_suffix_match = true; |
| 552 map.insert(kTestUsername, psl_matched_test_form.Pass()); | 544 map.insert(kTestUsername, psl_matched_test_form.Pass()); |
| 553 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); | 545 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); |
| 554 | 546 |
| 555 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 547 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 556 } | 548 } |
| 557 | 549 |
| 558 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { | 550 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { |
| 559 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 551 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 560 CreateFormManager()); | 552 CreateFormManager()); |
| 561 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); | 553 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); |
| 562 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 554 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
| 563 controller()->state()); | 555 controller()->GetState()); |
| 564 | 556 |
| 565 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 557 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 566 } | 558 } |
| 567 | 559 |
| 568 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { | 560 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { |
| 569 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 561 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 570 CreateFormManager()); | 562 CreateFormManager()); |
| 571 test_form_manager->ProvisionallySave( | 563 test_form_manager->ProvisionallySave( |
| 572 test_local_form(), | 564 test_local_form(), |
| 573 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 565 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 574 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); | 566 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); |
| 575 | 567 |
| 576 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 568 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 577 controller()->UpdatePassword(autofill::PasswordForm()); | 569 controller()->UpdatePassword(autofill::PasswordForm()); |
| 578 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 570 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 579 } | 571 } |
| 580 | 572 |
| 581 TEST_F(ManagePasswordsUIControllerTest, NavigationWhenUpdateBubbleActive) { | 573 TEST_F(ManagePasswordsUIControllerTest, NavigationWhenUpdateBubbleActive) { |
| 582 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 574 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 583 CreateFormManager()); | 575 CreateFormManager()); |
| 584 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); | 576 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); |
| 585 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 577 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
| 586 controller()->state()); | 578 controller()->GetState()); |
| 587 // Fake-navigate after 5 seconds. We expect the bubble's state to be reset | 579 // Fake-navigate after 5 seconds. We expect the bubble's state to be reset |
| 588 // if a navigation occurs after this limit. | 580 // if a navigation occurs after this limit. |
| 589 controller()->SetElapsed( | 581 controller()->SetElapsed( |
| 590 base::TimeDelta::FromMilliseconds(kSlowNavigationDelayInMS)); | 582 base::TimeDelta::FromMilliseconds(kSlowNavigationDelayInMS)); |
| 591 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 583 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
| 592 content::FrameNavigateParams()); | 584 content::FrameNavigateParams()); |
| 593 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 585 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 594 // The following line shouldn't crash browser. | 586 // The following line shouldn't crash browser. |
| 595 controller()->OnNoInteractionOnUpdate(); | 587 controller()->OnNoInteractionOnUpdate(); |
| 596 } | 588 } |
| OLD | NEW |