Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(377)

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc

Issue 2036323002: Implement the UI logic behind the Sign In promo in the password bubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698