| 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 OnBubbleShown(); | 107 OnBubbleShown(); |
| 108 } | 108 } |
| 109 | 109 |
| 110 void TestManagePasswordsUIController:: | 110 void TestManagePasswordsUIController:: |
| 111 UpdateAndroidAccountChooserInfoBarVisibility() { | 111 UpdateAndroidAccountChooserInfoBarVisibility() { |
| 112 OnBubbleShown(); | 112 OnBubbleShown(); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void TestManagePasswordsUIController::NeverSavePasswordInternal() { | 115 void TestManagePasswordsUIController::NeverSavePasswordInternal() { |
| 116 autofill::PasswordForm blacklisted; | 116 autofill::PasswordForm blacklisted; |
| 117 blacklisted.origin = this->origin(); | 117 blacklisted.origin = this->GetOrigin(); |
| 118 blacklisted.signon_realm = blacklisted.origin.spec(); | 118 blacklisted.signon_realm = blacklisted.origin.spec(); |
| 119 blacklisted.blacklisted_by_user = true; | 119 blacklisted.blacklisted_by_user = true; |
| 120 password_manager::PasswordStoreChange change( | 120 password_manager::PasswordStoreChange change( |
| 121 password_manager::PasswordStoreChange::ADD, blacklisted); | 121 password_manager::PasswordStoreChange::ADD, blacklisted); |
| 122 password_manager::PasswordStoreChangeList list(1, change); | 122 password_manager::PasswordStoreChangeList list(1, change); |
| 123 OnLoginsChanged(list); | 123 OnLoginsChanged(list); |
| 124 } | 124 } |
| 125 | 125 |
| 126 } // namespace | 126 } // namespace |
| 127 | 127 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 154 // No op on Android, where there is no icon. | 154 // No op on Android, where there is no icon. |
| 155 #if !defined(OS_ANDROID) | 155 #if !defined(OS_ANDROID) |
| 156 TestManagePasswordsIconView view; | 156 TestManagePasswordsIconView view; |
| 157 controller()->UpdateIconAndBubbleState(&view); | 157 controller()->UpdateIconAndBubbleState(&view); |
| 158 EXPECT_EQ(state, view.state()); | 158 EXPECT_EQ(state, view.state()); |
| 159 #endif | 159 #endif |
| 160 } | 160 } |
| 161 | 161 |
| 162 void ExpectIconAndControllerStateIs(password_manager::ui::State state) { | 162 void ExpectIconAndControllerStateIs(password_manager::ui::State state) { |
| 163 ExpectIconStateIs(state); | 163 ExpectIconStateIs(state); |
| 164 EXPECT_EQ(state, controller()->state()); | 164 EXPECT_EQ(state, controller()->GetState()); |
| 165 } | 165 } |
| 166 | 166 |
| 167 autofill::PasswordForm& test_local_form() { return test_local_form_; } | 167 autofill::PasswordForm& test_local_form() { return test_local_form_; } |
| 168 autofill::PasswordForm& test_federated_form() { return test_federated_form_; } | 168 autofill::PasswordForm& test_federated_form() { return test_federated_form_; } |
| 169 password_manager::CredentialInfo* credential_info() const { | 169 password_manager::CredentialInfo* credential_info() const { |
| 170 return credential_info_.get(); | 170 return credential_info_.get(); |
| 171 } | 171 } |
| 172 | 172 |
| 173 TestManagePasswordsUIController* controller() { | 173 TestManagePasswordsUIController* controller() { |
| 174 return static_cast<TestManagePasswordsUIController*>( | 174 return static_cast<TestManagePasswordsUIController*>( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 | 211 |
| 212 scoped_ptr<password_manager::PasswordFormManager> | 212 scoped_ptr<password_manager::PasswordFormManager> |
| 213 ManagePasswordsUIControllerTest::CreateFormManager() { | 213 ManagePasswordsUIControllerTest::CreateFormManager() { |
| 214 ScopedVector<autofill::PasswordForm> stored_forms; | 214 ScopedVector<autofill::PasswordForm> stored_forms; |
| 215 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); | 215 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); |
| 216 return CreateFormManagerWithBestMatches(test_local_form(), | 216 return CreateFormManagerWithBestMatches(test_local_form(), |
| 217 stored_forms.Pass()); | 217 stored_forms.Pass()); |
| 218 } | 218 } |
| 219 | 219 |
| 220 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { | 220 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { |
| 221 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 221 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 222 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 222 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 223 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | |
| 224 | 223 |
| 225 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 224 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| 226 } | 225 } |
| 227 | 226 |
| 228 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { | 227 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { |
| 229 scoped_ptr<autofill::PasswordForm> test_form( | 228 scoped_ptr<autofill::PasswordForm> test_form( |
| 230 new autofill::PasswordForm(test_local_form())); | 229 new autofill::PasswordForm(test_local_form())); |
| 231 autofill::PasswordForm* test_form_ptr = test_form.get(); | 230 autofill::PasswordForm* test_form_ptr = test_form.get(); |
| 232 base::string16 kTestUsername = test_form->username_value; | 231 base::string16 kTestUsername = test_form->username_value; |
| 233 autofill::PasswordFormMap map; | 232 autofill::PasswordFormMap map; |
| 234 map.insert(kTestUsername, test_form.Pass()); | 233 map.insert(kTestUsername, test_form.Pass()); |
| 235 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); | 234 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); |
| 236 | 235 |
| 237 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 236 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 238 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 237 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); |
| 239 EXPECT_EQ(test_form_ptr->origin, controller()->origin()); | |
| 240 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); | 238 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
| 241 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); | 239 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
| 242 | 240 |
| 243 // Controller should store a separate copy of the form as it doesn't own it. | 241 // Controller should store a separate copy of the form as it doesn't own it. |
| 244 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); | 242 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); |
| 245 | 243 |
| 246 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 244 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 247 } | 245 } |
| 248 | 246 |
| 249 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 247 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
| 250 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 248 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 251 CreateFormManager()); | 249 CreateFormManager()); |
| 252 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 250 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 253 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 251 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 254 controller()->state()); | 252 controller()->GetState()); |
| 255 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); | |
| 256 EXPECT_TRUE(controller()->opened_bubble()); | 253 EXPECT_TRUE(controller()->opened_bubble()); |
| 257 | 254 |
| 258 // TODO(mkwst): This should be the value of test_local_form().origin, but | 255 // TODO(mkwst): This should be the value of test_local_form().origin, but |
| 259 // it's being masked by the stub implementation of | 256 // it's being masked by the stub implementation of |
| 260 // ManagePasswordsUIControllerMock::PendingCredentials. | 257 // ManagePasswordsUIControllerMock::PendingCredentials. |
| 261 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 258 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 262 | 259 |
| 263 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 260 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 264 } | 261 } |
| 265 | 262 |
| 266 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { | 263 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { |
| 267 autofill::PasswordForm blacklisted; | 264 autofill::PasswordForm blacklisted; |
| 268 blacklisted.origin = test_local_form().origin; | 265 blacklisted.origin = test_local_form().origin; |
| 269 blacklisted.signon_realm = blacklisted.origin.spec(); | 266 blacklisted.signon_realm = blacklisted.origin.spec(); |
| 270 blacklisted.blacklisted_by_user = true; | 267 blacklisted.blacklisted_by_user = true; |
| 271 ScopedVector<autofill::PasswordForm> stored_forms; | 268 ScopedVector<autofill::PasswordForm> stored_forms; |
| 272 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); | 269 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); |
| 273 scoped_ptr<password_manager::PasswordFormManager> test_form_manager = | 270 scoped_ptr<password_manager::PasswordFormManager> test_form_manager = |
| 274 CreateFormManagerWithBestMatches(test_local_form(), stored_forms.Pass()); | 271 CreateFormManagerWithBestMatches(test_local_form(), stored_forms.Pass()); |
| 275 | 272 |
| 276 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 273 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 277 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 274 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 278 controller()->state()); | 275 controller()->GetState()); |
| 279 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); | |
| 280 EXPECT_FALSE(controller()->opened_bubble()); | 276 EXPECT_FALSE(controller()->opened_bubble()); |
| 281 | 277 |
| 282 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 278 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 283 } | 279 } |
| 284 | 280 |
| 285 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { | 281 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { |
| 286 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 282 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 287 CreateFormManager()); | 283 CreateFormManager()); |
| 288 password_manager::InteractionsStats stats; | 284 password_manager::InteractionsStats stats; |
| 289 stats.origin_domain = test_local_form().origin.GetOrigin(); | 285 stats.origin_domain = test_local_form().origin.GetOrigin(); |
| 290 stats.username_value = test_local_form().username_value; | 286 stats.username_value = test_local_form().username_value; |
| 291 stats.dismissal_count = kGreatDissmisalCount; | 287 stats.dismissal_count = kGreatDissmisalCount; |
| 292 ScopedVector<password_manager::InteractionsStats> interactions; | 288 ScopedVector<password_manager::InteractionsStats> interactions; |
| 293 interactions.push_back(new password_manager::InteractionsStats(stats)); | 289 interactions.push_back(new password_manager::InteractionsStats(stats)); |
| 294 test_form_manager->OnGetSiteStatistics(interactions.Pass()); | 290 test_form_manager->OnGetSiteStatistics(interactions.Pass()); |
| 295 test_form_manager->ProvisionallySave( | 291 test_form_manager->ProvisionallySave( |
| 296 test_local_form(), | 292 test_local_form(), |
| 297 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 293 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 298 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 294 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 299 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 295 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 300 controller()->state()); | 296 controller()->GetState()); |
| 301 EXPECT_FALSE(controller()->opened_bubble()); | 297 EXPECT_FALSE(controller()->opened_bubble()); |
| 302 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); | 298 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); |
| 303 EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); | 299 EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); |
| 304 | 300 |
| 305 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 301 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 306 } | 302 } |
| 307 | 303 |
| 308 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { | 304 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { |
| 309 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 305 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 310 CreateFormManager()); | 306 CreateFormManager()); |
| 311 password_manager::InteractionsStats stats; | 307 password_manager::InteractionsStats stats; |
| 312 stats.origin_domain = test_local_form().origin.GetOrigin(); | 308 stats.origin_domain = test_local_form().origin.GetOrigin(); |
| 313 stats.username_value = base::ASCIIToUTF16("not my username"); | 309 stats.username_value = base::ASCIIToUTF16("not my username"); |
| 314 stats.dismissal_count = kGreatDissmisalCount; | 310 stats.dismissal_count = kGreatDissmisalCount; |
| 315 ScopedVector<password_manager::InteractionsStats> interactions; | 311 ScopedVector<password_manager::InteractionsStats> interactions; |
| 316 interactions.push_back(new password_manager::InteractionsStats(stats)); | 312 interactions.push_back(new password_manager::InteractionsStats(stats)); |
| 317 test_form_manager->OnGetSiteStatistics(interactions.Pass()); | 313 test_form_manager->OnGetSiteStatistics(interactions.Pass()); |
| 318 test_form_manager->ProvisionallySave( | 314 test_form_manager->ProvisionallySave( |
| 319 test_local_form(), | 315 test_local_form(), |
| 320 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 316 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 321 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 317 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 322 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 318 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 323 controller()->state()); | 319 controller()->GetState()); |
| 324 EXPECT_TRUE(controller()->opened_bubble()); | 320 EXPECT_TRUE(controller()->opened_bubble()); |
| 325 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); | 321 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); |
| 326 | 322 |
| 327 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 323 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 328 } | 324 } |
| 329 | 325 |
| 330 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { | 326 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { |
| 331 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 327 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 332 CreateFormManager()); | 328 CreateFormManager()); |
| 333 test_form_manager->ProvisionallySave( | 329 test_form_manager->ProvisionallySave( |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 } | 382 } |
| 387 | 383 |
| 388 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { | 384 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { |
| 389 // Navigate to a non-webby URL, then see what happens! | 385 // Navigate to a non-webby URL, then see what happens! |
| 390 content::WebContentsTester::For(web_contents()) | 386 content::WebContentsTester::For(web_contents()) |
| 391 ->NavigateAndCommit(GURL("chrome://sign-in")); | 387 ->NavigateAndCommit(GURL("chrome://sign-in")); |
| 392 | 388 |
| 393 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 389 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 394 CreateFormManager()); | 390 CreateFormManager()); |
| 395 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 391 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 396 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 392 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 397 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | |
| 398 | 393 |
| 399 // TODO(mkwst): This should be the value of test_local_form().origin, but | 394 // TODO(mkwst): This should be the value of test_local_form().origin, but |
| 400 // it's being masked by the stub implementation of | 395 // it's being masked by the stub implementation of |
| 401 // ManagePasswordsUIControllerMock::PendingCredentials. | 396 // ManagePasswordsUIControllerMock::PendingCredentials. |
| 402 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 397 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 403 | 398 |
| 404 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 399 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| 405 } | 400 } |
| 406 | 401 |
| 407 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { | 402 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { |
| 408 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 403 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
| 409 autofill::PasswordFormMap map; | 404 autofill::PasswordFormMap map; |
| 410 map.insert(kTestUsername, | 405 map.insert(kTestUsername, |
| 411 make_scoped_ptr(new autofill::PasswordForm(test_local_form()))); | 406 make_scoped_ptr(new autofill::PasswordForm(test_local_form()))); |
| 412 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); | 407 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); |
| 413 | 408 |
| 414 test_local_form().blacklisted_by_user = true; | 409 test_local_form().blacklisted_by_user = true; |
| 415 password_manager::PasswordStoreChange change( | 410 password_manager::PasswordStoreChange change( |
| 416 password_manager::PasswordStoreChange::ADD, test_local_form()); | 411 password_manager::PasswordStoreChange::ADD, test_local_form()); |
| 417 password_manager::PasswordStoreChangeList list(1, change); | 412 password_manager::PasswordStoreChangeList list(1, change); |
| 418 controller()->OnLoginsChanged(list); | 413 controller()->OnLoginsChanged(list); |
| 419 | 414 |
| 420 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 415 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 421 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 416 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
| 422 | 417 |
| 423 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 418 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 424 } | 419 } |
| 425 | 420 |
| 426 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { | 421 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
| 427 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 422 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 428 CreateFormManager()); | 423 CreateFormManager()); |
| 429 | 424 |
| 430 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); | 425 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); |
| 431 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state()); | 426 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); |
| 432 | 427 |
| 433 controller()->OnBubbleHidden(); | 428 controller()->OnBubbleHidden(); |
| 434 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 429 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 435 } | 430 } |
| 436 | 431 |
| 437 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { | 432 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { |
| 438 ScopedVector<autofill::PasswordForm> local_credentials; | 433 ScopedVector<autofill::PasswordForm> local_credentials; |
| 439 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 434 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| 440 ScopedVector<autofill::PasswordForm> federated_credentials; | 435 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 441 GURL origin("http://example.com"); | 436 GURL origin("http://example.com"); |
| 442 EXPECT_TRUE(controller()->OnChooseCredentials( | 437 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 443 local_credentials.Pass(), federated_credentials.Pass(), origin, | 438 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 444 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 439 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 445 base::Unretained(this)))); | 440 base::Unretained(this)))); |
| 446 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 441 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 447 controller()->state()); | 442 controller()->GetState()); |
| 448 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 443 EXPECT_EQ(origin, controller()->GetOrigin()); |
| 449 EXPECT_EQ(origin, controller()->origin()); | |
| 450 EXPECT_THAT(controller()->GetCurrentForms(), | 444 EXPECT_THAT(controller()->GetCurrentForms(), |
| 451 ElementsAre(Pointee(test_local_form()))); | 445 ElementsAre(Pointee(test_local_form()))); |
| 452 | 446 |
| 453 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); | 447 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); |
| 454 | 448 |
| 455 controller()->ManagePasswordsUIController::ChooseCredential( | 449 controller()->ManagePasswordsUIController::ChooseCredential( |
| 456 test_local_form(), | 450 test_local_form(), |
| 457 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); | 451 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); |
| 458 controller()->OnBubbleHidden(); | 452 controller()->OnBubbleHidden(); |
| 459 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 453 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 460 ASSERT_TRUE(credential_info()); | 454 ASSERT_TRUE(credential_info()); |
| 461 EXPECT_EQ(test_local_form().username_value, credential_info()->id); | 455 EXPECT_EQ(test_local_form().username_value, credential_info()->id); |
| 462 EXPECT_EQ(test_local_form().password_value, credential_info()->password); | 456 EXPECT_EQ(test_local_form().password_value, credential_info()->password); |
| 463 EXPECT_TRUE(credential_info()->federation.is_empty()); | 457 EXPECT_TRUE(credential_info()->federation.is_empty()); |
| 464 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD, | 458 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD, |
| 465 credential_info()->type); | 459 credential_info()->type); |
| 466 } | 460 } |
| 467 | 461 |
| 468 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { | 462 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { |
| 469 ScopedVector<autofill::PasswordForm> local_credentials; | 463 ScopedVector<autofill::PasswordForm> local_credentials; |
| 470 local_credentials.push_back( | 464 local_credentials.push_back( |
| 471 new autofill::PasswordForm(test_federated_form())); | 465 new autofill::PasswordForm(test_federated_form())); |
| 472 ScopedVector<autofill::PasswordForm> federated_credentials; | 466 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 473 GURL origin("http://example.com"); | 467 GURL origin("http://example.com"); |
| 474 EXPECT_TRUE(controller()->OnChooseCredentials( | 468 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 475 local_credentials.Pass(), federated_credentials.Pass(), origin, | 469 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 476 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 470 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 477 base::Unretained(this)))); | 471 base::Unretained(this)))); |
| 478 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 472 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 479 controller()->state()); | 473 controller()->GetState()); |
| 480 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 474 EXPECT_EQ(origin, controller()->GetOrigin()); |
| 481 EXPECT_EQ(origin, controller()->origin()); | |
| 482 EXPECT_THAT(controller()->GetCurrentForms(), | 475 EXPECT_THAT(controller()->GetCurrentForms(), |
| 483 ElementsAre(Pointee(test_federated_form()))); | 476 ElementsAre(Pointee(test_federated_form()))); |
| 484 | 477 |
| 485 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); | 478 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); |
| 486 | 479 |
| 487 controller()->ManagePasswordsUIController::ChooseCredential( | 480 controller()->ManagePasswordsUIController::ChooseCredential( |
| 488 test_federated_form(), | 481 test_federated_form(), |
| 489 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); | 482 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); |
| 490 controller()->OnBubbleHidden(); | 483 controller()->OnBubbleHidden(); |
| 491 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 484 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 492 ASSERT_TRUE(credential_info()); | 485 ASSERT_TRUE(credential_info()); |
| 493 EXPECT_EQ(test_federated_form().username_value, credential_info()->id); | 486 EXPECT_EQ(test_federated_form().username_value, credential_info()->id); |
| 494 EXPECT_EQ(test_federated_form().federation_url, | 487 EXPECT_EQ(test_federated_form().federation_url, |
| 495 credential_info()->federation); | 488 credential_info()->federation); |
| 496 EXPECT_TRUE(credential_info()->password.empty()); | 489 EXPECT_TRUE(credential_info()->password.empty()); |
| 497 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 490 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
| 498 credential_info()->type); | 491 credential_info()->type); |
| 499 } | 492 } |
| 500 | 493 |
| 501 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { | 494 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { |
| 502 ScopedVector<autofill::PasswordForm> local_credentials; | 495 ScopedVector<autofill::PasswordForm> local_credentials; |
| 503 ScopedVector<autofill::PasswordForm> federated_credentials; | 496 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 504 federated_credentials.push_back( | 497 federated_credentials.push_back( |
| 505 new autofill::PasswordForm(test_local_form())); | 498 new autofill::PasswordForm(test_local_form())); |
| 506 GURL origin("http://example.com"); | 499 GURL origin("http://example.com"); |
| 507 EXPECT_TRUE(controller()->OnChooseCredentials( | 500 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 508 local_credentials.Pass(), federated_credentials.Pass(), origin, | 501 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 509 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 502 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 510 base::Unretained(this)))); | 503 base::Unretained(this)))); |
| 511 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 504 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 512 controller()->state()); | 505 controller()->GetState()); |
| 513 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | |
| 514 EXPECT_EQ(0u, controller()->GetCurrentForms().size()); | 506 EXPECT_EQ(0u, controller()->GetCurrentForms().size()); |
| 515 EXPECT_EQ(origin, controller()->origin()); | 507 EXPECT_EQ(origin, controller()->GetOrigin()); |
| 516 | 508 |
| 517 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); | 509 ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); |
| 518 | 510 |
| 519 controller()->ManagePasswordsUIController::ChooseCredential( | 511 controller()->ManagePasswordsUIController::ChooseCredential( |
| 520 test_local_form(), | 512 test_local_form(), |
| 521 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); | 513 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); |
| 522 controller()->OnBubbleHidden(); | 514 controller()->OnBubbleHidden(); |
| 523 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 515 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 524 ASSERT_TRUE(credential_info()); | 516 ASSERT_TRUE(credential_info()); |
| 525 EXPECT_EQ(test_local_form().username_value, credential_info()->id); | 517 EXPECT_EQ(test_local_form().username_value, credential_info()->id); |
| 526 EXPECT_TRUE(credential_info()->password.empty()); | 518 EXPECT_TRUE(credential_info()->password.empty()); |
| 527 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 519 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
| 528 credential_info()->type); | 520 credential_info()->type); |
| 529 } | 521 } |
| 530 | 522 |
| 531 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { | 523 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { |
| 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())); |
| 534 ScopedVector<autofill::PasswordForm> federated_credentials; | 526 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 535 GURL origin("http://example.com"); | 527 GURL origin("http://example.com"); |
| 536 EXPECT_TRUE(controller()->OnChooseCredentials( | 528 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 537 local_credentials.Pass(), federated_credentials.Pass(), origin, | 529 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 538 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 530 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 539 base::Unretained(this)))); | 531 base::Unretained(this)))); |
| 540 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 532 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 541 controller()->state()); | 533 controller()->GetState()); |
| 542 EXPECT_EQ(origin, controller()->origin()); | 534 EXPECT_EQ(origin, controller()->GetOrigin()); |
| 543 controller()->ManagePasswordsUIController::ChooseCredential( | 535 controller()->ManagePasswordsUIController::ChooseCredential( |
| 544 test_local_form(), | 536 test_local_form(), |
| 545 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); | 537 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); |
| 546 controller()->OnBubbleHidden(); | 538 controller()->OnBubbleHidden(); |
| 547 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 539 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 548 ASSERT_TRUE(credential_info()); | 540 ASSERT_TRUE(credential_info()); |
| 549 EXPECT_TRUE(credential_info()->federation.is_empty()); | 541 EXPECT_TRUE(credential_info()->federation.is_empty()); |
| 550 EXPECT_TRUE(credential_info()->password.empty()); | 542 EXPECT_TRUE(credential_info()->password.empty()); |
| 551 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, | 543 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, |
| 552 credential_info()->type); | 544 credential_info()->type); |
| 553 } | 545 } |
| 554 | 546 |
| 555 TEST_F(ManagePasswordsUIControllerTest, AutoSignin) { | 547 TEST_F(ManagePasswordsUIControllerTest, AutoSignin) { |
| 556 ScopedVector<autofill::PasswordForm> local_credentials; | 548 ScopedVector<autofill::PasswordForm> local_credentials; |
| 557 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 549 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| 558 controller()->OnAutoSignin(local_credentials.Pass()); | 550 controller()->OnAutoSignin(local_credentials.Pass()); |
| 559 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->state()); | 551 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); |
| 560 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 552 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
| 561 ASSERT_FALSE(controller()->GetCurrentForms().empty()); | 553 ASSERT_FALSE(controller()->GetCurrentForms().empty()); |
| 562 EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]); | 554 EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]); |
| 563 ExpectIconStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 555 ExpectIconStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
| 564 controller()->OnBubbleHidden(); | 556 controller()->OnBubbleHidden(); |
| 565 ExpectIconAndControllerStateIs(password_manager::ui::MANAGE_STATE); | 557 ExpectIconAndControllerStateIs(password_manager::ui::MANAGE_STATE); |
| 566 } | 558 } |
| 567 | 559 |
| 568 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { | 560 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { |
| 569 ScopedVector<autofill::PasswordForm> local_credentials; | 561 ScopedVector<autofill::PasswordForm> local_credentials; |
| 570 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 562 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 582 | 574 |
| 583 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 575 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
| 584 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 576 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
| 585 autofill::PasswordFormMap map; | 577 autofill::PasswordFormMap map; |
| 586 scoped_ptr<autofill::PasswordForm> psl_matched_test_form( | 578 scoped_ptr<autofill::PasswordForm> psl_matched_test_form( |
| 587 new autofill::PasswordForm(test_local_form())); | 579 new autofill::PasswordForm(test_local_form())); |
| 588 psl_matched_test_form->is_public_suffix_match = true; | 580 psl_matched_test_form->is_public_suffix_match = true; |
| 589 map.insert(kTestUsername, psl_matched_test_form.Pass()); | 581 map.insert(kTestUsername, psl_matched_test_form.Pass()); |
| 590 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); | 582 controller()->OnPasswordAutofilled(map, map.begin()->second->origin); |
| 591 | 583 |
| 592 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 584 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 593 } | 585 } |
| 594 | 586 |
| 595 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { | 587 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { |
| 596 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 588 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 597 CreateFormManager()); | 589 CreateFormManager()); |
| 598 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); | 590 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); |
| 599 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 591 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
| 600 controller()->state()); | 592 controller()->GetState()); |
| 601 | 593 |
| 602 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 594 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 603 } | 595 } |
| 604 | 596 |
| 605 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { | 597 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { |
| 606 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 598 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 607 CreateFormManager()); | 599 CreateFormManager()); |
| 608 test_form_manager->ProvisionallySave( | 600 test_form_manager->ProvisionallySave( |
| 609 test_local_form(), | 601 test_local_form(), |
| 610 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 602 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 611 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); | 603 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); |
| 612 | 604 |
| 613 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 605 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 614 controller()->UpdatePassword(autofill::PasswordForm()); | 606 controller()->UpdatePassword(autofill::PasswordForm()); |
| 615 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 607 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 616 } | 608 } |
| 617 | 609 |
| 618 TEST_F(ManagePasswordsUIControllerTest, NavigationWhenUpdateBubbleActive) { | 610 TEST_F(ManagePasswordsUIControllerTest, NavigationWhenUpdateBubbleActive) { |
| 619 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 611 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 620 CreateFormManager()); | 612 CreateFormManager()); |
| 621 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); | 613 controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); |
| 622 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 614 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
| 623 controller()->state()); | 615 controller()->GetState()); |
| 624 // Fake-navigate after 5 seconds. We expect the bubble's state to be reset | 616 // Fake-navigate after 5 seconds. We expect the bubble's state to be reset |
| 625 // if a navigation occurs after this limit. | 617 // if a navigation occurs after this limit. |
| 626 controller()->SetElapsed( | 618 controller()->SetElapsed( |
| 627 base::TimeDelta::FromMilliseconds(kSlowNavigationDelayInMS)); | 619 base::TimeDelta::FromMilliseconds(kSlowNavigationDelayInMS)); |
| 628 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 620 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
| 629 content::FrameNavigateParams()); | 621 content::FrameNavigateParams()); |
| 630 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 622 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 631 // The following line shouldn't crash browser. | 623 // The following line shouldn't crash browser. |
| 632 controller()->OnNoInteractionOnUpdate(); | 624 controller()->OnNoInteractionOnUpdate(); |
| 633 } | 625 } |
| OLD | NEW |