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 "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" |
11 #include "chrome/browser/ui/passwords/manage_passwords_icon.h" | 11 #include "chrome/browser/ui/passwords/manage_passwords_icon.h" |
12 #include "chrome/browser/ui/passwords/manage_passwords_icon_mock.h" | 12 #include "chrome/browser/ui/passwords/manage_passwords_icon_mock.h" |
13 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" | 13 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" |
14 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 14 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
15 #include "chrome/test/base/testing_profile.h" | 15 #include "chrome/test/base/testing_profile.h" |
16 #include "components/autofill/core/common/password_form.h" | 16 #include "components/autofill/core/common/password_form.h" |
17 #include "components/password_manager/content/common/credential_manager_types.h" | 17 #include "components/password_manager/content/common/credential_manager_types.h" |
18 #include "components/password_manager/core/browser/password_form_manager.h" | 18 #include "components/password_manager/core/browser/password_form_manager.h" |
19 #include "components/password_manager/core/browser/stub_password_manager_client.
h" | 19 #include "components/password_manager/core/browser/stub_password_manager_client.
h" |
20 #include "components/password_manager/core/browser/stub_password_manager_driver.
h" | 20 #include "components/password_manager/core/browser/stub_password_manager_driver.
h" |
21 #include "components/password_manager/core/common/password_manager_ui.h" | 21 #include "components/password_manager/core/common/password_manager_ui.h" |
| 22 #include "content/public/browser/navigation_details.h" |
22 #include "content/public/test/test_browser_thread_bundle.h" | 23 #include "content/public/test/test_browser_thread_bundle.h" |
23 #include "content/public/test/web_contents_tester.h" | 24 #include "content/public/test/web_contents_tester.h" |
24 #include "testing/gmock/include/gmock/gmock.h" | 25 #include "testing/gmock/include/gmock/gmock.h" |
25 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
26 | 27 |
| 28 using ::testing::ElementsAre; |
| 29 using ::testing::Pointee; |
| 30 |
27 namespace { | 31 namespace { |
28 | 32 |
29 const int64 kSlowNavigationDelayInMS = 2000; | 33 const int64 kSlowNavigationDelayInMS = 2000; |
30 const int64 kQuickNavigationDelayInMS = 500; | 34 const int64 kQuickNavigationDelayInMS = 500; |
31 | 35 |
| 36 // This sublass is used to disable some code paths which are not essential for |
| 37 // testing. |
| 38 class TestManagePasswordsUIController : public ManagePasswordsUIController { |
| 39 public: |
| 40 TestManagePasswordsUIController( |
| 41 content::WebContents* contents, |
| 42 password_manager::PasswordManagerClient* client); |
| 43 ~TestManagePasswordsUIController() override; |
| 44 |
| 45 base::TimeDelta Elapsed() const override; |
| 46 void SetElapsed(base::TimeDelta elapsed) { elapsed_ = elapsed; } |
| 47 |
| 48 using ManagePasswordsUIController::DidNavigateMainFrame; |
| 49 |
| 50 private: |
| 51 void UpdateBubbleAndIconVisibility() override; |
| 52 void UpdateAndroidAccountChooserInfoBarVisibility() override; |
| 53 void SavePasswordInternal() override {} |
| 54 void NeverSavePasswordInternal() override {} |
| 55 |
| 56 base::TimeDelta elapsed_; |
| 57 }; |
| 58 |
| 59 TestManagePasswordsUIController::TestManagePasswordsUIController( |
| 60 content::WebContents* contents, |
| 61 password_manager::PasswordManagerClient* client) |
| 62 : ManagePasswordsUIController(contents) { |
| 63 // Do not silently replace an existing ManagePasswordsUIController because it |
| 64 // unregisters itself in WebContentsDestroyed(). |
| 65 EXPECT_FALSE(contents->GetUserData(UserDataKey())); |
| 66 contents->SetUserData(UserDataKey(), this); |
| 67 set_client(client); |
| 68 } |
| 69 |
| 70 TestManagePasswordsUIController::~TestManagePasswordsUIController() { |
| 71 } |
| 72 |
| 73 base::TimeDelta TestManagePasswordsUIController::Elapsed() const { |
| 74 return elapsed_; |
| 75 } |
| 76 |
| 77 void TestManagePasswordsUIController::UpdateBubbleAndIconVisibility() { |
| 78 ManagePasswordsUIController::UpdateBubbleAndIconVisibility(); |
| 79 OnBubbleShown(); |
| 80 } |
| 81 |
| 82 void TestManagePasswordsUIController:: |
| 83 UpdateAndroidAccountChooserInfoBarVisibility() { |
| 84 OnBubbleShown(); |
| 85 } |
| 86 |
32 } // namespace | 87 } // namespace |
33 | 88 |
34 class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness { | 89 class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness { |
35 public: | 90 public: |
36 ManagePasswordsUIControllerTest() {} | 91 ManagePasswordsUIControllerTest() {} |
37 | 92 |
38 void SetUp() override { | 93 void SetUp() override { |
39 ChromeRenderViewHostTestHarness::SetUp(); | 94 ChromeRenderViewHostTestHarness::SetUp(); |
40 | 95 |
41 // Create the test UIController here so that it's bound to | 96 // Create the test UIController here so that it's bound to |
42 // |test_web_contents_|, and will be retrieved correctly via | 97 // |test_web_contents_|, and will be retrieved correctly via |
43 // ManagePasswordsUIController::FromWebContents in |controller()|. | 98 // ManagePasswordsUIController::FromWebContents in |controller()|. |
44 new ManagePasswordsUIControllerMock(web_contents()); | 99 new TestManagePasswordsUIController(web_contents(), &client_); |
45 | 100 |
46 test_local_form_.origin = GURL("http://example.com"); | 101 test_local_form_.origin = GURL("http://example.com"); |
47 test_local_form_.username_value = base::ASCIIToUTF16("username"); | 102 test_local_form_.username_value = base::ASCIIToUTF16("username"); |
48 test_local_form_.password_value = base::ASCIIToUTF16("12345"); | 103 test_local_form_.password_value = base::ASCIIToUTF16("12345"); |
49 | 104 |
50 test_federated_form_.origin = GURL("http://example.com"); | 105 test_federated_form_.origin = GURL("http://example.com"); |
51 test_federated_form_.username_value = base::ASCIIToUTF16("username"); | 106 test_federated_form_.username_value = base::ASCIIToUTF16("username"); |
52 test_federated_form_.federation_url = GURL("https://federation.test/"); | 107 test_federated_form_.federation_url = GURL("https://federation.test/"); |
53 | 108 |
54 // We need to be on a "webby" URL for most tests. | 109 // We need to be on a "webby" URL for most tests. |
55 content::WebContentsTester::For(web_contents()) | 110 content::WebContentsTester::For(web_contents()) |
56 ->NavigateAndCommit(GURL("http://example.com")); | 111 ->NavigateAndCommit(GURL("http://example.com")); |
57 } | 112 } |
58 | 113 |
59 autofill::PasswordForm& test_local_form() { return test_local_form_; } | 114 autofill::PasswordForm& test_local_form() { return test_local_form_; } |
60 autofill::PasswordForm& test_federated_form() { return test_federated_form_; } | 115 autofill::PasswordForm& test_federated_form() { return test_federated_form_; } |
61 password_manager::CredentialInfo* credential_info() const { | 116 password_manager::CredentialInfo* credential_info() const { |
62 return credential_info_.get(); | 117 return credential_info_.get(); |
63 } | 118 } |
64 | 119 |
65 ManagePasswordsUIControllerMock* controller() { | 120 TestManagePasswordsUIController* controller() { |
66 return static_cast<ManagePasswordsUIControllerMock*>( | 121 return static_cast<TestManagePasswordsUIController*>( |
67 ManagePasswordsUIController::FromWebContents(web_contents())); | 122 ManagePasswordsUIController::FromWebContents(web_contents())); |
68 } | 123 } |
69 | 124 |
70 void CredentialCallback(const password_manager::CredentialInfo& info) { | 125 void CredentialCallback(const password_manager::CredentialInfo& info) { |
71 credential_info_.reset(new password_manager::CredentialInfo(info)); | 126 credential_info_.reset(new password_manager::CredentialInfo(info)); |
72 } | 127 } |
73 | 128 |
| 129 scoped_ptr<password_manager::PasswordFormManager> CreateFormManager(); |
| 130 |
74 private: | 131 private: |
| 132 password_manager::StubPasswordManagerClient client_; |
| 133 |
75 autofill::PasswordForm test_local_form_; | 134 autofill::PasswordForm test_local_form_; |
76 autofill::PasswordForm test_federated_form_; | 135 autofill::PasswordForm test_federated_form_; |
77 scoped_ptr<password_manager::CredentialInfo> credential_info_; | 136 scoped_ptr<password_manager::CredentialInfo> credential_info_; |
78 }; | 137 }; |
79 | 138 |
| 139 scoped_ptr<password_manager::PasswordFormManager> |
| 140 ManagePasswordsUIControllerTest::CreateFormManager() { |
| 141 ScopedVector<autofill::PasswordForm> stored_forms; |
| 142 stored_forms.push_back(new autofill::PasswordForm(test_local_form())); |
| 143 return ManagePasswordsUIControllerMock::CreateFormManager( |
| 144 &client_, test_local_form(), stored_forms.Pass()); |
| 145 } |
| 146 |
80 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { | 147 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { |
81 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 148 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
82 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 149 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
83 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 150 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); |
84 | 151 |
85 ManagePasswordsIconMock mock; | 152 ManagePasswordsIconMock mock; |
86 controller()->UpdateIconAndBubbleState(&mock); | 153 controller()->UpdateIconAndBubbleState(&mock); |
87 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); | 154 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); |
88 } | 155 } |
89 | 156 |
90 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { | 157 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { |
91 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 158 base::string16 kTestUsername = test_local_form().username_value; |
92 autofill::PasswordFormMap map; | 159 autofill::PasswordFormMap map; |
93 map[kTestUsername] = &test_local_form(); | 160 map[kTestUsername] = &test_local_form(); |
94 controller()->OnPasswordAutofilled(map); | 161 controller()->OnPasswordAutofilled(map); |
95 | 162 |
96 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 163 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); |
97 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 164 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
98 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 165 EXPECT_EQ(test_local_form().origin, controller()->origin()); |
99 EXPECT_EQ(1u, controller()->best_matches().size()); | 166 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
100 ASSERT_EQ(1u, controller()->best_matches().count(kTestUsername)); | 167 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
101 | 168 |
102 // Controller should store a separate copy of the form as it doesn't own it. | 169 // Controller should store a separate copy of the form as it doesn't own it. |
103 EXPECT_NE(&test_local_form(), | 170 EXPECT_NE(&test_local_form(), controller()->GetCurrentForms()[0]); |
104 controller()->best_matches().find(kTestUsername)->second); | |
105 | 171 |
106 ManagePasswordsIconMock mock; | 172 ManagePasswordsIconMock mock; |
107 controller()->UpdateIconAndBubbleState(&mock); | 173 controller()->UpdateIconAndBubbleState(&mock); |
108 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); | 174 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); |
109 } | 175 } |
110 | 176 |
111 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 177 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
112 password_manager::StubPasswordManagerClient client; | |
113 password_manager::StubPasswordManagerDriver driver; | |
114 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 178 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
115 new password_manager::PasswordFormManager( | 179 CreateFormManager()); |
116 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | |
117 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 180 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
118 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 181 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
119 controller()->state()); | 182 controller()->state()); |
120 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); | 183 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); |
121 | 184 |
122 // TODO(mkwst): This should be the value of test_local_form().origin, but | 185 // TODO(mkwst): This should be the value of test_local_form().origin, but |
123 // it's being masked by the stub implementation of | 186 // it's being masked by the stub implementation of |
124 // ManagePasswordsUIControllerMock::PendingCredentials. | 187 // ManagePasswordsUIControllerMock::PendingCredentials. |
125 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 188 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); |
126 | 189 |
127 ManagePasswordsIconMock mock; | 190 ManagePasswordsIconMock mock; |
128 controller()->UpdateIconAndBubbleState(&mock); | 191 controller()->UpdateIconAndBubbleState(&mock); |
129 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 192 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
130 mock.state()); | 193 mock.state()); |
131 } | 194 } |
132 | 195 |
133 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { | 196 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { |
134 password_manager::StubPasswordManagerClient client; | |
135 password_manager::StubPasswordManagerDriver driver; | |
136 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 197 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
137 new password_manager::PasswordFormManager( | 198 CreateFormManager()); |
138 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | 199 test_form_manager->ProvisionallySave( |
| 200 test_local_form(), |
| 201 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
139 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 202 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
140 | 203 |
141 ManagePasswordsIconMock mock; | 204 ManagePasswordsIconMock mock; |
142 controller()->UpdateIconAndBubbleState(&mock); | 205 controller()->UpdateIconAndBubbleState(&mock); |
143 controller()->SavePassword(); | 206 controller()->SavePassword(); |
144 controller()->UpdateIconAndBubbleState(&mock); | 207 controller()->UpdateIconAndBubbleState(&mock); |
145 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); | 208 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); |
146 } | 209 } |
147 | 210 |
148 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { | 211 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { |
149 password_manager::StubPasswordManagerClient client; | |
150 password_manager::StubPasswordManagerDriver driver; | |
151 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 212 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
152 new password_manager::PasswordFormManager( | 213 CreateFormManager()); |
153 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | 214 test_form_manager->ProvisionallySave( |
| 215 test_local_form(), |
| 216 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
154 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 217 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
155 | 218 |
156 ManagePasswordsIconMock mock; | 219 ManagePasswordsIconMock mock; |
157 controller()->UpdateIconAndBubbleState(&mock); | 220 controller()->UpdateIconAndBubbleState(&mock); |
158 controller()->NeverSavePassword(); | 221 controller()->NeverSavePassword(); |
159 controller()->UpdateIconAndBubbleState(&mock); | 222 controller()->UpdateIconAndBubbleState(&mock); |
160 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); | 223 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); |
161 } | 224 } |
162 | 225 |
163 TEST_F(ManagePasswordsUIControllerTest, QuickNavigations) { | 226 TEST_F(ManagePasswordsUIControllerTest, QuickNavigations) { |
164 password_manager::StubPasswordManagerClient client; | |
165 password_manager::StubPasswordManagerDriver driver; | |
166 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 227 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
167 new password_manager::PasswordFormManager( | 228 CreateFormManager()); |
168 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | |
169 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 229 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
170 ManagePasswordsIconMock mock; | 230 ManagePasswordsIconMock mock; |
171 controller()->UpdateIconAndBubbleState(&mock); | 231 controller()->UpdateIconAndBubbleState(&mock); |
172 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 232 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
173 mock.state()); | 233 mock.state()); |
174 | 234 |
175 // Fake-navigate within a second. We expect the bubble's state to persist | 235 // Fake-navigate within a second. We expect the bubble's state to persist |
176 // if a navigation occurs too quickly for a user to reasonably have been | 236 // if a navigation occurs too quickly for a user to reasonably have been |
177 // able to interact with the bubble. This happens on `accounts.google.com`, | 237 // able to interact with the bubble. This happens on `accounts.google.com`, |
178 // for instance. | 238 // for instance. |
179 controller()->SetElapsed( | 239 controller()->SetElapsed( |
180 base::TimeDelta::FromMilliseconds(kQuickNavigationDelayInMS)); | 240 base::TimeDelta::FromMilliseconds(kQuickNavigationDelayInMS)); |
181 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 241 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
182 content::FrameNavigateParams()); | 242 content::FrameNavigateParams()); |
183 controller()->UpdateIconAndBubbleState(&mock); | 243 controller()->UpdateIconAndBubbleState(&mock); |
184 | 244 |
185 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 245 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
186 mock.state()); | 246 mock.state()); |
187 } | 247 } |
188 | 248 |
189 TEST_F(ManagePasswordsUIControllerTest, SlowNavigations) { | 249 TEST_F(ManagePasswordsUIControllerTest, SlowNavigations) { |
190 password_manager::StubPasswordManagerClient client; | |
191 password_manager::StubPasswordManagerDriver driver; | |
192 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 250 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
193 new password_manager::PasswordFormManager( | 251 CreateFormManager()); |
194 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | |
195 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 252 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
196 ManagePasswordsIconMock mock; | 253 ManagePasswordsIconMock mock; |
197 controller()->UpdateIconAndBubbleState(&mock); | 254 controller()->UpdateIconAndBubbleState(&mock); |
198 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 255 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
199 mock.state()); | 256 mock.state()); |
200 | 257 |
201 // Fake-navigate after a second. We expect the bubble's state to be reset | 258 // Fake-navigate after a second. We expect the bubble's state to be reset |
202 // if a navigation occurs after this limit. | 259 // if a navigation occurs after this limit. |
203 controller()->SetElapsed( | 260 controller()->SetElapsed( |
204 base::TimeDelta::FromMilliseconds(kSlowNavigationDelayInMS)); | 261 base::TimeDelta::FromMilliseconds(kSlowNavigationDelayInMS)); |
205 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), | 262 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), |
206 content::FrameNavigateParams()); | 263 content::FrameNavigateParams()); |
207 controller()->UpdateIconAndBubbleState(&mock); | 264 controller()->UpdateIconAndBubbleState(&mock); |
208 | 265 |
209 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); | 266 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); |
210 } | 267 } |
211 | 268 |
212 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { | 269 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { |
213 // Navigate to a non-webby URL, then see what happens! | 270 // Navigate to a non-webby URL, then see what happens! |
214 content::WebContentsTester::For(web_contents()) | 271 content::WebContentsTester::For(web_contents()) |
215 ->NavigateAndCommit(GURL("chrome://sign-in")); | 272 ->NavigateAndCommit(GURL("chrome://sign-in")); |
216 | 273 |
217 password_manager::StubPasswordManagerClient client; | |
218 password_manager::StubPasswordManagerDriver driver; | |
219 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 274 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
220 new password_manager::PasswordFormManager( | 275 CreateFormManager()); |
221 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | |
222 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 276 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
223 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 277 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
224 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 278 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
225 | 279 |
226 // TODO(mkwst): This should be the value of test_local_form().origin, but | 280 // TODO(mkwst): This should be the value of test_local_form().origin, but |
227 // it's being masked by the stub implementation of | 281 // it's being masked by the stub implementation of |
228 // ManagePasswordsUIControllerMock::PendingCredentials. | 282 // ManagePasswordsUIControllerMock::PendingCredentials. |
229 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 283 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); |
230 | 284 |
231 ManagePasswordsIconMock mock; | 285 ManagePasswordsIconMock mock; |
232 controller()->UpdateIconAndBubbleState(&mock); | 286 controller()->UpdateIconAndBubbleState(&mock); |
233 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); | 287 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); |
234 } | 288 } |
235 | 289 |
236 TEST_F(ManagePasswordsUIControllerTest, BlacklistBlockedAutofill) { | 290 TEST_F(ManagePasswordsUIControllerTest, BlacklistBlockedAutofill) { |
237 test_local_form().blacklisted_by_user = true; | 291 test_local_form().blacklisted_by_user = true; |
238 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 292 base::string16 kTestUsername = test_local_form().username_value; |
239 autofill::PasswordFormMap map; | 293 autofill::PasswordFormMap map; |
240 map[kTestUsername] = &test_local_form(); | 294 map[kTestUsername] = &test_local_form(); |
241 controller()->OnBlacklistBlockedAutofill(map); | 295 controller()->OnBlacklistBlockedAutofill(map); |
242 | 296 |
243 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, controller()->state()); | 297 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, controller()->state()); |
244 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 298 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
245 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 299 EXPECT_EQ(test_local_form().origin, controller()->origin()); |
246 EXPECT_EQ(1u, controller()->best_matches().size()); | 300 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
247 ASSERT_EQ(1u, controller()->best_matches().count(kTestUsername)); | 301 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
248 | 302 |
249 // Controller should store a separate copy of the form as it doesn't own it. | 303 // Controller should store a separate copy of the form as it doesn't own it. |
250 EXPECT_NE(&test_local_form(), | 304 EXPECT_NE(&test_local_form(), controller()->GetCurrentForms()[0]); |
251 controller()->best_matches().find(kTestUsername)->second); | |
252 | 305 |
253 ManagePasswordsIconMock mock; | 306 ManagePasswordsIconMock mock; |
254 controller()->UpdateIconAndBubbleState(&mock); | 307 controller()->UpdateIconAndBubbleState(&mock); |
255 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); | 308 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); |
256 } | 309 } |
257 | 310 |
258 TEST_F(ManagePasswordsUIControllerTest, ClickedUnblacklist) { | 311 TEST_F(ManagePasswordsUIControllerTest, ClickedUnblacklist) { |
259 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 312 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
260 autofill::PasswordFormMap map; | 313 autofill::PasswordFormMap map; |
261 map[kTestUsername] = &test_local_form(); | 314 map[kTestUsername] = &test_local_form(); |
| 315 test_local_form().blacklisted_by_user = true; |
262 controller()->OnBlacklistBlockedAutofill(map); | 316 controller()->OnBlacklistBlockedAutofill(map); |
263 controller()->UnblacklistSite(); | 317 controller()->UnblacklistSite(); |
264 | 318 |
265 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); | 319 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); |
266 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 320 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
267 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 321 EXPECT_EQ(test_local_form().origin, controller()->origin()); |
268 | 322 |
269 ManagePasswordsIconMock mock; | 323 ManagePasswordsIconMock mock; |
270 controller()->UpdateIconAndBubbleState(&mock); | 324 controller()->UpdateIconAndBubbleState(&mock); |
271 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); | 325 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, controller()->state()); | 361 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, controller()->state()); |
308 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 362 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
309 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 363 EXPECT_EQ(test_local_form().origin, controller()->origin()); |
310 | 364 |
311 ManagePasswordsIconMock mock; | 365 ManagePasswordsIconMock mock; |
312 controller()->UpdateIconAndBubbleState(&mock); | 366 controller()->UpdateIconAndBubbleState(&mock); |
313 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); | 367 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); |
314 } | 368 } |
315 | 369 |
316 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { | 370 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
317 password_manager::StubPasswordManagerClient client; | |
318 password_manager::StubPasswordManagerDriver driver; | |
319 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 371 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
320 new password_manager::PasswordFormManager( | 372 CreateFormManager()); |
321 NULL, &client, driver.AsWeakPtr(), test_local_form(), false)); | |
322 | 373 |
323 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); | 374 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); |
324 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state()); | 375 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state()); |
325 | 376 |
326 controller()->OnBubbleHidden(); | 377 controller()->OnBubbleHidden(); |
327 ManagePasswordsIconMock mock; | 378 ManagePasswordsIconMock mock; |
328 controller()->UpdateIconAndBubbleState(&mock); | 379 controller()->UpdateIconAndBubbleState(&mock); |
329 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); | 380 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); |
330 } | 381 } |
331 | 382 |
332 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { | 383 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { |
333 ScopedVector<autofill::PasswordForm> local_credentials; | 384 ScopedVector<autofill::PasswordForm> local_credentials; |
334 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 385 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
335 ScopedVector<autofill::PasswordForm> federated_credentials; | 386 ScopedVector<autofill::PasswordForm> federated_credentials; |
336 GURL origin("http://example.com"); | 387 GURL origin("http://example.com"); |
337 EXPECT_TRUE(controller()->OnChooseCredentials( | 388 EXPECT_TRUE(controller()->OnChooseCredentials( |
338 local_credentials.Pass(), federated_credentials.Pass(), origin, | 389 local_credentials.Pass(), federated_credentials.Pass(), origin, |
339 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 390 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
340 base::Unretained(this)))); | 391 base::Unretained(this)))); |
341 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 392 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
342 controller()->state()); | 393 controller()->state()); |
343 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 394 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
344 EXPECT_EQ(origin, controller()->origin()); | 395 EXPECT_EQ(origin, controller()->origin()); |
345 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); | 396 EXPECT_THAT(controller()->GetCurrentForms(), |
| 397 ElementsAre(Pointee(test_local_form()))); |
346 | 398 |
347 ManagePasswordsIconMock mock; | 399 ManagePasswordsIconMock mock; |
348 controller()->UpdateIconAndBubbleState(&mock); | 400 controller()->UpdateIconAndBubbleState(&mock); |
349 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); | 401 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
350 | 402 |
351 controller()->ManagePasswordsUIController::ChooseCredential( | 403 controller()->ManagePasswordsUIController::ChooseCredential( |
352 test_local_form(), | 404 test_local_form(), |
353 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); | 405 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); |
354 controller()->OnBubbleHidden(); | 406 controller()->OnBubbleHidden(); |
355 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 407 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); |
356 ASSERT_TRUE(credential_info()); | 408 ASSERT_TRUE(credential_info()); |
357 EXPECT_EQ(test_local_form().username_value, credential_info()->id); | 409 EXPECT_EQ(test_local_form().username_value, credential_info()->id); |
358 EXPECT_EQ(test_local_form().password_value, credential_info()->password); | 410 EXPECT_EQ(test_local_form().password_value, credential_info()->password); |
359 EXPECT_TRUE(credential_info()->federation.is_empty()); | 411 EXPECT_TRUE(credential_info()->federation.is_empty()); |
360 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL, | 412 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL, |
361 credential_info()->type); | 413 credential_info()->type); |
362 } | 414 } |
363 | 415 |
364 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { | 416 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocalButFederated) { |
365 ScopedVector<autofill::PasswordForm> local_credentials; | 417 ScopedVector<autofill::PasswordForm> local_credentials; |
366 local_credentials.push_back( | 418 local_credentials.push_back( |
367 new autofill::PasswordForm(test_federated_form())); | 419 new autofill::PasswordForm(test_federated_form())); |
368 ScopedVector<autofill::PasswordForm> federated_credentials; | 420 ScopedVector<autofill::PasswordForm> federated_credentials; |
369 GURL origin("http://example.com"); | 421 GURL origin("http://example.com"); |
370 EXPECT_TRUE(controller()->OnChooseCredentials( | 422 EXPECT_TRUE(controller()->OnChooseCredentials( |
371 local_credentials.Pass(), federated_credentials.Pass(), origin, | 423 local_credentials.Pass(), federated_credentials.Pass(), origin, |
372 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 424 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
373 base::Unretained(this)))); | 425 base::Unretained(this)))); |
374 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 426 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
375 controller()->state()); | 427 controller()->state()); |
376 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 428 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
377 EXPECT_EQ(origin, controller()->origin()); | 429 EXPECT_EQ(origin, controller()->origin()); |
378 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); | 430 EXPECT_THAT(controller()->GetCurrentForms(), |
| 431 ElementsAre(Pointee(test_federated_form()))); |
379 | 432 |
380 ManagePasswordsIconMock mock; | 433 ManagePasswordsIconMock mock; |
381 controller()->UpdateIconAndBubbleState(&mock); | 434 controller()->UpdateIconAndBubbleState(&mock); |
382 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); | 435 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
383 | 436 |
384 controller()->ManagePasswordsUIController::ChooseCredential( | 437 controller()->ManagePasswordsUIController::ChooseCredential( |
385 test_federated_form(), | 438 test_federated_form(), |
386 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); | 439 password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); |
387 controller()->OnBubbleHidden(); | 440 controller()->OnBubbleHidden(); |
388 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 441 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); |
389 ASSERT_TRUE(credential_info()); | 442 ASSERT_TRUE(credential_info()); |
390 EXPECT_EQ(test_federated_form().username_value, credential_info()->id); | 443 EXPECT_EQ(test_federated_form().username_value, credential_info()->id); |
391 EXPECT_EQ(test_federated_form().federation_url, | 444 EXPECT_EQ(test_federated_form().federation_url, |
392 credential_info()->federation); | 445 credential_info()->federation); |
393 EXPECT_TRUE(credential_info()->password.empty()); | 446 EXPECT_TRUE(credential_info()->password.empty()); |
394 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 447 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
395 credential_info()->type); | 448 credential_info()->type); |
396 } | 449 } |
397 | 450 |
398 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { | 451 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { |
399 ScopedVector<autofill::PasswordForm> local_credentials; | 452 ScopedVector<autofill::PasswordForm> local_credentials; |
400 ScopedVector<autofill::PasswordForm> federated_credentials; | 453 ScopedVector<autofill::PasswordForm> federated_credentials; |
401 federated_credentials.push_back( | 454 federated_credentials.push_back( |
402 new autofill::PasswordForm(test_local_form())); | 455 new autofill::PasswordForm(test_local_form())); |
403 GURL origin("http://example.com"); | 456 GURL origin("http://example.com"); |
404 EXPECT_TRUE(controller()->OnChooseCredentials( | 457 EXPECT_TRUE(controller()->OnChooseCredentials( |
405 local_credentials.Pass(), federated_credentials.Pass(), origin, | 458 local_credentials.Pass(), federated_credentials.Pass(), origin, |
406 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 459 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
407 base::Unretained(this)))); | 460 base::Unretained(this)))); |
408 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 461 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
409 controller()->state()); | 462 controller()->state()); |
410 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 463 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
411 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); | 464 EXPECT_EQ(0u, controller()->GetCurrentForms().size()); |
412 EXPECT_EQ(origin, controller()->origin()); | 465 EXPECT_EQ(origin, controller()->origin()); |
413 | 466 |
414 ManagePasswordsIconMock mock; | 467 ManagePasswordsIconMock mock; |
415 controller()->UpdateIconAndBubbleState(&mock); | 468 controller()->UpdateIconAndBubbleState(&mock); |
416 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); | 469 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
417 | 470 |
418 controller()->ManagePasswordsUIController::ChooseCredential( | 471 controller()->ManagePasswordsUIController::ChooseCredential( |
419 test_local_form(), | 472 test_local_form(), |
420 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); | 473 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); |
421 controller()->OnBubbleHidden(); | 474 controller()->OnBubbleHidden(); |
422 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 475 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); |
423 ASSERT_TRUE(credential_info()); | 476 ASSERT_TRUE(credential_info()); |
424 EXPECT_EQ(test_local_form().username_value, credential_info()->id); | 477 EXPECT_EQ(test_local_form().username_value, credential_info()->id); |
425 EXPECT_TRUE(credential_info()->password.empty()); | 478 EXPECT_TRUE(credential_info()->password.empty()); |
426 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 479 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
427 credential_info()->type); | 480 credential_info()->type); |
428 } | 481 } |
429 | 482 |
430 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { | 483 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { |
431 ScopedVector<autofill::PasswordForm> local_credentials; | 484 ScopedVector<autofill::PasswordForm> local_credentials; |
432 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 485 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
433 ScopedVector<autofill::PasswordForm> federated_credentials; | 486 ScopedVector<autofill::PasswordForm> federated_credentials; |
434 GURL origin("http://example.com"); | 487 GURL origin("http://example.com"); |
435 EXPECT_TRUE(controller()->OnChooseCredentials( | 488 EXPECT_TRUE(controller()->OnChooseCredentials( |
436 local_credentials.Pass(), federated_credentials.Pass(), origin, | 489 local_credentials.Pass(), federated_credentials.Pass(), origin, |
437 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 490 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
438 base::Unretained(this)))); | 491 base::Unretained(this)))); |
439 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 492 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
440 controller()->state()); | 493 controller()->state()); |
441 EXPECT_EQ(origin, controller()->origin()); | 494 EXPECT_EQ(origin, controller()->origin()); |
442 controller()->ManagePasswordsUIController::ChooseCredential( | 495 controller()->ManagePasswordsUIController::ChooseCredential( |
443 test_local_form(), | 496 test_local_form(), |
444 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); | 497 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); |
445 controller()->OnBubbleHidden(); | 498 controller()->OnBubbleHidden(); |
446 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 499 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); |
447 ASSERT_TRUE(credential_info()); | 500 ASSERT_TRUE(credential_info()); |
448 EXPECT_TRUE(credential_info()->federation.is_empty()); | 501 EXPECT_TRUE(credential_info()->federation.is_empty()); |
449 EXPECT_TRUE(credential_info()->password.empty()); | 502 EXPECT_TRUE(credential_info()->password.empty()); |
450 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, | 503 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, |
451 credential_info()->type); | 504 credential_info()->type); |
452 } | 505 } |
453 | 506 |
454 TEST_F(ManagePasswordsUIControllerTest, AutoSignin) { | 507 TEST_F(ManagePasswordsUIControllerTest, AutoSignin) { |
455 ScopedVector<autofill::PasswordForm> local_credentials; | 508 ScopedVector<autofill::PasswordForm> local_credentials; |
456 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 509 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); |
457 controller()->OnAutoSignin(local_credentials.Pass()); | 510 controller()->OnAutoSignin(local_credentials.Pass()); |
458 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->state()); | 511 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->state()); |
459 EXPECT_EQ(test_local_form().origin, controller()->origin()); | 512 EXPECT_EQ(test_local_form().origin, controller()->origin()); |
460 ASSERT_FALSE(controller()->local_credentials_forms().empty()); | 513 ASSERT_FALSE(controller()->GetCurrentForms().empty()); |
461 EXPECT_EQ(test_local_form(), *controller()->local_credentials_forms()[0]); | 514 EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]); |
462 ManagePasswordsIconMock mock; | 515 ManagePasswordsIconMock mock; |
463 controller()->UpdateIconAndBubbleState(&mock); | 516 controller()->UpdateIconAndBubbleState(&mock); |
464 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, mock.state()); | 517 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, mock.state()); |
465 | 518 |
466 controller()->OnBubbleHidden(); | 519 controller()->OnBubbleHidden(); |
467 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 520 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
468 controller()->UpdateIconAndBubbleState(&mock); | 521 controller()->UpdateIconAndBubbleState(&mock); |
469 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); | 522 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); |
470 } | 523 } |
471 | 524 |
472 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 525 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
473 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 526 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
474 autofill::PasswordFormMap map; | 527 autofill::PasswordFormMap map; |
475 autofill::PasswordForm psl_matched_test_form = test_local_form(); | 528 autofill::PasswordForm psl_matched_test_form = test_local_form(); |
476 psl_matched_test_form.original_signon_realm = "http://pslmatched.example.com"; | 529 psl_matched_test_form.original_signon_realm = "http://pslmatched.example.com"; |
477 map[kTestUsername] = &psl_matched_test_form; | 530 map[kTestUsername] = &psl_matched_test_form; |
478 controller()->OnPasswordAutofilled(map); | 531 controller()->OnPasswordAutofilled(map); |
479 | 532 |
480 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 533 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
481 } | 534 } |
OLD | NEW |