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 |