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

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

Issue 1212633003: Don't show any password manager icon when a user visits a blacklisted site. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix everything Created 5 years, 5 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/prefs/pref_service.h" 6 #include "base/prefs/pref_service.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h"
10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 base::TimeDelta Elapsed() const override; 45 base::TimeDelta Elapsed() const override;
46 void SetElapsed(base::TimeDelta elapsed) { elapsed_ = elapsed; } 46 void SetElapsed(base::TimeDelta elapsed) { elapsed_ = elapsed; }
47 47
48 using ManagePasswordsUIController::DidNavigateMainFrame; 48 using ManagePasswordsUIController::DidNavigateMainFrame;
49 49
50 private: 50 private:
51 void UpdateBubbleAndIconVisibility() override; 51 void UpdateBubbleAndIconVisibility() override;
52 void UpdateAndroidAccountChooserInfoBarVisibility() override; 52 void UpdateAndroidAccountChooserInfoBarVisibility() override;
53 void SavePasswordInternal() override {} 53 void SavePasswordInternal() override {}
54 void NeverSavePasswordInternal() override {} 54 void NeverSavePasswordInternal() override;
55 55
56 base::TimeDelta elapsed_; 56 base::TimeDelta elapsed_;
57 }; 57 };
58 58
59 TestManagePasswordsUIController::TestManagePasswordsUIController( 59 TestManagePasswordsUIController::TestManagePasswordsUIController(
60 content::WebContents* contents, 60 content::WebContents* contents,
61 password_manager::PasswordManagerClient* client) 61 password_manager::PasswordManagerClient* client)
62 : ManagePasswordsUIController(contents) { 62 : ManagePasswordsUIController(contents) {
63 // Do not silently replace an existing ManagePasswordsUIController because it 63 // Do not silently replace an existing ManagePasswordsUIController because it
64 // unregisters itself in WebContentsDestroyed(). 64 // unregisters itself in WebContentsDestroyed().
(...skipping 12 matching lines...) Expand all
77 void TestManagePasswordsUIController::UpdateBubbleAndIconVisibility() { 77 void TestManagePasswordsUIController::UpdateBubbleAndIconVisibility() {
78 ManagePasswordsUIController::UpdateBubbleAndIconVisibility(); 78 ManagePasswordsUIController::UpdateBubbleAndIconVisibility();
79 OnBubbleShown(); 79 OnBubbleShown();
80 } 80 }
81 81
82 void TestManagePasswordsUIController:: 82 void TestManagePasswordsUIController::
83 UpdateAndroidAccountChooserInfoBarVisibility() { 83 UpdateAndroidAccountChooserInfoBarVisibility() {
84 OnBubbleShown(); 84 OnBubbleShown();
85 } 85 }
86 86
87 void TestManagePasswordsUIController::NeverSavePasswordInternal() {
88 autofill::PasswordForm blacklisted;
89 blacklisted.origin = this->origin();
90 blacklisted.signon_realm = blacklisted.origin.spec();
91 blacklisted.blacklisted_by_user = true;
92 password_manager::PasswordStoreChange change(
93 password_manager::PasswordStoreChange::ADD, blacklisted);
94 password_manager::PasswordStoreChangeList list(1, change);
95 OnLoginsChanged(list);
96 }
97
87 } // namespace 98 } // namespace
88 99
89 class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness { 100 class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness {
90 public: 101 public:
91 ManagePasswordsUIControllerTest() {} 102 ManagePasswordsUIControllerTest() {}
92 103
93 void SetUp() override { 104 void SetUp() override {
94 ChromeRenderViewHostTestHarness::SetUp(); 105 ChromeRenderViewHostTestHarness::SetUp();
95 106
96 // Create the test UIController here so that it's bound to 107 // Create the test UIController here so that it's bound to
(...skipping 21 matching lines...) Expand all
118 } 129 }
119 130
120 TestManagePasswordsUIController* controller() { 131 TestManagePasswordsUIController* controller() {
121 return static_cast<TestManagePasswordsUIController*>( 132 return static_cast<TestManagePasswordsUIController*>(
122 ManagePasswordsUIController::FromWebContents(web_contents())); 133 ManagePasswordsUIController::FromWebContents(web_contents()));
123 } 134 }
124 135
125 void CredentialCallback(const password_manager::CredentialInfo& info) { 136 void CredentialCallback(const password_manager::CredentialInfo& info) {
126 credential_info_.reset(new password_manager::CredentialInfo(info)); 137 credential_info_.reset(new password_manager::CredentialInfo(info));
127 } 138 }
139 password_manager::StubPasswordManagerClient* client() {
vabr (Chromium) 2015/06/30 13:09:34 nit: Add a blank line above.
vasilii 2015/06/30 13:55:55 Done.
140 return &client_;
141 }
128 142
129 scoped_ptr<password_manager::PasswordFormManager> CreateFormManager(); 143 scoped_ptr<password_manager::PasswordFormManager> CreateFormManager();
130 144
131 private: 145 private:
132 password_manager::StubPasswordManagerClient client_; 146 password_manager::StubPasswordManagerClient client_;
133 147
134 autofill::PasswordForm test_local_form_; 148 autofill::PasswordForm test_local_form_;
135 autofill::PasswordForm test_federated_form_; 149 autofill::PasswordForm test_federated_form_;
136 scoped_ptr<password_manager::CredentialInfo> credential_info_; 150 scoped_ptr<password_manager::CredentialInfo> credential_info_;
137 }; 151 };
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); 300 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin());
287 301
288 ManagePasswordsIconMock mock; 302 ManagePasswordsIconMock mock;
289 controller()->UpdateIconAndBubbleState(&mock); 303 controller()->UpdateIconAndBubbleState(&mock);
290 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); 304 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state());
291 } 305 }
292 306
293 TEST_F(ManagePasswordsUIControllerTest, BlacklistBlockedAutofill) { 307 TEST_F(ManagePasswordsUIControllerTest, BlacklistBlockedAutofill) {
294 scoped_ptr<autofill::PasswordForm> test_form( 308 scoped_ptr<autofill::PasswordForm> test_form(
295 new autofill::PasswordForm(test_local_form())); 309 new autofill::PasswordForm(test_local_form()));
296 autofill::PasswordForm* test_form_ptr = test_form.get();
297 test_form->blacklisted_by_user = true; 310 test_form->blacklisted_by_user = true;
298 base::string16 kTestUsername = test_form->username_value; 311 base::string16 kTestUsername = test_form->username_value;
299 autofill::PasswordFormMap map; 312 autofill::PasswordFormMap map;
300 map.insert(kTestUsername, test_form.Pass()); 313 map.insert(kTestUsername, test_form.Pass());
301 controller()->OnBlacklistBlockedAutofill(map); 314 controller()->OnBlacklistBlockedAutofill(map);
302 315
303 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, controller()->state()); 316 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
304 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); 317 EXPECT_FALSE(controller()->PasswordPendingUserDecision());
305 EXPECT_EQ(test_form_ptr->origin, controller()->origin());
306 ASSERT_EQ(1u, controller()->GetCurrentForms().size());
307 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value);
308
309 // Controller should store a separate copy of the form as it doesn't own it.
310 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0]);
311 318
312 ManagePasswordsIconMock mock; 319 ManagePasswordsIconMock mock;
313 controller()->UpdateIconAndBubbleState(&mock); 320 controller()->UpdateIconAndBubbleState(&mock);
314 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); 321 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state());
315 } 322 }
316 323
317 TEST_F(ManagePasswordsUIControllerTest, ClickedUnblacklist) { 324 TEST_F(ManagePasswordsUIControllerTest, ClickedUnblacklist) {
318 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); 325 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
319 autofill::PasswordFormMap map; 326 ManagePasswordsUIControllerMock::CreateFormManager(
320 scoped_ptr<autofill::PasswordForm> test_form( 327 client(), test_local_form(), ScopedVector<autofill::PasswordForm>()));
321 new autofill::PasswordForm(test_local_form())); 328 test_form_manager->ProvisionallySave(
322 autofill::PasswordForm& test_form_ref = *test_form; 329 test_local_form(),
323 map.insert(kTestUsername, test_form.Pass()); 330 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
324 test_form_ref.blacklisted_by_user = true; 331 controller()->OnPasswordSubmitted(test_form_manager.Pass());
325 controller()->OnBlacklistBlockedAutofill(map); 332 EXPECT_EQ(test_local_form().origin, controller()->origin());
333 controller()->NeverSavePassword();
334 ManagePasswordsIconMock mock;
335 controller()->UpdateIconAndBubbleState(&mock);
336 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state());
337 EXPECT_EQ(test_local_form().origin, controller()->origin());
338
326 controller()->UnblacklistSite(); 339 controller()->UnblacklistSite();
327 340 controller()->UpdateIconAndBubbleState(&mock);
341 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state());
328 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); 342 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state());
329 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); 343 EXPECT_FALSE(controller()->PasswordPendingUserDecision());
330 EXPECT_EQ(test_local_form().origin, controller()->origin()); 344 EXPECT_EQ(test_local_form().origin, controller()->origin());
331
332 ManagePasswordsIconMock mock;
333 controller()->UpdateIconAndBubbleState(&mock);
334 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state());
335 }
336
337 TEST_F(ManagePasswordsUIControllerTest, UnblacklistedElsewhere) {
338 test_local_form().blacklisted_by_user = true;
339 base::string16 kTestUsername = base::ASCIIToUTF16("test_username");
340 autofill::PasswordFormMap map;
341 map.insert(kTestUsername,
342 make_scoped_ptr(new autofill::PasswordForm(test_local_form())));
343 controller()->OnBlacklistBlockedAutofill(map);
344
345 password_manager::PasswordStoreChange change(
346 password_manager::PasswordStoreChange::REMOVE, test_local_form());
347 password_manager::PasswordStoreChangeList list(1, change);
348 controller()->OnLoginsChanged(list);
349
350 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state());
351 EXPECT_FALSE(controller()->PasswordPendingUserDecision());
352 EXPECT_EQ(test_local_form().origin, controller()->origin());
353
354 ManagePasswordsIconMock mock;
355 controller()->UpdateIconAndBubbleState(&mock);
356 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state());
357 } 345 }
358 346
359 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { 347 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) {
360 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); 348 base::string16 kTestUsername = base::ASCIIToUTF16("test_username");
361 autofill::PasswordFormMap map; 349 autofill::PasswordFormMap map;
362 map.insert(kTestUsername, 350 map.insert(kTestUsername,
363 make_scoped_ptr(new autofill::PasswordForm(test_local_form()))); 351 make_scoped_ptr(new autofill::PasswordForm(test_local_form())));
364 controller()->OnPasswordAutofilled(map); 352 controller()->OnPasswordAutofilled(map);
365 353
366 test_local_form().blacklisted_by_user = true; 354 test_local_form().blacklisted_by_user = true;
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 autofill::PasswordFormMap map; 544 autofill::PasswordFormMap map;
557 scoped_ptr<autofill::PasswordForm> psl_matched_test_form( 545 scoped_ptr<autofill::PasswordForm> psl_matched_test_form(
558 new autofill::PasswordForm(test_local_form())); 546 new autofill::PasswordForm(test_local_form()));
559 psl_matched_test_form->original_signon_realm = 547 psl_matched_test_form->original_signon_realm =
560 "http://pslmatched.example.com"; 548 "http://pslmatched.example.com";
561 map.insert(kTestUsername, psl_matched_test_form.Pass()); 549 map.insert(kTestUsername, psl_matched_test_form.Pass());
562 controller()->OnPasswordAutofilled(map); 550 controller()->OnPasswordAutofilled(map);
563 551
564 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); 552 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
565 } 553 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698