| 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 <map> | 5 #include <map> |
| 6 #include <memory> | 6 #include <memory> |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 DialogPromptMock& dialog_prompt() { return dialog_prompt_; } | 173 DialogPromptMock& dialog_prompt() { return dialog_prompt_; } |
| 174 | 174 |
| 175 TestManagePasswordsUIController* controller() { | 175 TestManagePasswordsUIController* controller() { |
| 176 return static_cast<TestManagePasswordsUIController*>( | 176 return static_cast<TestManagePasswordsUIController*>( |
| 177 ManagePasswordsUIController::FromWebContents(web_contents())); | 177 ManagePasswordsUIController::FromWebContents(web_contents())); |
| 178 } | 178 } |
| 179 | 179 |
| 180 void ExpectIconStateIs(password_manager::ui::State state); | 180 void ExpectIconStateIs(password_manager::ui::State state); |
| 181 void ExpectIconAndControllerStateIs(password_manager::ui::State state); | 181 void ExpectIconAndControllerStateIs(password_manager::ui::State state); |
| 182 | 182 |
| 183 std::unique_ptr<password_manager::PasswordFormManager> | 183 scoped_refptr<password_manager::PasswordFormManager> |
| 184 CreateFormManagerWithBestMatches( | 184 CreateFormManagerWithBestMatches( |
| 185 const autofill::PasswordForm& observed_form, | 185 const autofill::PasswordForm& observed_form, |
| 186 const std::vector<const autofill::PasswordForm*>& best_matches); | 186 const std::vector<const autofill::PasswordForm*>& best_matches); |
| 187 | 187 |
| 188 std::unique_ptr<password_manager::PasswordFormManager> CreateFormManager(); | 188 scoped_refptr<password_manager::PasswordFormManager> CreateFormManager(); |
| 189 | 189 |
| 190 // Tests that the state is not changed when the password is autofilled. | 190 // Tests that the state is not changed when the password is autofilled. |
| 191 void TestNotChangingStateOnAutofill( | 191 void TestNotChangingStateOnAutofill( |
| 192 password_manager::ui::State state); | 192 password_manager::ui::State state); |
| 193 | 193 |
| 194 MOCK_METHOD1(CredentialCallback, void(const autofill::PasswordForm*)); | 194 MOCK_METHOD1(CredentialCallback, void(const autofill::PasswordForm*)); |
| 195 | 195 |
| 196 private: | 196 private: |
| 197 password_manager::StubPasswordManagerClient client_; | 197 password_manager::StubPasswordManagerClient client_; |
| 198 password_manager::StubPasswordManagerDriver driver_; | 198 password_manager::StubPasswordManagerDriver driver_; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 controller()->UpdateIconAndBubbleState(&view); | 234 controller()->UpdateIconAndBubbleState(&view); |
| 235 EXPECT_EQ(state, view.state()); | 235 EXPECT_EQ(state, view.state()); |
| 236 } | 236 } |
| 237 | 237 |
| 238 void ManagePasswordsUIControllerTest::ExpectIconAndControllerStateIs( | 238 void ManagePasswordsUIControllerTest::ExpectIconAndControllerStateIs( |
| 239 password_manager::ui::State state) { | 239 password_manager::ui::State state) { |
| 240 ExpectIconStateIs(state); | 240 ExpectIconStateIs(state); |
| 241 EXPECT_EQ(state, controller()->GetState()); | 241 EXPECT_EQ(state, controller()->GetState()); |
| 242 } | 242 } |
| 243 | 243 |
| 244 std::unique_ptr<password_manager::PasswordFormManager> | 244 scoped_refptr<password_manager::PasswordFormManager> |
| 245 ManagePasswordsUIControllerTest::CreateFormManagerWithBestMatches( | 245 ManagePasswordsUIControllerTest::CreateFormManagerWithBestMatches( |
| 246 const autofill::PasswordForm& observed_form, | 246 const autofill::PasswordForm& observed_form, |
| 247 const std::vector<const autofill::PasswordForm*>& best_matches) { | 247 const std::vector<const autofill::PasswordForm*>& best_matches) { |
| 248 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 248 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 249 new password_manager::PasswordFormManager( | 249 new password_manager::PasswordFormManager( |
| 250 &password_manager_, &client_, driver_.AsWeakPtr(), observed_form, | 250 &password_manager_, &client_, driver_.AsWeakPtr(), observed_form, |
| 251 base::WrapUnique(new password_manager::StubFormSaver), &fetcher_)); | 251 base::WrapUnique(new password_manager::StubFormSaver), &fetcher_)); |
| 252 fetcher_.SetNonFederated(best_matches, 0u); | 252 fetcher_.SetNonFederated(best_matches, 0u); |
| 253 return test_form_manager; | 253 return test_form_manager; |
| 254 } | 254 } |
| 255 | 255 |
| 256 std::unique_ptr<password_manager::PasswordFormManager> | 256 scoped_refptr<password_manager::PasswordFormManager> |
| 257 ManagePasswordsUIControllerTest::CreateFormManager() { | 257 ManagePasswordsUIControllerTest::CreateFormManager() { |
| 258 return CreateFormManagerWithBestMatches(test_local_form(), | 258 return CreateFormManagerWithBestMatches(test_local_form(), |
| 259 {&test_local_form()}); | 259 {&test_local_form()}); |
| 260 } | 260 } |
| 261 | 261 |
| 262 void ManagePasswordsUIControllerTest::TestNotChangingStateOnAutofill( | 262 void ManagePasswordsUIControllerTest::TestNotChangingStateOnAutofill( |
| 263 password_manager::ui::State state) { | 263 password_manager::ui::State state) { |
| 264 DCHECK(state == password_manager::ui::PENDING_PASSWORD_STATE || | 264 DCHECK(state == password_manager::ui::PENDING_PASSWORD_STATE || |
| 265 state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || | 265 state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || |
| 266 state == password_manager::ui::CONFIRMATION_STATE); | 266 state == password_manager::ui::CONFIRMATION_STATE); |
| 267 | 267 |
| 268 // Set the bubble state to |state|. | 268 // Set the bubble state to |state|. |
| 269 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 269 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 270 CreateFormManager()); | 270 CreateFormManager()); |
| 271 test_form_manager->ProvisionallySave( | 271 test_form_manager->ProvisionallySave( |
| 272 test_local_form(), | 272 test_local_form(), |
| 273 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 273 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 274 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 274 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 275 if (state == password_manager::ui::PENDING_PASSWORD_STATE) | 275 if (state == password_manager::ui::PENDING_PASSWORD_STATE) |
| 276 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 276 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 277 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) | 277 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) |
| 278 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 278 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
| 279 else // password_manager::ui::CONFIRMATION_STATE | 279 else // password_manager::ui::CONFIRMATION_STATE |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); | 311 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
| 312 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); | 312 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
| 313 | 313 |
| 314 // Controller should store a separate copy of the form as it doesn't own it. | 314 // Controller should store a separate copy of the form as it doesn't own it. |
| 315 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0].get()); | 315 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0].get()); |
| 316 | 316 |
| 317 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 317 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 318 } | 318 } |
| 319 | 319 |
| 320 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 320 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
| 321 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 321 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 322 CreateFormManager()); | 322 CreateFormManager()); |
| 323 test_form_manager->ProvisionallySave( | 323 test_form_manager->ProvisionallySave( |
| 324 test_local_form(), | 324 test_local_form(), |
| 325 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 325 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 326 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 326 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 327 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 327 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 328 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 328 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 329 controller()->GetState()); | 329 controller()->GetState()); |
| 330 EXPECT_TRUE(controller()->opened_bubble()); | 330 EXPECT_TRUE(controller()->opened_bubble()); |
| 331 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 331 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
| 332 | 332 |
| 333 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 333 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 334 } | 334 } |
| 335 | 335 |
| 336 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { | 336 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { |
| 337 autofill::PasswordForm blacklisted; | 337 autofill::PasswordForm blacklisted; |
| 338 blacklisted.origin = test_local_form().origin; | 338 blacklisted.origin = test_local_form().origin; |
| 339 blacklisted.signon_realm = blacklisted.origin.spec(); | 339 blacklisted.signon_realm = blacklisted.origin.spec(); |
| 340 blacklisted.blacklisted_by_user = true; | 340 blacklisted.blacklisted_by_user = true; |
| 341 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager = | 341 scoped_refptr<password_manager::PasswordFormManager> test_form_manager = |
| 342 CreateFormManagerWithBestMatches(test_local_form(), {&blacklisted}); | 342 CreateFormManagerWithBestMatches(test_local_form(), {&blacklisted}); |
| 343 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 343 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 344 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 344 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 345 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 345 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 346 controller()->GetState()); | 346 controller()->GetState()); |
| 347 EXPECT_FALSE(controller()->opened_bubble()); | 347 EXPECT_FALSE(controller()->opened_bubble()); |
| 348 | 348 |
| 349 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 349 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 350 } | 350 } |
| 351 | 351 |
| 352 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { | 352 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { |
| 353 CreateSmartBubbleFieldTrial(); | 353 CreateSmartBubbleFieldTrial(); |
| 354 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 354 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 355 CreateFormManager()); | 355 CreateFormManager()); |
| 356 std::vector<password_manager::InteractionsStats> stats(1); | 356 std::vector<password_manager::InteractionsStats> stats(1); |
| 357 stats[0].origin_domain = test_local_form().origin.GetOrigin(); | 357 stats[0].origin_domain = test_local_form().origin.GetOrigin(); |
| 358 stats[0].username_value = test_local_form().username_value; | 358 stats[0].username_value = test_local_form().username_value; |
| 359 stats[0].dismissal_count = kGreatDissmisalCount; | 359 stats[0].dismissal_count = kGreatDissmisalCount; |
| 360 fetcher().set_stats(stats); | 360 fetcher().set_stats(stats); |
| 361 test_form_manager->ProvisionallySave( | 361 test_form_manager->ProvisionallySave( |
| 362 test_local_form(), | 362 test_local_form(), |
| 363 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 363 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 364 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 364 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 365 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 365 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 366 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 366 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 367 controller()->GetState()); | 367 controller()->GetState()); |
| 368 EXPECT_FALSE(controller()->opened_bubble()); | 368 EXPECT_FALSE(controller()->opened_bubble()); |
| 369 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); | 369 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); |
| 370 EXPECT_EQ(stats[0], *controller()->GetCurrentInteractionStats()); | 370 EXPECT_EQ(stats[0], *controller()->GetCurrentInteractionStats()); |
| 371 | 371 |
| 372 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 372 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 373 variations::testing::ClearAllVariationParams(); | 373 variations::testing::ClearAllVariationParams(); |
| 374 } | 374 } |
| 375 | 375 |
| 376 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { | 376 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { |
| 377 CreateSmartBubbleFieldTrial(); | 377 CreateSmartBubbleFieldTrial(); |
| 378 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 378 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 379 CreateFormManager()); | 379 CreateFormManager()); |
| 380 std::vector<password_manager::InteractionsStats> stats(1); | 380 std::vector<password_manager::InteractionsStats> stats(1); |
| 381 stats[0].origin_domain = test_local_form().origin.GetOrigin(); | 381 stats[0].origin_domain = test_local_form().origin.GetOrigin(); |
| 382 stats[0].username_value = base::ASCIIToUTF16("not my username"); | 382 stats[0].username_value = base::ASCIIToUTF16("not my username"); |
| 383 stats[0].dismissal_count = kGreatDissmisalCount; | 383 stats[0].dismissal_count = kGreatDissmisalCount; |
| 384 fetcher().set_stats(stats); | 384 fetcher().set_stats(stats); |
| 385 test_form_manager->ProvisionallySave( | 385 test_form_manager->ProvisionallySave( |
| 386 test_local_form(), | 386 test_local_form(), |
| 387 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 387 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 388 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 388 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 389 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 389 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 390 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 390 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 391 controller()->GetState()); | 391 controller()->GetState()); |
| 392 EXPECT_TRUE(controller()->opened_bubble()); | 392 EXPECT_TRUE(controller()->opened_bubble()); |
| 393 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); | 393 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); |
| 394 | 394 |
| 395 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 395 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 396 variations::testing::ClearAllVariationParams(); | 396 variations::testing::ClearAllVariationParams(); |
| 397 } | 397 } |
| 398 | 398 |
| 399 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { | 399 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { |
| 400 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 400 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 401 CreateFormManager()); | 401 CreateFormManager()); |
| 402 test_form_manager->ProvisionallySave( | 402 test_form_manager->ProvisionallySave( |
| 403 test_local_form(), | 403 test_local_form(), |
| 404 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 404 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 405 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 405 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 406 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 406 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 407 | 407 |
| 408 controller()->SavePassword(); | 408 controller()->SavePassword(); |
| 409 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 409 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 410 } | 410 } |
| 411 | 411 |
| 412 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { | 412 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { |
| 413 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 413 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 414 CreateFormManager()); | 414 CreateFormManager()); |
| 415 test_form_manager->ProvisionallySave( | 415 test_form_manager->ProvisionallySave( |
| 416 test_local_form(), | 416 test_local_form(), |
| 417 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 417 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 418 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 418 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 419 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 419 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 420 | 420 |
| 421 controller()->NeverSavePassword(); | 421 controller()->NeverSavePassword(); |
| 422 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 422 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 423 } | 423 } |
| 424 | 424 |
| 425 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { | 425 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { |
| 426 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 426 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 427 CreateFormManager()); | 427 CreateFormManager()); |
| 428 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 428 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 429 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 429 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 430 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 430 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 431 | 431 |
| 432 // Fake-navigate. We expect the bubble's state to persist so a user reasonably | 432 // Fake-navigate. We expect the bubble's state to persist so a user reasonably |
| 433 // has been able to interact with the bubble. This happens on | 433 // has been able to interact with the bubble. This happens on |
| 434 // `accounts.google.com`, for instance. | 434 // `accounts.google.com`, for instance. |
| 435 std::unique_ptr<content::NavigationHandle> navigation_handle = | 435 std::unique_ptr<content::NavigationHandle> navigation_handle = |
| 436 content::NavigationHandle::CreateNavigationHandleForTesting( | 436 content::NavigationHandle::CreateNavigationHandleForTesting( |
| 437 GURL(), main_rfh(), true); | 437 GURL(), main_rfh(), true); |
| 438 navigation_handle.reset(); // Calls DidFinishNavigation. | 438 navigation_handle.reset(); // Calls DidFinishNavigation. |
| 439 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 439 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 440 controller()->GetState()); | 440 controller()->GetState()); |
| 441 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 441 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 442 } | 442 } |
| 443 | 443 |
| 444 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) { | 444 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) { |
| 445 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 445 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 446 CreateFormManager()); | 446 CreateFormManager()); |
| 447 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 447 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 448 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 448 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 449 controller()->SavePassword(); | 449 controller()->SavePassword(); |
| 450 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 450 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 451 controller()->OnBubbleHidden(); | 451 controller()->OnBubbleHidden(); |
| 452 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 452 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 453 | 453 |
| 454 // Fake-navigate. There is no bubble, reset the state. | 454 // Fake-navigate. There is no bubble, reset the state. |
| 455 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 455 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 456 std::unique_ptr<content::NavigationHandle> navigation_handle = | 456 std::unique_ptr<content::NavigationHandle> navigation_handle = |
| 457 content::NavigationHandle::CreateNavigationHandleForTesting( | 457 content::NavigationHandle::CreateNavigationHandleForTesting( |
| 458 GURL(), main_rfh(), true); | 458 GURL(), main_rfh(), true); |
| 459 navigation_handle.reset(); // Calls DidFinishNavigation. | 459 navigation_handle.reset(); // Calls DidFinishNavigation. |
| 460 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 460 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 461 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 461 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| 462 } | 462 } |
| 463 | 463 |
| 464 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { | 464 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { |
| 465 // Navigate to a non-webby URL, then see what happens! | 465 // Navigate to a non-webby URL, then see what happens! |
| 466 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 466 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 467 content::WebContentsTester::For(web_contents()) | 467 content::WebContentsTester::For(web_contents()) |
| 468 ->NavigateAndCommit(GURL("chrome://sign-in")); | 468 ->NavigateAndCommit(GURL("chrome://sign-in")); |
| 469 | 469 |
| 470 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 470 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 471 CreateFormManager()); | 471 CreateFormManager()); |
| 472 test_form_manager->ProvisionallySave( | 472 test_form_manager->ProvisionallySave( |
| 473 test_local_form(), | 473 test_local_form(), |
| 474 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 474 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 475 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 475 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 476 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 476 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 477 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 477 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 478 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); | 478 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 479 | 479 |
| 480 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 480 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 493 password_manager::PasswordStoreChangeList list(1, change); | 493 password_manager::PasswordStoreChangeList list(1, change); |
| 494 controller()->OnLoginsChanged(list); | 494 controller()->OnLoginsChanged(list); |
| 495 | 495 |
| 496 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 496 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 497 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 497 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
| 498 | 498 |
| 499 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 499 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 500 } | 500 } |
| 501 | 501 |
| 502 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { | 502 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
| 503 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 503 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 504 CreateFormManager()); | 504 CreateFormManager()); |
| 505 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 505 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 506 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); | 506 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); |
| 507 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); | 507 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); |
| 508 | 508 |
| 509 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 509 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 510 controller()->OnBubbleHidden(); | 510 controller()->OnBubbleHidden(); |
| 511 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 511 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 512 } | 512 } |
| 513 | 513 |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 autofill::PasswordForm psl_matched_test_form(test_local_form()); | 737 autofill::PasswordForm psl_matched_test_form(test_local_form()); |
| 738 psl_matched_test_form.is_public_suffix_match = true; | 738 psl_matched_test_form.is_public_suffix_match = true; |
| 739 map.insert(std::make_pair(kTestUsername, &psl_matched_test_form)); | 739 map.insert(std::make_pair(kTestUsername, &psl_matched_test_form)); |
| 740 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 740 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 741 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 741 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
| 742 | 742 |
| 743 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 743 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 744 } | 744 } |
| 745 | 745 |
| 746 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { | 746 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { |
| 747 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 747 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 748 CreateFormManager()); | 748 CreateFormManager()); |
| 749 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 749 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 750 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 750 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
| 751 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 751 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
| 752 controller()->GetState()); | 752 controller()->GetState()); |
| 753 | 753 |
| 754 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 754 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 755 } | 755 } |
| 756 | 756 |
| 757 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { | 757 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { |
| 758 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 758 scoped_refptr<password_manager::PasswordFormManager> test_form_manager( |
| 759 CreateFormManager()); | 759 CreateFormManager()); |
| 760 test_form_manager->ProvisionallySave( | 760 test_form_manager->ProvisionallySave( |
| 761 test_local_form(), | 761 test_local_form(), |
| 762 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 762 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 763 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 763 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 764 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 764 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
| 765 | 765 |
| 766 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 766 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 767 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 767 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 768 controller()->UpdatePassword(autofill::PasswordForm()); | 768 controller()->UpdatePassword(autofill::PasswordForm()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 797 // Open the bubble again. | 797 // Open the bubble again. |
| 798 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); | 798 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); |
| 799 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 799 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
| 800 controller()->OnAutoSignin(std::move(local_credentials), | 800 controller()->OnAutoSignin(std::move(local_credentials), |
| 801 test_local_form().origin); | 801 test_local_form().origin); |
| 802 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); | 802 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); |
| 803 // Check the delegate is destroyed. Thus, the first bubble has no way to mess | 803 // Check the delegate is destroyed. Thus, the first bubble has no way to mess |
| 804 // up with the controller's state. | 804 // up with the controller's state. |
| 805 EXPECT_FALSE(proxy_delegate); | 805 EXPECT_FALSE(proxy_delegate); |
| 806 } | 806 } |
| OLD | NEW |