| 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 <memory> |
| 5 #include <utility> | 6 #include <utility> |
| 6 #include <vector> | 7 #include <vector> |
| 7 | 8 |
| 8 #include "base/bind.h" | 9 #include "base/bind.h" |
| 9 #include "base/macros.h" | 10 #include "base/macros.h" |
| 10 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/ptr_util.h" |
| 11 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
| 12 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 13 #include "build/build_config.h" | 14 #include "build/build_config.h" |
| 14 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 15 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
| 15 #include "chrome/browser/ui/passwords/manage_passwords_icon_view.h" | 16 #include "chrome/browser/ui/passwords/manage_passwords_icon_view.h" |
| 16 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" | 17 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" |
| 17 #include "chrome/browser/ui/passwords/password_dialog_controller.h" | 18 #include "chrome/browser/ui/passwords/password_dialog_controller.h" |
| 18 #include "chrome/browser/ui/passwords/password_dialog_prompts.h" | 19 #include "chrome/browser/ui/passwords/password_dialog_prompts.h" |
| 19 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 20 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| 20 #include "chrome/test/base/testing_profile.h" | 21 #include "chrome/test/base/testing_profile.h" |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 DialogPromptMock& dialog_prompt() { return dialog_prompt_; } | 159 DialogPromptMock& dialog_prompt() { return dialog_prompt_; } |
| 159 | 160 |
| 160 TestManagePasswordsUIController* controller() { | 161 TestManagePasswordsUIController* controller() { |
| 161 return static_cast<TestManagePasswordsUIController*>( | 162 return static_cast<TestManagePasswordsUIController*>( |
| 162 ManagePasswordsUIController::FromWebContents(web_contents())); | 163 ManagePasswordsUIController::FromWebContents(web_contents())); |
| 163 } | 164 } |
| 164 | 165 |
| 165 void ExpectIconStateIs(password_manager::ui::State state); | 166 void ExpectIconStateIs(password_manager::ui::State state); |
| 166 void ExpectIconAndControllerStateIs(password_manager::ui::State state); | 167 void ExpectIconAndControllerStateIs(password_manager::ui::State state); |
| 167 | 168 |
| 168 scoped_ptr<password_manager::PasswordFormManager> | 169 std::unique_ptr<password_manager::PasswordFormManager> |
| 169 CreateFormManagerWithBestMatches( | 170 CreateFormManagerWithBestMatches( |
| 170 const autofill::PasswordForm& observed_form, | 171 const autofill::PasswordForm& observed_form, |
| 171 ScopedVector<autofill::PasswordForm> best_matches); | 172 ScopedVector<autofill::PasswordForm> best_matches); |
| 172 | 173 |
| 173 scoped_ptr<password_manager::PasswordFormManager> CreateFormManager(); | 174 std::unique_ptr<password_manager::PasswordFormManager> CreateFormManager(); |
| 174 | 175 |
| 175 // Tests that the state is not changed when the password is autofilled. | 176 // Tests that the state is not changed when the password is autofilled. |
| 176 void TestNotChangingStateOnAutofill( | 177 void TestNotChangingStateOnAutofill( |
| 177 password_manager::ui::State state); | 178 password_manager::ui::State state); |
| 178 | 179 |
| 179 MOCK_METHOD1(CredentialCallback, void(const autofill::PasswordForm*)); | 180 MOCK_METHOD1(CredentialCallback, void(const autofill::PasswordForm*)); |
| 180 | 181 |
| 181 private: | 182 private: |
| 182 password_manager::StubPasswordManagerClient client_; | 183 password_manager::StubPasswordManagerClient client_; |
| 183 password_manager::StubPasswordManagerDriver driver_; | 184 password_manager::StubPasswordManagerDriver driver_; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 controller()->UpdateIconAndBubbleState(&view); | 218 controller()->UpdateIconAndBubbleState(&view); |
| 218 EXPECT_EQ(state, view.state()); | 219 EXPECT_EQ(state, view.state()); |
| 219 } | 220 } |
| 220 | 221 |
| 221 void ManagePasswordsUIControllerTest::ExpectIconAndControllerStateIs( | 222 void ManagePasswordsUIControllerTest::ExpectIconAndControllerStateIs( |
| 222 password_manager::ui::State state) { | 223 password_manager::ui::State state) { |
| 223 ExpectIconStateIs(state); | 224 ExpectIconStateIs(state); |
| 224 EXPECT_EQ(state, controller()->GetState()); | 225 EXPECT_EQ(state, controller()->GetState()); |
| 225 } | 226 } |
| 226 | 227 |
| 227 scoped_ptr<password_manager::PasswordFormManager> | 228 std::unique_ptr<password_manager::PasswordFormManager> |
| 228 ManagePasswordsUIControllerTest::CreateFormManagerWithBestMatches( | 229 ManagePasswordsUIControllerTest::CreateFormManagerWithBestMatches( |
| 229 const autofill::PasswordForm& observed_form, | 230 const autofill::PasswordForm& observed_form, |
| 230 ScopedVector<autofill::PasswordForm> best_matches) { | 231 ScopedVector<autofill::PasswordForm> best_matches) { |
| 231 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 232 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 232 new password_manager::PasswordFormManager(&password_manager_, &client_, | 233 new password_manager::PasswordFormManager(&password_manager_, &client_, |
| 233 driver_.AsWeakPtr(), | 234 driver_.AsWeakPtr(), |
| 234 observed_form, true)); | 235 observed_form, true)); |
| 235 test_form_manager->SimulateFetchMatchingLoginsFromPasswordStore(); | 236 test_form_manager->SimulateFetchMatchingLoginsFromPasswordStore(); |
| 236 test_form_manager->OnGetPasswordStoreResults(std::move(best_matches)); | 237 test_form_manager->OnGetPasswordStoreResults(std::move(best_matches)); |
| 237 return test_form_manager; | 238 return test_form_manager; |
| 238 } | 239 } |
| 239 | 240 |
| 240 scoped_ptr<password_manager::PasswordFormManager> | 241 std::unique_ptr<password_manager::PasswordFormManager> |
| 241 ManagePasswordsUIControllerTest::CreateFormManager() { | 242 ManagePasswordsUIControllerTest::CreateFormManager() { |
| 242 ScopedVector<autofill::PasswordForm> stored_forms; | 243 ScopedVector<autofill::PasswordForm> stored_forms; |
| 243 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); | 244 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); |
| 244 return CreateFormManagerWithBestMatches(test_local_form(), | 245 return CreateFormManagerWithBestMatches(test_local_form(), |
| 245 std::move(stored_forms)); | 246 std::move(stored_forms)); |
| 246 } | 247 } |
| 247 | 248 |
| 248 void ManagePasswordsUIControllerTest::TestNotChangingStateOnAutofill( | 249 void ManagePasswordsUIControllerTest::TestNotChangingStateOnAutofill( |
| 249 password_manager::ui::State state) { | 250 password_manager::ui::State state) { |
| 250 DCHECK(state == password_manager::ui::PENDING_PASSWORD_STATE || | 251 DCHECK(state == password_manager::ui::PENDING_PASSWORD_STATE || |
| 251 state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || | 252 state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || |
| 252 state == password_manager::ui::CONFIRMATION_STATE); | 253 state == password_manager::ui::CONFIRMATION_STATE); |
| 253 | 254 |
| 254 // Set the bubble state to |state|. | 255 // Set the bubble state to |state|. |
| 255 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 256 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 256 CreateFormManager()); | 257 CreateFormManager()); |
| 257 test_form_manager->ProvisionallySave( | 258 test_form_manager->ProvisionallySave( |
| 258 test_local_form(), | 259 test_local_form(), |
| 259 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 260 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 260 if (state == password_manager::ui::PENDING_PASSWORD_STATE) | 261 if (state == password_manager::ui::PENDING_PASSWORD_STATE) |
| 261 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 262 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 262 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) | 263 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) |
| 263 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 264 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
| 264 else // password_manager::ui::CONFIRMATION_STATE | 265 else // password_manager::ui::CONFIRMATION_STATE |
| 265 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); | 266 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); |
| 266 ASSERT_EQ(state, controller()->GetState()); | 267 ASSERT_EQ(state, controller()->GetState()); |
| 267 | 268 |
| 268 // Autofill happens. | 269 // Autofill happens. |
| 269 scoped_ptr<autofill::PasswordForm> test_form( | 270 std::unique_ptr<autofill::PasswordForm> test_form( |
| 270 new autofill::PasswordForm(test_local_form())); | 271 new autofill::PasswordForm(test_local_form())); |
| 271 autofill::PasswordFormMap map; | 272 autofill::PasswordFormMap map; |
| 272 map.insert( | 273 map.insert( |
| 273 std::make_pair(test_local_form().username_value, std::move(test_form))); | 274 std::make_pair(test_local_form().username_value, std::move(test_form))); |
| 274 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 275 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
| 275 | 276 |
| 276 // State shouldn't changed. | 277 // State shouldn't changed. |
| 277 EXPECT_EQ(state, controller()->GetState()); | 278 EXPECT_EQ(state, controller()->GetState()); |
| 278 ExpectIconStateIs(state); | 279 ExpectIconStateIs(state); |
| 279 } | 280 } |
| 280 | 281 |
| 281 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { | 282 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { |
| 282 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 283 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 283 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); | 284 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 284 | 285 |
| 285 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 286 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| 286 } | 287 } |
| 287 | 288 |
| 288 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { | 289 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { |
| 289 scoped_ptr<autofill::PasswordForm> test_form( | 290 std::unique_ptr<autofill::PasswordForm> test_form( |
| 290 new autofill::PasswordForm(test_local_form())); | 291 new autofill::PasswordForm(test_local_form())); |
| 291 autofill::PasswordForm* test_form_ptr = test_form.get(); | 292 autofill::PasswordForm* test_form_ptr = test_form.get(); |
| 292 base::string16 kTestUsername = test_form->username_value; | 293 base::string16 kTestUsername = test_form->username_value; |
| 293 autofill::PasswordFormMap map; | 294 autofill::PasswordFormMap map; |
| 294 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 295 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
| 295 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 296 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
| 296 | 297 |
| 297 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 298 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 298 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); | 299 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); |
| 299 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); | 300 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
| 300 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); | 301 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
| 301 | 302 |
| 302 // Controller should store a separate copy of the form as it doesn't own it. | 303 // Controller should store a separate copy of the form as it doesn't own it. |
| 303 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); | 304 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); |
| 304 | 305 |
| 305 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 306 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 306 } | 307 } |
| 307 | 308 |
| 308 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 309 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
| 309 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 310 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 310 CreateFormManager()); | 311 CreateFormManager()); |
| 311 test_form_manager->ProvisionallySave( | 312 test_form_manager->ProvisionallySave( |
| 312 test_local_form(), | 313 test_local_form(), |
| 313 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 314 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 314 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 315 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 315 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 316 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 316 controller()->GetState()); | 317 controller()->GetState()); |
| 317 EXPECT_TRUE(controller()->opened_bubble()); | 318 EXPECT_TRUE(controller()->opened_bubble()); |
| 318 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 319 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
| 319 | 320 |
| 320 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 321 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 321 } | 322 } |
| 322 | 323 |
| 323 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { | 324 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { |
| 324 autofill::PasswordForm blacklisted; | 325 autofill::PasswordForm blacklisted; |
| 325 blacklisted.origin = test_local_form().origin; | 326 blacklisted.origin = test_local_form().origin; |
| 326 blacklisted.signon_realm = blacklisted.origin.spec(); | 327 blacklisted.signon_realm = blacklisted.origin.spec(); |
| 327 blacklisted.blacklisted_by_user = true; | 328 blacklisted.blacklisted_by_user = true; |
| 328 ScopedVector<autofill::PasswordForm> stored_forms; | 329 ScopedVector<autofill::PasswordForm> stored_forms; |
| 329 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); | 330 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); |
| 330 scoped_ptr<password_manager::PasswordFormManager> test_form_manager = | 331 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager = |
| 331 CreateFormManagerWithBestMatches(test_local_form(), | 332 CreateFormManagerWithBestMatches(test_local_form(), |
| 332 std::move(stored_forms)); | 333 std::move(stored_forms)); |
| 333 | 334 |
| 334 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 335 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 335 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 336 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 336 controller()->GetState()); | 337 controller()->GetState()); |
| 337 EXPECT_FALSE(controller()->opened_bubble()); | 338 EXPECT_FALSE(controller()->opened_bubble()); |
| 338 | 339 |
| 339 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 340 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 340 } | 341 } |
| 341 | 342 |
| 342 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { | 343 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { |
| 343 CreateSmartBubbleFieldTrial(); | 344 CreateSmartBubbleFieldTrial(); |
| 344 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 345 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 345 CreateFormManager()); | 346 CreateFormManager()); |
| 346 password_manager::InteractionsStats stats; | 347 password_manager::InteractionsStats stats; |
| 347 stats.origin_domain = test_local_form().origin.GetOrigin(); | 348 stats.origin_domain = test_local_form().origin.GetOrigin(); |
| 348 stats.username_value = test_local_form().username_value; | 349 stats.username_value = test_local_form().username_value; |
| 349 stats.dismissal_count = kGreatDissmisalCount; | 350 stats.dismissal_count = kGreatDissmisalCount; |
| 350 auto interactions(make_scoped_ptr( | 351 auto interactions(base::WrapUnique( |
| 351 new std::vector<scoped_ptr<password_manager::InteractionsStats>>)); | 352 new std::vector<std::unique_ptr<password_manager::InteractionsStats>>)); |
| 352 interactions->push_back( | 353 interactions->push_back( |
| 353 make_scoped_ptr(new password_manager::InteractionsStats(stats))); | 354 base::WrapUnique(new password_manager::InteractionsStats(stats))); |
| 354 test_form_manager->OnGetSiteStatistics(std::move(interactions)); | 355 test_form_manager->OnGetSiteStatistics(std::move(interactions)); |
| 355 test_form_manager->ProvisionallySave( | 356 test_form_manager->ProvisionallySave( |
| 356 test_local_form(), | 357 test_local_form(), |
| 357 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 358 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 358 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 359 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 359 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 360 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 360 controller()->GetState()); | 361 controller()->GetState()); |
| 361 EXPECT_FALSE(controller()->opened_bubble()); | 362 EXPECT_FALSE(controller()->opened_bubble()); |
| 362 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); | 363 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); |
| 363 EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); | 364 EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); |
| 364 | 365 |
| 365 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 366 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 366 variations::testing::ClearAllVariationParams(); | 367 variations::testing::ClearAllVariationParams(); |
| 367 } | 368 } |
| 368 | 369 |
| 369 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { | 370 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { |
| 370 CreateSmartBubbleFieldTrial(); | 371 CreateSmartBubbleFieldTrial(); |
| 371 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 372 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 372 CreateFormManager()); | 373 CreateFormManager()); |
| 373 password_manager::InteractionsStats stats; | 374 password_manager::InteractionsStats stats; |
| 374 stats.origin_domain = test_local_form().origin.GetOrigin(); | 375 stats.origin_domain = test_local_form().origin.GetOrigin(); |
| 375 stats.username_value = base::ASCIIToUTF16("not my username"); | 376 stats.username_value = base::ASCIIToUTF16("not my username"); |
| 376 stats.dismissal_count = kGreatDissmisalCount; | 377 stats.dismissal_count = kGreatDissmisalCount; |
| 377 auto interactions(make_scoped_ptr( | 378 auto interactions(base::WrapUnique( |
| 378 new std::vector<scoped_ptr<password_manager::InteractionsStats>>)); | 379 new std::vector<std::unique_ptr<password_manager::InteractionsStats>>)); |
| 379 interactions->push_back( | 380 interactions->push_back( |
| 380 make_scoped_ptr(new password_manager::InteractionsStats(stats))); | 381 base::WrapUnique(new password_manager::InteractionsStats(stats))); |
| 381 test_form_manager->OnGetSiteStatistics(std::move(interactions)); | 382 test_form_manager->OnGetSiteStatistics(std::move(interactions)); |
| 382 test_form_manager->ProvisionallySave( | 383 test_form_manager->ProvisionallySave( |
| 383 test_local_form(), | 384 test_local_form(), |
| 384 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 385 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 385 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 386 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 386 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 387 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 387 controller()->GetState()); | 388 controller()->GetState()); |
| 388 EXPECT_TRUE(controller()->opened_bubble()); | 389 EXPECT_TRUE(controller()->opened_bubble()); |
| 389 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); | 390 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); |
| 390 | 391 |
| 391 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 392 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 392 variations::testing::ClearAllVariationParams(); | 393 variations::testing::ClearAllVariationParams(); |
| 393 } | 394 } |
| 394 | 395 |
| 395 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { | 396 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { |
| 396 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 397 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 397 CreateFormManager()); | 398 CreateFormManager()); |
| 398 test_form_manager->ProvisionallySave( | 399 test_form_manager->ProvisionallySave( |
| 399 test_local_form(), | 400 test_local_form(), |
| 400 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 401 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 401 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 402 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 402 | 403 |
| 403 controller()->SavePassword(); | 404 controller()->SavePassword(); |
| 404 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 405 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 405 } | 406 } |
| 406 | 407 |
| 407 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { | 408 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { |
| 408 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 409 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 409 CreateFormManager()); | 410 CreateFormManager()); |
| 410 test_form_manager->ProvisionallySave( | 411 test_form_manager->ProvisionallySave( |
| 411 test_local_form(), | 412 test_local_form(), |
| 412 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 413 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 413 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 414 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 414 | 415 |
| 415 controller()->NeverSavePassword(); | 416 controller()->NeverSavePassword(); |
| 416 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 417 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 417 } | 418 } |
| 418 | 419 |
| 419 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { | 420 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { |
| 420 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 421 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 421 CreateFormManager()); | 422 CreateFormManager()); |
| 422 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 423 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 423 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 424 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 424 | 425 |
| 425 // Fake-navigate. We expect the bubble's state to persist so a user reasonably | 426 // Fake-navigate. We expect the bubble's state to persist so a user reasonably |
| 426 // has been able to interact with the bubble. This happens on | 427 // has been able to interact with the bubble. This happens on |
| 427 // `accounts.google.com`, for instance. | 428 // `accounts.google.com`, for instance. |
| 428 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 429 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
| 429 content::FrameNavigateParams()); | 430 content::FrameNavigateParams()); |
| 430 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 431 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 431 controller()->GetState()); | 432 controller()->GetState()); |
| 432 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 433 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
| 433 } | 434 } |
| 434 | 435 |
| 435 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) { | 436 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) { |
| 436 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 437 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 437 CreateFormManager()); | 438 CreateFormManager()); |
| 438 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 439 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 439 controller()->SavePassword(); | 440 controller()->SavePassword(); |
| 440 controller()->OnBubbleHidden(); | 441 controller()->OnBubbleHidden(); |
| 441 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 442 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 442 | 443 |
| 443 // Fake-navigate. There is no bubble, reset the state. | 444 // Fake-navigate. There is no bubble, reset the state. |
| 444 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 445 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
| 445 content::FrameNavigateParams()); | 446 content::FrameNavigateParams()); |
| 446 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 447 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 447 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 448 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| 448 } | 449 } |
| 449 | 450 |
| 450 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { | 451 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { |
| 451 // Navigate to a non-webby URL, then see what happens! | 452 // Navigate to a non-webby URL, then see what happens! |
| 452 content::WebContentsTester::For(web_contents()) | 453 content::WebContentsTester::For(web_contents()) |
| 453 ->NavigateAndCommit(GURL("chrome://sign-in")); | 454 ->NavigateAndCommit(GURL("chrome://sign-in")); |
| 454 | 455 |
| 455 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 456 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 456 CreateFormManager()); | 457 CreateFormManager()); |
| 457 test_form_manager->ProvisionallySave( | 458 test_form_manager->ProvisionallySave( |
| 458 test_local_form(), | 459 test_local_form(), |
| 459 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 460 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 460 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 461 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
| 461 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 462 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 462 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); | 463 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
| 463 | 464 |
| 464 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 465 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
| 465 } | 466 } |
| 466 | 467 |
| 467 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { | 468 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { |
| 468 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 469 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
| 469 autofill::PasswordFormMap map; | 470 autofill::PasswordFormMap map; |
| 470 map.insert(std::make_pair( | 471 map.insert(std::make_pair( |
| 471 kTestUsername, | 472 kTestUsername, |
| 472 make_scoped_ptr(new autofill::PasswordForm(test_local_form())))); | 473 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); |
| 473 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 474 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
| 474 | 475 |
| 475 test_local_form().blacklisted_by_user = true; | 476 test_local_form().blacklisted_by_user = true; |
| 476 password_manager::PasswordStoreChange change( | 477 password_manager::PasswordStoreChange change( |
| 477 password_manager::PasswordStoreChange::ADD, test_local_form()); | 478 password_manager::PasswordStoreChange::ADD, test_local_form()); |
| 478 password_manager::PasswordStoreChangeList list(1, change); | 479 password_manager::PasswordStoreChangeList list(1, change); |
| 479 controller()->OnLoginsChanged(list); | 480 controller()->OnLoginsChanged(list); |
| 480 | 481 |
| 481 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 482 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 482 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 483 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
| 483 | 484 |
| 484 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 485 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 485 } | 486 } |
| 486 | 487 |
| 487 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { | 488 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
| 488 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 489 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 489 CreateFormManager()); | 490 CreateFormManager()); |
| 490 | 491 |
| 491 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); | 492 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); |
| 492 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); | 493 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); |
| 493 | 494 |
| 494 controller()->OnBubbleHidden(); | 495 controller()->OnBubbleHidden(); |
| 495 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 496 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 496 } | 497 } |
| 497 | 498 |
| 498 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { | 499 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 600 Return(&dialog_prompt())); | 601 Return(&dialog_prompt())); |
| 601 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); | 602 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); |
| 602 controller()->OnPromptEnableAutoSignin(); | 603 controller()->OnPromptEnableAutoSignin(); |
| 603 | 604 |
| 604 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 605 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 605 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 606 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
| 606 } | 607 } |
| 607 | 608 |
| 608 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterAutofill) { | 609 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterAutofill) { |
| 609 // Setup the managed state first. | 610 // Setup the managed state first. |
| 610 scoped_ptr<autofill::PasswordForm> test_form( | 611 std::unique_ptr<autofill::PasswordForm> test_form( |
| 611 new autofill::PasswordForm(test_local_form())); | 612 new autofill::PasswordForm(test_local_form())); |
| 612 autofill::PasswordForm* test_form_ptr = test_form.get(); | 613 autofill::PasswordForm* test_form_ptr = test_form.get(); |
| 613 const base::string16 kTestUsername = test_form->username_value; | 614 const base::string16 kTestUsername = test_form->username_value; |
| 614 autofill::PasswordFormMap map; | 615 autofill::PasswordFormMap map; |
| 615 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 616 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
| 616 controller()->OnPasswordAutofilled(map, test_form_ptr->origin, nullptr); | 617 controller()->OnPasswordAutofilled(map, test_form_ptr->origin, nullptr); |
| 617 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 618 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
| 618 | 619 |
| 619 // Pop up the autosignin promo. The state should stay intact. | 620 // Pop up the autosignin promo. The state should stay intact. |
| 620 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( | 621 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 644 ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&dialog_prompt())); | 645 ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&dialog_prompt())); |
| 645 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 646 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
| 646 } | 647 } |
| 647 | 648 |
| 648 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { | 649 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { |
| 649 ScopedVector<autofill::PasswordForm> local_credentials; | 650 ScopedVector<autofill::PasswordForm> local_credentials; |
| 650 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 651 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| 651 controller()->OnAutoSignin(std::move(local_credentials), | 652 controller()->OnAutoSignin(std::move(local_credentials), |
| 652 test_local_form().origin); | 653 test_local_form().origin); |
| 653 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 654 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
| 654 scoped_ptr<autofill::PasswordForm> test_form( | 655 std::unique_ptr<autofill::PasswordForm> test_form( |
| 655 new autofill::PasswordForm(test_local_form())); | 656 new autofill::PasswordForm(test_local_form())); |
| 656 autofill::PasswordFormMap map; | 657 autofill::PasswordFormMap map; |
| 657 base::string16 kTestUsername = test_form->username_value; | 658 base::string16 kTestUsername = test_form->username_value; |
| 658 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 659 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
| 659 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 660 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
| 660 | 661 |
| 661 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 662 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
| 662 } | 663 } |
| 663 | 664 |
| 664 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 665 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
| 665 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 666 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
| 666 autofill::PasswordFormMap map; | 667 autofill::PasswordFormMap map; |
| 667 scoped_ptr<autofill::PasswordForm> psl_matched_test_form( | 668 std::unique_ptr<autofill::PasswordForm> psl_matched_test_form( |
| 668 new autofill::PasswordForm(test_local_form())); | 669 new autofill::PasswordForm(test_local_form())); |
| 669 psl_matched_test_form->is_public_suffix_match = true; | 670 psl_matched_test_form->is_public_suffix_match = true; |
| 670 map.insert(std::make_pair(kTestUsername, std::move(psl_matched_test_form))); | 671 map.insert(std::make_pair(kTestUsername, std::move(psl_matched_test_form))); |
| 671 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 672 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
| 672 | 673 |
| 673 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 674 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
| 674 } | 675 } |
| 675 | 676 |
| 676 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { | 677 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { |
| 677 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 678 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 678 CreateFormManager()); | 679 CreateFormManager()); |
| 679 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 680 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
| 680 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 681 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
| 681 controller()->GetState()); | 682 controller()->GetState()); |
| 682 | 683 |
| 683 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 684 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 684 } | 685 } |
| 685 | 686 |
| 686 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { | 687 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { |
| 687 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 688 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 688 CreateFormManager()); | 689 CreateFormManager()); |
| 689 test_form_manager->ProvisionallySave( | 690 test_form_manager->ProvisionallySave( |
| 690 test_local_form(), | 691 test_local_form(), |
| 691 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 692 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 692 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 693 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
| 693 | 694 |
| 694 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 695 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 695 controller()->UpdatePassword(autofill::PasswordForm()); | 696 controller()->UpdatePassword(autofill::PasswordForm()); |
| 696 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 697 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
| 697 } | 698 } |
| 698 | 699 |
| 699 TEST_F(ManagePasswordsUIControllerTest, SavePendingStatePasswordAutofilled) { | 700 TEST_F(ManagePasswordsUIControllerTest, SavePendingStatePasswordAutofilled) { |
| 700 TestNotChangingStateOnAutofill(password_manager::ui::PENDING_PASSWORD_STATE); | 701 TestNotChangingStateOnAutofill(password_manager::ui::PENDING_PASSWORD_STATE); |
| 701 } | 702 } |
| 702 | 703 |
| 703 TEST_F(ManagePasswordsUIControllerTest, UpdatePendingStatePasswordAutofilled) { | 704 TEST_F(ManagePasswordsUIControllerTest, UpdatePendingStatePasswordAutofilled) { |
| 704 TestNotChangingStateOnAutofill( | 705 TestNotChangingStateOnAutofill( |
| 705 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 706 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 706 } | 707 } |
| 707 | 708 |
| 708 TEST_F(ManagePasswordsUIControllerTest, ConfirmationStatePasswordAutofilled) { | 709 TEST_F(ManagePasswordsUIControllerTest, ConfirmationStatePasswordAutofilled) { |
| 709 TestNotChangingStateOnAutofill(password_manager::ui::CONFIRMATION_STATE); | 710 TestNotChangingStateOnAutofill(password_manager::ui::CONFIRMATION_STATE); |
| 710 } | 711 } |
| OLD | NEW |