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 <memory> |
6 #include <utility> | 6 #include <utility> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 content::WebContents* contents, | 83 content::WebContents* contents, |
84 password_manager::PasswordManagerClient* client); | 84 password_manager::PasswordManagerClient* client); |
85 ~TestManagePasswordsUIController() override; | 85 ~TestManagePasswordsUIController() override; |
86 | 86 |
87 bool opened_bubble() const { return opened_bubble_; } | 87 bool opened_bubble() const { return opened_bubble_; } |
88 | 88 |
89 MOCK_METHOD1(CreateAccountChooser, | 89 MOCK_METHOD1(CreateAccountChooser, |
90 AccountChooserPrompt*(PasswordDialogController*)); | 90 AccountChooserPrompt*(PasswordDialogController*)); |
91 MOCK_METHOD1(CreateAutoSigninPrompt, | 91 MOCK_METHOD1(CreateAutoSigninPrompt, |
92 AutoSigninFirstRunPrompt*(PasswordDialogController*)); | 92 AutoSigninFirstRunPrompt*(PasswordDialogController*)); |
| 93 MOCK_METHOD0(OnUpdateBubbleAndIconVisibility, void()); |
93 using ManagePasswordsUIController::DidNavigateMainFrame; | 94 using ManagePasswordsUIController::DidNavigateMainFrame; |
94 | 95 |
95 private: | 96 private: |
96 void UpdateBubbleAndIconVisibility() override; | 97 void UpdateBubbleAndIconVisibility() override; |
97 void SavePasswordInternal() override {} | 98 void SavePasswordInternal() override {} |
98 void UpdatePasswordInternal( | 99 void UpdatePasswordInternal( |
99 const autofill::PasswordForm& password_form) override {} | 100 const autofill::PasswordForm& password_form) override {} |
100 void NeverSavePasswordInternal() override; | 101 void NeverSavePasswordInternal() override; |
101 | 102 |
102 bool opened_bubble_; | 103 bool opened_bubble_; |
103 }; | 104 }; |
104 | 105 |
105 TestManagePasswordsUIController::TestManagePasswordsUIController( | 106 TestManagePasswordsUIController::TestManagePasswordsUIController( |
106 content::WebContents* contents, | 107 content::WebContents* contents, |
107 password_manager::PasswordManagerClient* client) | 108 password_manager::PasswordManagerClient* client) |
108 : ManagePasswordsUIController(contents) { | 109 : ManagePasswordsUIController(contents) { |
109 // Do not silently replace an existing ManagePasswordsUIController because it | 110 // Do not silently replace an existing ManagePasswordsUIController because it |
110 // unregisters itself in WebContentsDestroyed(). | 111 // unregisters itself in WebContentsDestroyed(). |
111 EXPECT_FALSE(contents->GetUserData(UserDataKey())); | 112 EXPECT_FALSE(contents->GetUserData(UserDataKey())); |
112 contents->SetUserData(UserDataKey(), this); | 113 contents->SetUserData(UserDataKey(), this); |
113 set_client(client); | 114 set_client(client); |
114 } | 115 } |
115 | 116 |
116 TestManagePasswordsUIController::~TestManagePasswordsUIController() { | 117 TestManagePasswordsUIController::~TestManagePasswordsUIController() { |
117 } | 118 } |
118 | 119 |
119 void TestManagePasswordsUIController::UpdateBubbleAndIconVisibility() { | 120 void TestManagePasswordsUIController::UpdateBubbleAndIconVisibility() { |
120 opened_bubble_ = IsAutomaticallyOpeningBubble(); | 121 opened_bubble_ = IsAutomaticallyOpeningBubble(); |
121 ManagePasswordsUIController::UpdateBubbleAndIconVisibility(); | 122 ManagePasswordsUIController::UpdateBubbleAndIconVisibility(); |
| 123 OnUpdateBubbleAndIconVisibility(); |
122 if (opened_bubble_) | 124 if (opened_bubble_) |
123 OnBubbleShown(); | 125 OnBubbleShown(); |
124 } | 126 } |
125 | 127 |
126 void TestManagePasswordsUIController::NeverSavePasswordInternal() { | 128 void TestManagePasswordsUIController::NeverSavePasswordInternal() { |
127 autofill::PasswordForm blacklisted; | 129 autofill::PasswordForm blacklisted; |
128 blacklisted.origin = this->GetOrigin(); | 130 blacklisted.origin = this->GetOrigin(); |
129 blacklisted.signon_realm = blacklisted.origin.spec(); | 131 blacklisted.signon_realm = blacklisted.origin.spec(); |
130 blacklisted.blacklisted_by_user = true; | 132 blacklisted.blacklisted_by_user = true; |
131 password_manager::PasswordStoreChange change( | 133 password_manager::PasswordStoreChange change( |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 test_local_form_.origin = GURL("http://example.com/login"); | 203 test_local_form_.origin = GURL("http://example.com/login"); |
202 test_local_form_.username_value = base::ASCIIToUTF16("username"); | 204 test_local_form_.username_value = base::ASCIIToUTF16("username"); |
203 test_local_form_.password_value = base::ASCIIToUTF16("12345"); | 205 test_local_form_.password_value = base::ASCIIToUTF16("12345"); |
204 | 206 |
205 test_federated_form_.origin = GURL("http://example.com/login"); | 207 test_federated_form_.origin = GURL("http://example.com/login"); |
206 test_federated_form_.username_value = base::ASCIIToUTF16("username"); | 208 test_federated_form_.username_value = base::ASCIIToUTF16("username"); |
207 test_federated_form_.federation_origin = | 209 test_federated_form_.federation_origin = |
208 url::Origin(GURL("https://federation.test/")); | 210 url::Origin(GURL("https://federation.test/")); |
209 | 211 |
210 // We need to be on a "webby" URL for most tests. | 212 // We need to be on a "webby" URL for most tests. |
| 213 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
211 content::WebContentsTester::For(web_contents()) | 214 content::WebContentsTester::For(web_contents()) |
212 ->NavigateAndCommit(GURL("http://example.com")); | 215 ->NavigateAndCommit(GURL("http://example.com")); |
213 } | 216 } |
214 | 217 |
215 void ManagePasswordsUIControllerTest::ExpectIconStateIs( | 218 void ManagePasswordsUIControllerTest::ExpectIconStateIs( |
216 password_manager::ui::State state) { | 219 password_manager::ui::State state) { |
217 TestManagePasswordsIconView view; | 220 TestManagePasswordsIconView view; |
218 controller()->UpdateIconAndBubbleState(&view); | 221 controller()->UpdateIconAndBubbleState(&view); |
219 EXPECT_EQ(state, view.state()); | 222 EXPECT_EQ(state, view.state()); |
220 } | 223 } |
(...skipping 30 matching lines...) Expand all Loading... |
251 DCHECK(state == password_manager::ui::PENDING_PASSWORD_STATE || | 254 DCHECK(state == password_manager::ui::PENDING_PASSWORD_STATE || |
252 state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || | 255 state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || |
253 state == password_manager::ui::CONFIRMATION_STATE); | 256 state == password_manager::ui::CONFIRMATION_STATE); |
254 | 257 |
255 // Set the bubble state to |state|. | 258 // Set the bubble state to |state|. |
256 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 259 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
257 CreateFormManager()); | 260 CreateFormManager()); |
258 test_form_manager->ProvisionallySave( | 261 test_form_manager->ProvisionallySave( |
259 test_local_form(), | 262 test_local_form(), |
260 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 263 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 264 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
261 if (state == password_manager::ui::PENDING_PASSWORD_STATE) | 265 if (state == password_manager::ui::PENDING_PASSWORD_STATE) |
262 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 266 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
263 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) | 267 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) |
264 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 268 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
265 else // password_manager::ui::CONFIRMATION_STATE | 269 else // password_manager::ui::CONFIRMATION_STATE |
266 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); | 270 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); |
267 ASSERT_EQ(state, controller()->GetState()); | 271 ASSERT_EQ(state, controller()->GetState()); |
268 | 272 |
269 // Autofill happens. | 273 // Autofill happens. |
270 std::unique_ptr<autofill::PasswordForm> test_form( | 274 std::unique_ptr<autofill::PasswordForm> test_form( |
(...skipping 15 matching lines...) Expand all Loading... |
286 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 290 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
287 } | 291 } |
288 | 292 |
289 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { | 293 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { |
290 std::unique_ptr<autofill::PasswordForm> test_form( | 294 std::unique_ptr<autofill::PasswordForm> test_form( |
291 new autofill::PasswordForm(test_local_form())); | 295 new autofill::PasswordForm(test_local_form())); |
292 autofill::PasswordForm* test_form_ptr = test_form.get(); | 296 autofill::PasswordForm* test_form_ptr = test_form.get(); |
293 base::string16 kTestUsername = test_form->username_value; | 297 base::string16 kTestUsername = test_form->username_value; |
294 autofill::PasswordFormMap map; | 298 autofill::PasswordFormMap map; |
295 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 299 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
| 300 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
296 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 301 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
297 | 302 |
298 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 303 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
299 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); | 304 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); |
300 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); | 305 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
301 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); | 306 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
302 | 307 |
303 // Controller should store a separate copy of the form as it doesn't own it. | 308 // Controller should store a separate copy of the form as it doesn't own it. |
304 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); | 309 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]); |
305 | 310 |
306 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 311 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
307 } | 312 } |
308 | 313 |
309 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 314 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
310 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 315 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
311 CreateFormManager()); | 316 CreateFormManager()); |
312 test_form_manager->ProvisionallySave( | 317 test_form_manager->ProvisionallySave( |
313 test_local_form(), | 318 test_local_form(), |
314 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 319 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 320 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
315 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 321 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
316 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 322 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
317 controller()->GetState()); | 323 controller()->GetState()); |
318 EXPECT_TRUE(controller()->opened_bubble()); | 324 EXPECT_TRUE(controller()->opened_bubble()); |
319 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 325 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
320 | 326 |
321 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 327 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
322 } | 328 } |
323 | 329 |
324 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { | 330 TEST_F(ManagePasswordsUIControllerTest, BlacklistedFormPasswordSubmitted) { |
325 autofill::PasswordForm blacklisted; | 331 autofill::PasswordForm blacklisted; |
326 blacklisted.origin = test_local_form().origin; | 332 blacklisted.origin = test_local_form().origin; |
327 blacklisted.signon_realm = blacklisted.origin.spec(); | 333 blacklisted.signon_realm = blacklisted.origin.spec(); |
328 blacklisted.blacklisted_by_user = true; | 334 blacklisted.blacklisted_by_user = true; |
329 ScopedVector<autofill::PasswordForm> stored_forms; | 335 ScopedVector<autofill::PasswordForm> stored_forms; |
330 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); | 336 stored_forms.push_back(new autofill::PasswordForm(blacklisted)); |
331 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager = | 337 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager = |
332 CreateFormManagerWithBestMatches(test_local_form(), | 338 CreateFormManagerWithBestMatches(test_local_form(), |
333 std::move(stored_forms)); | 339 std::move(stored_forms)); |
334 | 340 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
335 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 341 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
336 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 342 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
337 controller()->GetState()); | 343 controller()->GetState()); |
338 EXPECT_FALSE(controller()->opened_bubble()); | 344 EXPECT_FALSE(controller()->opened_bubble()); |
339 | 345 |
340 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 346 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
341 } | 347 } |
342 | 348 |
343 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { | 349 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleSuppressed) { |
344 CreateSmartBubbleFieldTrial(); | 350 CreateSmartBubbleFieldTrial(); |
345 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 351 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
346 CreateFormManager()); | 352 CreateFormManager()); |
347 password_manager::InteractionsStats stats; | 353 password_manager::InteractionsStats stats; |
348 stats.origin_domain = test_local_form().origin.GetOrigin(); | 354 stats.origin_domain = test_local_form().origin.GetOrigin(); |
349 stats.username_value = test_local_form().username_value; | 355 stats.username_value = test_local_form().username_value; |
350 stats.dismissal_count = kGreatDissmisalCount; | 356 stats.dismissal_count = kGreatDissmisalCount; |
351 auto interactions(base::WrapUnique( | 357 auto interactions(base::WrapUnique( |
352 new std::vector<std::unique_ptr<password_manager::InteractionsStats>>)); | 358 new std::vector<std::unique_ptr<password_manager::InteractionsStats>>)); |
353 interactions->push_back( | 359 interactions->push_back( |
354 base::WrapUnique(new password_manager::InteractionsStats(stats))); | 360 base::WrapUnique(new password_manager::InteractionsStats(stats))); |
355 test_form_manager->OnGetSiteStatistics(std::move(interactions)); | 361 test_form_manager->OnGetSiteStatistics(std::move(interactions)); |
356 test_form_manager->ProvisionallySave( | 362 test_form_manager->ProvisionallySave( |
357 test_local_form(), | 363 test_local_form(), |
358 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 364 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 365 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
359 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 366 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
360 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 367 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
361 controller()->GetState()); | 368 controller()->GetState()); |
362 EXPECT_FALSE(controller()->opened_bubble()); | 369 EXPECT_FALSE(controller()->opened_bubble()); |
363 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); | 370 ASSERT_TRUE(controller()->GetCurrentInteractionStats()); |
364 EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); | 371 EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); |
365 | 372 |
366 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 373 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
367 variations::testing::ClearAllVariationParams(); | 374 variations::testing::ClearAllVariationParams(); |
368 } | 375 } |
369 | 376 |
370 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { | 377 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedBubbleNotSuppressed) { |
371 CreateSmartBubbleFieldTrial(); | 378 CreateSmartBubbleFieldTrial(); |
372 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 379 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
373 CreateFormManager()); | 380 CreateFormManager()); |
374 password_manager::InteractionsStats stats; | 381 password_manager::InteractionsStats stats; |
375 stats.origin_domain = test_local_form().origin.GetOrigin(); | 382 stats.origin_domain = test_local_form().origin.GetOrigin(); |
376 stats.username_value = base::ASCIIToUTF16("not my username"); | 383 stats.username_value = base::ASCIIToUTF16("not my username"); |
377 stats.dismissal_count = kGreatDissmisalCount; | 384 stats.dismissal_count = kGreatDissmisalCount; |
378 auto interactions(base::WrapUnique( | 385 auto interactions(base::WrapUnique( |
379 new std::vector<std::unique_ptr<password_manager::InteractionsStats>>)); | 386 new std::vector<std::unique_ptr<password_manager::InteractionsStats>>)); |
380 interactions->push_back( | 387 interactions->push_back( |
381 base::WrapUnique(new password_manager::InteractionsStats(stats))); | 388 base::WrapUnique(new password_manager::InteractionsStats(stats))); |
382 test_form_manager->OnGetSiteStatistics(std::move(interactions)); | 389 test_form_manager->OnGetSiteStatistics(std::move(interactions)); |
383 test_form_manager->ProvisionallySave( | 390 test_form_manager->ProvisionallySave( |
384 test_local_form(), | 391 test_local_form(), |
385 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 392 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 393 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
386 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 394 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
387 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 395 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
388 controller()->GetState()); | 396 controller()->GetState()); |
389 EXPECT_TRUE(controller()->opened_bubble()); | 397 EXPECT_TRUE(controller()->opened_bubble()); |
390 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); | 398 EXPECT_FALSE(controller()->GetCurrentInteractionStats()); |
391 | 399 |
392 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 400 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
393 variations::testing::ClearAllVariationParams(); | 401 variations::testing::ClearAllVariationParams(); |
394 } | 402 } |
395 | 403 |
396 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { | 404 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { |
397 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 405 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
398 CreateFormManager()); | 406 CreateFormManager()); |
399 test_form_manager->ProvisionallySave( | 407 test_form_manager->ProvisionallySave( |
400 test_local_form(), | 408 test_local_form(), |
401 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 409 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 410 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
402 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 411 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
403 | 412 |
404 controller()->SavePassword(); | 413 controller()->SavePassword(); |
405 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 414 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
406 } | 415 } |
407 | 416 |
408 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { | 417 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { |
409 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 418 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
410 CreateFormManager()); | 419 CreateFormManager()); |
411 test_form_manager->ProvisionallySave( | 420 test_form_manager->ProvisionallySave( |
412 test_local_form(), | 421 test_local_form(), |
413 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 422 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 423 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
414 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 424 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
415 | 425 |
416 controller()->NeverSavePassword(); | 426 controller()->NeverSavePassword(); |
417 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 427 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
418 } | 428 } |
419 | 429 |
420 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { | 430 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { |
421 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 431 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
422 CreateFormManager()); | 432 CreateFormManager()); |
| 433 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
423 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 434 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
424 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 435 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
425 | 436 |
426 // Fake-navigate. We expect the bubble's state to persist so a user reasonably | 437 // Fake-navigate. We expect the bubble's state to persist so a user reasonably |
427 // has been able to interact with the bubble. This happens on | 438 // has been able to interact with the bubble. This happens on |
428 // `accounts.google.com`, for instance. | 439 // `accounts.google.com`, for instance. |
429 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 440 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
430 content::FrameNavigateParams()); | 441 content::FrameNavigateParams()); |
431 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 442 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
432 controller()->GetState()); | 443 controller()->GetState()); |
433 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); | 444 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); |
434 } | 445 } |
435 | 446 |
436 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) { | 447 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) { |
437 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 448 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
438 CreateFormManager()); | 449 CreateFormManager()); |
| 450 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
439 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 451 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
440 controller()->SavePassword(); | 452 controller()->SavePassword(); |
| 453 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
441 controller()->OnBubbleHidden(); | 454 controller()->OnBubbleHidden(); |
442 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 455 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
443 | 456 |
444 // Fake-navigate. There is no bubble, reset the state. | 457 // Fake-navigate. There is no bubble, reset the state. |
| 458 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
445 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 459 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
446 content::FrameNavigateParams()); | 460 content::FrameNavigateParams()); |
447 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 461 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
448 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 462 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
449 } | 463 } |
450 | 464 |
451 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { | 465 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { |
452 // Navigate to a non-webby URL, then see what happens! | 466 // Navigate to a non-webby URL, then see what happens! |
| 467 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
453 content::WebContentsTester::For(web_contents()) | 468 content::WebContentsTester::For(web_contents()) |
454 ->NavigateAndCommit(GURL("chrome://sign-in")); | 469 ->NavigateAndCommit(GURL("chrome://sign-in")); |
455 | 470 |
456 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 471 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
457 CreateFormManager()); | 472 CreateFormManager()); |
458 test_form_manager->ProvisionallySave( | 473 test_form_manager->ProvisionallySave( |
459 test_local_form(), | 474 test_local_form(), |
460 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 475 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 476 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
461 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 477 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
462 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 478 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
463 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); | 479 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
464 | 480 |
465 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 481 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
466 } | 482 } |
467 | 483 |
468 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { | 484 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { |
469 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 485 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
470 autofill::PasswordFormMap map; | 486 autofill::PasswordFormMap map; |
471 map.insert(std::make_pair( | 487 map.insert(std::make_pair( |
472 kTestUsername, | 488 kTestUsername, |
473 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); | 489 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); |
| 490 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
474 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 491 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
475 | 492 |
476 test_local_form().blacklisted_by_user = true; | 493 test_local_form().blacklisted_by_user = true; |
477 password_manager::PasswordStoreChange change( | 494 password_manager::PasswordStoreChange change( |
478 password_manager::PasswordStoreChange::ADD, test_local_form()); | 495 password_manager::PasswordStoreChange::ADD, test_local_form()); |
479 password_manager::PasswordStoreChangeList list(1, change); | 496 password_manager::PasswordStoreChangeList list(1, change); |
480 controller()->OnLoginsChanged(list); | 497 controller()->OnLoginsChanged(list); |
481 | 498 |
482 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 499 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
483 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 500 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
484 | 501 |
485 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 502 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
486 } | 503 } |
487 | 504 |
488 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { | 505 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
489 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 506 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
490 CreateFormManager()); | 507 CreateFormManager()); |
491 | 508 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
492 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); | 509 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); |
493 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); | 510 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); |
494 | 511 |
| 512 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
495 controller()->OnBubbleHidden(); | 513 controller()->OnBubbleHidden(); |
496 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 514 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
497 } | 515 } |
498 | 516 |
499 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { | 517 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { |
500 ScopedVector<autofill::PasswordForm> local_credentials; | 518 ScopedVector<autofill::PasswordForm> local_credentials; |
501 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 519 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
502 ScopedVector<autofill::PasswordForm> federated_credentials; | 520 ScopedVector<autofill::PasswordForm> federated_credentials; |
503 GURL origin("http://example.com"); | 521 GURL origin("http://example.com"); |
504 PasswordDialogController* dialog_controller = nullptr; | 522 PasswordDialogController* dialog_controller = nullptr; |
505 EXPECT_CALL(*controller(), CreateAccountChooser(_)).WillOnce( | 523 EXPECT_CALL(*controller(), CreateAccountChooser(_)).WillOnce( |
506 DoAll(SaveArg<0>(&dialog_controller), Return(&dialog_prompt()))); | 524 DoAll(SaveArg<0>(&dialog_controller), Return(&dialog_prompt()))); |
507 EXPECT_CALL(dialog_prompt(), ShowAccountChooser()); | 525 EXPECT_CALL(dialog_prompt(), ShowAccountChooser()); |
| 526 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
508 EXPECT_TRUE(controller()->OnChooseCredentials( | 527 EXPECT_TRUE(controller()->OnChooseCredentials( |
509 std::move(local_credentials), std::move(federated_credentials), origin, | 528 std::move(local_credentials), std::move(federated_credentials), origin, |
510 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 529 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
511 base::Unretained(this)))); | 530 base::Unretained(this)))); |
512 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 531 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
513 controller()->GetState()); | 532 controller()->GetState()); |
514 EXPECT_EQ(origin, controller()->GetOrigin()); | 533 EXPECT_EQ(origin, controller()->GetOrigin()); |
515 EXPECT_THAT(controller()->GetCurrentForms(), | 534 EXPECT_THAT(controller()->GetCurrentForms(), |
516 ElementsAre(Pointee(test_local_form()))); | 535 ElementsAre(Pointee(test_local_form()))); |
517 ASSERT_THAT(dialog_controller->GetLocalForms(), | 536 ASSERT_THAT(dialog_controller->GetLocalForms(), |
518 ElementsAre(Pointee(test_local_form()))); | 537 ElementsAre(Pointee(test_local_form()))); |
519 EXPECT_THAT(dialog_controller->GetFederationsForms(), testing::IsEmpty()); | 538 EXPECT_THAT(dialog_controller->GetFederationsForms(), testing::IsEmpty()); |
520 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 539 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
521 | 540 |
522 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 541 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
523 EXPECT_CALL(*this, CredentialCallback(Pointee(test_local_form()))); | 542 EXPECT_CALL(*this, CredentialCallback(Pointee(test_local_form()))); |
| 543 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
524 dialog_controller->OnChooseCredentials( | 544 dialog_controller->OnChooseCredentials( |
525 *dialog_controller->GetLocalForms()[0], | 545 *dialog_controller->GetLocalForms()[0], |
526 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); | 546 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); |
527 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 547 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
528 } | 548 } |
529 | 549 |
530 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { | 550 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { |
531 ScopedVector<autofill::PasswordForm> local_credentials; | 551 ScopedVector<autofill::PasswordForm> local_credentials; |
532 local_credentials.push_back( | 552 local_credentials.push_back( |
533 new autofill::PasswordForm(test_federated_form())); | 553 new autofill::PasswordForm(test_federated_form())); |
534 ScopedVector<autofill::PasswordForm> federated_credentials; | 554 ScopedVector<autofill::PasswordForm> federated_credentials; |
535 GURL origin("http://example.com"); | 555 GURL origin("http://example.com"); |
536 PasswordDialogController* dialog_controller = nullptr; | 556 PasswordDialogController* dialog_controller = nullptr; |
537 EXPECT_CALL(*controller(), CreateAccountChooser(_)).WillOnce( | 557 EXPECT_CALL(*controller(), CreateAccountChooser(_)).WillOnce( |
538 DoAll(SaveArg<0>(&dialog_controller), Return(&dialog_prompt()))); | 558 DoAll(SaveArg<0>(&dialog_controller), Return(&dialog_prompt()))); |
539 EXPECT_CALL(dialog_prompt(), ShowAccountChooser()); | 559 EXPECT_CALL(dialog_prompt(), ShowAccountChooser()); |
| 560 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
540 EXPECT_TRUE(controller()->OnChooseCredentials( | 561 EXPECT_TRUE(controller()->OnChooseCredentials( |
541 std::move(local_credentials), std::move(federated_credentials), origin, | 562 std::move(local_credentials), std::move(federated_credentials), origin, |
542 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 563 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
543 base::Unretained(this)))); | 564 base::Unretained(this)))); |
544 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 565 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
545 controller()->GetState()); | 566 controller()->GetState()); |
546 EXPECT_EQ(origin, controller()->GetOrigin()); | 567 EXPECT_EQ(origin, controller()->GetOrigin()); |
547 EXPECT_THAT(controller()->GetCurrentForms(), | 568 EXPECT_THAT(controller()->GetCurrentForms(), |
548 ElementsAre(Pointee(test_federated_form()))); | 569 ElementsAre(Pointee(test_federated_form()))); |
549 ASSERT_THAT(dialog_controller->GetLocalForms(), | 570 ASSERT_THAT(dialog_controller->GetLocalForms(), |
550 ElementsAre(Pointee(test_federated_form()))); | 571 ElementsAre(Pointee(test_federated_form()))); |
551 EXPECT_THAT(dialog_controller->GetFederationsForms(), testing::IsEmpty()); | 572 EXPECT_THAT(dialog_controller->GetFederationsForms(), testing::IsEmpty()); |
552 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 573 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
553 | 574 |
554 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 575 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
555 EXPECT_CALL(*this, CredentialCallback(Pointee(test_federated_form()))); | 576 EXPECT_CALL(*this, CredentialCallback(Pointee(test_federated_form()))); |
| 577 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
556 dialog_controller->OnChooseCredentials( | 578 dialog_controller->OnChooseCredentials( |
557 *dialog_controller->GetLocalForms()[0], | 579 *dialog_controller->GetLocalForms()[0], |
558 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); | 580 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); |
559 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 581 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
560 } | 582 } |
561 | 583 |
562 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { | 584 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { |
563 ScopedVector<autofill::PasswordForm> local_credentials; | 585 ScopedVector<autofill::PasswordForm> local_credentials; |
564 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 586 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
565 ScopedVector<autofill::PasswordForm> federated_credentials; | 587 ScopedVector<autofill::PasswordForm> federated_credentials; |
566 GURL origin("http://example.com"); | 588 GURL origin("http://example.com"); |
567 PasswordDialogController* dialog_controller = nullptr; | 589 PasswordDialogController* dialog_controller = nullptr; |
568 EXPECT_CALL(*controller(), CreateAccountChooser(_)).WillOnce( | 590 EXPECT_CALL(*controller(), CreateAccountChooser(_)).WillOnce( |
569 DoAll(SaveArg<0>(&dialog_controller), Return(&dialog_prompt()))); | 591 DoAll(SaveArg<0>(&dialog_controller), Return(&dialog_prompt()))); |
570 EXPECT_CALL(dialog_prompt(), ShowAccountChooser()); | 592 EXPECT_CALL(dialog_prompt(), ShowAccountChooser()); |
| 593 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
571 EXPECT_TRUE(controller()->OnChooseCredentials( | 594 EXPECT_TRUE(controller()->OnChooseCredentials( |
572 std::move(local_credentials), std::move(federated_credentials), origin, | 595 std::move(local_credentials), std::move(federated_credentials), origin, |
573 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 596 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
574 base::Unretained(this)))); | 597 base::Unretained(this)))); |
575 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 598 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
576 controller()->GetState()); | 599 controller()->GetState()); |
577 EXPECT_EQ(origin, controller()->GetOrigin()); | 600 EXPECT_EQ(origin, controller()->GetOrigin()); |
578 | 601 |
579 EXPECT_CALL(dialog_prompt(), ControllerGone()).Times(0); | 602 EXPECT_CALL(dialog_prompt(), ControllerGone()).Times(0); |
580 EXPECT_CALL(*this, CredentialCallback(nullptr)); | 603 EXPECT_CALL(*this, CredentialCallback(nullptr)); |
| 604 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
581 dialog_controller->OnCloseDialog(); | 605 dialog_controller->OnCloseDialog(); |
582 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 606 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
583 } | 607 } |
584 | 608 |
585 TEST_F(ManagePasswordsUIControllerTest, AutoSignin) { | 609 TEST_F(ManagePasswordsUIControllerTest, AutoSignin) { |
586 ScopedVector<autofill::PasswordForm> local_credentials; | 610 ScopedVector<autofill::PasswordForm> local_credentials; |
587 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 611 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| 612 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
588 controller()->OnAutoSignin(std::move(local_credentials), | 613 controller()->OnAutoSignin(std::move(local_credentials), |
589 test_local_form().origin); | 614 test_local_form().origin); |
590 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); | 615 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); |
591 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); | 616 EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); |
592 ASSERT_FALSE(controller()->GetCurrentForms().empty()); | 617 ASSERT_FALSE(controller()->GetCurrentForms().empty()); |
593 EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]); | 618 EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]); |
594 ExpectIconStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 619 ExpectIconStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
| 620 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
595 controller()->OnBubbleHidden(); | 621 controller()->OnBubbleHidden(); |
596 ExpectIconAndControllerStateIs(password_manager::ui::MANAGE_STATE); | 622 ExpectIconAndControllerStateIs(password_manager::ui::MANAGE_STATE); |
597 } | 623 } |
598 | 624 |
599 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRun) { | 625 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRun) { |
600 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( | 626 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( |
601 Return(&dialog_prompt())); | 627 Return(&dialog_prompt())); |
602 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); | 628 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); |
603 controller()->OnPromptEnableAutoSignin(); | 629 controller()->OnPromptEnableAutoSignin(); |
604 | 630 |
605 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 631 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
606 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 632 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
607 } | 633 } |
608 | 634 |
609 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterAutofill) { | 635 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterAutofill) { |
610 // Setup the managed state first. | 636 // Setup the managed state first. |
611 std::unique_ptr<autofill::PasswordForm> test_form( | 637 std::unique_ptr<autofill::PasswordForm> test_form( |
612 new autofill::PasswordForm(test_local_form())); | 638 new autofill::PasswordForm(test_local_form())); |
613 autofill::PasswordForm* test_form_ptr = test_form.get(); | 639 autofill::PasswordForm* test_form_ptr = test_form.get(); |
614 const base::string16 kTestUsername = test_form->username_value; | 640 const base::string16 kTestUsername = test_form->username_value; |
615 autofill::PasswordFormMap map; | 641 autofill::PasswordFormMap map; |
616 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 642 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
| 643 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
617 controller()->OnPasswordAutofilled(map, test_form_ptr->origin, nullptr); | 644 controller()->OnPasswordAutofilled(map, test_form_ptr->origin, nullptr); |
618 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 645 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
619 | 646 |
620 // Pop up the autosignin promo. The state should stay intact. | 647 // Pop up the autosignin promo. The state should stay intact. |
621 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( | 648 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( |
622 Return(&dialog_prompt())); | 649 Return(&dialog_prompt())); |
623 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); | 650 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); |
624 controller()->OnPromptEnableAutoSignin(); | 651 controller()->OnPromptEnableAutoSignin(); |
625 | 652 |
626 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 653 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
627 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); | 654 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); |
628 EXPECT_THAT(controller()->GetCurrentForms(), | 655 EXPECT_THAT(controller()->GetCurrentForms(), |
629 ElementsAre(Pointee(*test_form_ptr))); | 656 ElementsAre(Pointee(*test_form_ptr))); |
630 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 657 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
631 } | 658 } |
632 | 659 |
633 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterNavigation) { | 660 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterNavigation) { |
634 // Pop up the autosignin promo. | 661 // Pop up the autosignin promo. |
635 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( | 662 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( |
636 Return(&dialog_prompt())); | 663 Return(&dialog_prompt())); |
637 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); | 664 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); |
638 controller()->OnPromptEnableAutoSignin(); | 665 controller()->OnPromptEnableAutoSignin(); |
639 | 666 |
640 // The dialog should survive any navigation. | 667 // The dialog should survive any navigation. |
641 EXPECT_CALL(dialog_prompt(), ControllerGone()).Times(0); | 668 EXPECT_CALL(dialog_prompt(), ControllerGone()).Times(0); |
642 content::FrameNavigateParams params; | 669 content::FrameNavigateParams params; |
643 params.transition = ui::PAGE_TRANSITION_LINK; | 670 params.transition = ui::PAGE_TRANSITION_LINK; |
| 671 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
644 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), params); | 672 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), params); |
645 ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&dialog_prompt())); | 673 ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&dialog_prompt())); |
646 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 674 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
647 } | 675 } |
648 | 676 |
649 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { | 677 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { |
650 ScopedVector<autofill::PasswordForm> local_credentials; | 678 ScopedVector<autofill::PasswordForm> local_credentials; |
651 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 679 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
| 680 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
652 controller()->OnAutoSignin(std::move(local_credentials), | 681 controller()->OnAutoSignin(std::move(local_credentials), |
653 test_local_form().origin); | 682 test_local_form().origin); |
654 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 683 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
655 std::unique_ptr<autofill::PasswordForm> test_form( | 684 std::unique_ptr<autofill::PasswordForm> test_form( |
656 new autofill::PasswordForm(test_local_form())); | 685 new autofill::PasswordForm(test_local_form())); |
657 autofill::PasswordFormMap map; | 686 autofill::PasswordFormMap map; |
658 base::string16 kTestUsername = test_form->username_value; | 687 base::string16 kTestUsername = test_form->username_value; |
659 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | 688 map.insert(std::make_pair(kTestUsername, std::move(test_form))); |
660 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 689 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
661 | 690 |
662 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 691 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
663 } | 692 } |
664 | 693 |
665 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 694 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
666 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 695 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
667 autofill::PasswordFormMap map; | 696 autofill::PasswordFormMap map; |
668 std::unique_ptr<autofill::PasswordForm> psl_matched_test_form( | 697 std::unique_ptr<autofill::PasswordForm> psl_matched_test_form( |
669 new autofill::PasswordForm(test_local_form())); | 698 new autofill::PasswordForm(test_local_form())); |
670 psl_matched_test_form->is_public_suffix_match = true; | 699 psl_matched_test_form->is_public_suffix_match = true; |
671 map.insert(std::make_pair(kTestUsername, std::move(psl_matched_test_form))); | 700 map.insert(std::make_pair(kTestUsername, std::move(psl_matched_test_form))); |
| 701 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
672 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 702 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
673 | 703 |
674 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 704 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
675 } | 705 } |
676 | 706 |
677 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { | 707 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { |
678 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 708 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
679 CreateFormManager()); | 709 CreateFormManager()); |
| 710 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
680 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 711 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
681 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 712 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
682 controller()->GetState()); | 713 controller()->GetState()); |
683 | 714 |
684 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 715 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
685 } | 716 } |
686 | 717 |
687 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { | 718 TEST_F(ManagePasswordsUIControllerTest, PasswordUpdated) { |
688 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 719 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
689 CreateFormManager()); | 720 CreateFormManager()); |
690 test_form_manager->ProvisionallySave( | 721 test_form_manager->ProvisionallySave( |
691 test_local_form(), | 722 test_local_form(), |
692 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 723 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 724 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
693 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 725 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
694 | 726 |
695 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 727 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
| 728 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
696 controller()->UpdatePassword(autofill::PasswordForm()); | 729 controller()->UpdatePassword(autofill::PasswordForm()); |
697 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); | 730 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); |
698 } | 731 } |
699 | 732 |
700 TEST_F(ManagePasswordsUIControllerTest, SavePendingStatePasswordAutofilled) { | 733 TEST_F(ManagePasswordsUIControllerTest, SavePendingStatePasswordAutofilled) { |
701 TestNotChangingStateOnAutofill(password_manager::ui::PENDING_PASSWORD_STATE); | 734 TestNotChangingStateOnAutofill(password_manager::ui::PENDING_PASSWORD_STATE); |
702 } | 735 } |
703 | 736 |
704 TEST_F(ManagePasswordsUIControllerTest, UpdatePendingStatePasswordAutofilled) { | 737 TEST_F(ManagePasswordsUIControllerTest, UpdatePendingStatePasswordAutofilled) { |
705 TestNotChangingStateOnAutofill( | 738 TestNotChangingStateOnAutofill( |
706 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); | 739 password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); |
707 } | 740 } |
708 | 741 |
709 TEST_F(ManagePasswordsUIControllerTest, ConfirmationStatePasswordAutofilled) { | 742 TEST_F(ManagePasswordsUIControllerTest, ConfirmationStatePasswordAutofilled) { |
710 TestNotChangingStateOnAutofill(password_manager::ui::CONFIRMATION_STATE); | 743 TestNotChangingStateOnAutofill(password_manager::ui::CONFIRMATION_STATE); |
711 } | 744 } |
OLD | NEW |