OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/ui/passwords/manage_passwords_state.h" | 5 #include "chrome/browser/ui/passwords/manage_passwords_state.h" |
6 | 6 |
| 7 #include <iterator> |
7 #include <utility> | 8 #include <utility> |
8 #include <vector> | 9 #include <vector> |
9 | 10 |
10 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
11 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
12 #include "components/password_manager/core/browser/password_form_manager.h" | 13 #include "components/password_manager/core/browser/password_form_manager.h" |
13 #include "components/password_manager/core/browser/password_manager.h" | 14 #include "components/password_manager/core/browser/password_manager.h" |
14 #include "components/password_manager/core/browser/stub_form_saver.h" | 15 #include "components/password_manager/core/browser/stub_form_saver.h" |
15 #include "components/password_manager/core/browser/stub_password_manager_client.
h" | 16 #include "components/password_manager/core/browser/stub_password_manager_client.
h" |
16 #include "components/password_manager/core/browser/stub_password_manager_driver.
h" | 17 #include "components/password_manager/core/browser/stub_password_manager_driver.
h" |
17 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
19 #include "url/gurl.h" | 20 #include "url/gurl.h" |
20 #include "url/origin.h" | 21 #include "url/origin.h" |
21 | 22 |
22 using ::testing::_; | 23 using ::testing::_; |
23 using ::testing::Contains; | 24 using ::testing::Contains; |
24 using ::testing::ElementsAre; | 25 using ::testing::ElementsAre; |
25 using ::testing::IsEmpty; | 26 using ::testing::IsEmpty; |
26 using ::testing::Not; | 27 using ::testing::Not; |
27 using ::testing::Pointee; | 28 using ::testing::Pointee; |
28 using ::testing::UnorderedElementsAre; | 29 using ::testing::UnorderedElementsAre; |
29 | 30 |
30 namespace { | 31 namespace { |
31 | 32 |
| 33 std::vector<const autofill::PasswordForm*> GetRawPointers( |
| 34 const std::vector<std::unique_ptr<autofill::PasswordForm>>& forms) { |
| 35 std::vector<const autofill::PasswordForm*> result; |
| 36 std::transform(forms.begin(), forms.end(), std::back_inserter(result), |
| 37 [](const std::unique_ptr<autofill::PasswordForm>& form) { |
| 38 return form.get(); |
| 39 }); |
| 40 return result; |
| 41 } |
| 42 |
32 class ManagePasswordsStateTest : public testing::Test { | 43 class ManagePasswordsStateTest : public testing::Test { |
33 public: | 44 public: |
34 ManagePasswordsStateTest() : password_manager_(&stub_client_) {} | 45 ManagePasswordsStateTest() : password_manager_(&stub_client_) {} |
35 | 46 |
36 void SetUp() override { | 47 void SetUp() override { |
37 test_local_form_.origin = GURL("http://example.com"); | 48 test_local_form_.origin = GURL("http://example.com"); |
38 test_local_form_.username_value = base::ASCIIToUTF16("username"); | 49 test_local_form_.username_value = base::ASCIIToUTF16("username"); |
39 test_local_form_.password_value = base::ASCIIToUTF16("12345"); | 50 test_local_form_.password_value = base::ASCIIToUTF16("12345"); |
40 | 51 |
41 test_submitted_form_ = test_local_form_; | 52 test_submitted_form_ = test_local_form_; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 test_form_manager->federated_matches().size()); | 141 test_form_manager->federated_matches().size()); |
131 if (include_federated) { | 142 if (include_federated) { |
132 EXPECT_EQ(test_local_federated_form(), | 143 EXPECT_EQ(test_local_federated_form(), |
133 *test_form_manager->federated_matches().front()); | 144 *test_form_manager->federated_matches().front()); |
134 } | 145 } |
135 return test_form_manager; | 146 return test_form_manager; |
136 } | 147 } |
137 | 148 |
138 void ManagePasswordsStateTest::TestNoisyUpdates() { | 149 void ManagePasswordsStateTest::TestNoisyUpdates() { |
139 const std::vector<const autofill::PasswordForm*> forms = | 150 const std::vector<const autofill::PasswordForm*> forms = |
140 passwords_data_.GetCurrentForms(); | 151 GetRawPointers(passwords_data_.GetCurrentForms()); |
141 const std::vector<const autofill::PasswordForm*> federated_forms = | 152 const std::vector<const autofill::PasswordForm*> federated_forms = |
142 passwords_data_.federated_credentials_forms(); | 153 GetRawPointers(passwords_data_.federation_providers_forms()); |
143 const password_manager::ui::State state = passwords_data_.state(); | 154 const password_manager::ui::State state = passwords_data_.state(); |
144 const GURL origin = passwords_data_.origin(); | 155 const GURL origin = passwords_data_.origin(); |
145 | 156 |
146 // Push "Add". | 157 // Push "Add". |
147 autofill::PasswordForm form; | 158 autofill::PasswordForm form; |
148 form.origin = GURL("http://3rdparty.com"); | 159 form.origin = GURL("http://3rdparty.com"); |
149 form.username_value = base::ASCIIToUTF16("username"); | 160 form.username_value = base::ASCIIToUTF16("username"); |
150 form.password_value = base::ASCIIToUTF16("12345"); | 161 form.password_value = base::ASCIIToUTF16("12345"); |
151 password_manager::PasswordStoreChange change( | 162 password_manager::PasswordStoreChange change( |
152 password_manager::PasswordStoreChange::ADD, form); | 163 password_manager::PasswordStoreChange::ADD, form); |
153 password_manager::PasswordStoreChangeList list(1, change); | 164 password_manager::PasswordStoreChangeList list(1, change); |
154 passwords_data().ProcessLoginsChanged(list); | 165 passwords_data().ProcessLoginsChanged(list); |
155 EXPECT_EQ(forms, passwords_data().GetCurrentForms()); | 166 EXPECT_EQ(forms, GetRawPointers(passwords_data().GetCurrentForms())); |
156 EXPECT_EQ(federated_forms, passwords_data().federated_credentials_forms()); | 167 EXPECT_EQ(federated_forms, |
| 168 GetRawPointers(passwords_data().federation_providers_forms())); |
157 EXPECT_EQ(state, passwords_data().state()); | 169 EXPECT_EQ(state, passwords_data().state()); |
158 EXPECT_EQ(origin, passwords_data().origin()); | 170 EXPECT_EQ(origin, passwords_data().origin()); |
159 | 171 |
160 // Update the form. | 172 // Update the form. |
161 form.password_value = base::ASCIIToUTF16("password"); | 173 form.password_value = base::ASCIIToUTF16("password"); |
162 list[0] = password_manager::PasswordStoreChange( | 174 list[0] = password_manager::PasswordStoreChange( |
163 password_manager::PasswordStoreChange::UPDATE, form); | 175 password_manager::PasswordStoreChange::UPDATE, form); |
164 passwords_data().ProcessLoginsChanged(list); | 176 passwords_data().ProcessLoginsChanged(list); |
165 EXPECT_EQ(forms, passwords_data().GetCurrentForms()); | 177 EXPECT_EQ(forms, GetRawPointers(passwords_data().GetCurrentForms())); |
166 EXPECT_EQ(federated_forms, passwords_data().federated_credentials_forms()); | 178 EXPECT_EQ(federated_forms, |
| 179 GetRawPointers(passwords_data().federation_providers_forms())); |
167 EXPECT_EQ(state, passwords_data().state()); | 180 EXPECT_EQ(state, passwords_data().state()); |
168 EXPECT_EQ(origin, passwords_data().origin()); | 181 EXPECT_EQ(origin, passwords_data().origin()); |
169 | 182 |
170 // Delete the form. | 183 // Delete the form. |
171 list[0] = password_manager::PasswordStoreChange( | 184 list[0] = password_manager::PasswordStoreChange( |
172 password_manager::PasswordStoreChange::REMOVE, form); | 185 password_manager::PasswordStoreChange::REMOVE, form); |
173 passwords_data().ProcessLoginsChanged(list); | 186 passwords_data().ProcessLoginsChanged(list); |
174 EXPECT_EQ(forms, passwords_data().GetCurrentForms()); | 187 EXPECT_EQ(forms, GetRawPointers(passwords_data().GetCurrentForms())); |
175 EXPECT_EQ(federated_forms, passwords_data().federated_credentials_forms()); | 188 EXPECT_EQ(federated_forms, |
| 189 GetRawPointers(passwords_data().federation_providers_forms())); |
176 EXPECT_EQ(state, passwords_data().state()); | 190 EXPECT_EQ(state, passwords_data().state()); |
177 EXPECT_EQ(origin, passwords_data().origin()); | 191 EXPECT_EQ(origin, passwords_data().origin()); |
178 } | 192 } |
179 | 193 |
180 void ManagePasswordsStateTest::TestAllUpdates() { | 194 void ManagePasswordsStateTest::TestAllUpdates() { |
181 const std::vector<const autofill::PasswordForm*> forms = | 195 const std::vector<const autofill::PasswordForm*> forms = |
182 passwords_data_.GetCurrentForms(); | 196 GetRawPointers(passwords_data_.GetCurrentForms()); |
183 const std::vector<const autofill::PasswordForm*> federated_forms = | 197 const std::vector<const autofill::PasswordForm*> federated_forms = |
184 passwords_data_.federated_credentials_forms(); | 198 GetRawPointers(passwords_data_.federation_providers_forms()); |
185 const password_manager::ui::State state = passwords_data_.state(); | 199 const password_manager::ui::State state = passwords_data_.state(); |
186 const GURL origin = passwords_data_.origin(); | 200 const GURL origin = passwords_data_.origin(); |
187 EXPECT_NE(GURL::EmptyGURL(), origin); | 201 EXPECT_NE(GURL::EmptyGURL(), origin); |
188 | 202 |
189 // Push "Add". | 203 // Push "Add". |
190 autofill::PasswordForm form; | 204 autofill::PasswordForm form; |
191 form.origin = origin; | 205 form.origin = origin; |
192 form.username_value = base::ASCIIToUTF16("user15"); | 206 form.username_value = base::ASCIIToUTF16("user15"); |
193 form.password_value = base::ASCIIToUTF16("12345"); | 207 form.password_value = base::ASCIIToUTF16("12345"); |
194 password_manager::PasswordStoreChange change( | 208 password_manager::PasswordStoreChange change( |
195 password_manager::PasswordStoreChange::ADD, form); | 209 password_manager::PasswordStoreChange::ADD, form); |
196 password_manager::PasswordStoreChangeList list(1, change); | 210 password_manager::PasswordStoreChangeList list(1, change); |
197 passwords_data().ProcessLoginsChanged(list); | 211 passwords_data().ProcessLoginsChanged(list); |
198 EXPECT_THAT(passwords_data().GetCurrentForms(), Contains(Pointee(form))); | 212 EXPECT_THAT(passwords_data().GetCurrentForms(), Contains(Pointee(form))); |
199 EXPECT_EQ(federated_forms, passwords_data().federated_credentials_forms()); | 213 EXPECT_EQ(federated_forms, |
| 214 GetRawPointers(passwords_data().federation_providers_forms())); |
200 EXPECT_EQ(state, passwords_data().state()); | 215 EXPECT_EQ(state, passwords_data().state()); |
201 EXPECT_EQ(origin, passwords_data().origin()); | 216 EXPECT_EQ(origin, passwords_data().origin()); |
202 | 217 |
203 // Update the form. | 218 // Update the form. |
204 form.password_value = base::ASCIIToUTF16("password"); | 219 form.password_value = base::ASCIIToUTF16("password"); |
205 list[0] = password_manager::PasswordStoreChange( | 220 list[0] = password_manager::PasswordStoreChange( |
206 password_manager::PasswordStoreChange::UPDATE, form); | 221 password_manager::PasswordStoreChange::UPDATE, form); |
207 passwords_data().ProcessLoginsChanged(list); | 222 passwords_data().ProcessLoginsChanged(list); |
208 EXPECT_THAT(passwords_data().GetCurrentForms(), Contains(Pointee(form))); | 223 EXPECT_THAT(passwords_data().GetCurrentForms(), Contains(Pointee(form))); |
209 EXPECT_EQ(federated_forms, passwords_data().federated_credentials_forms()); | 224 EXPECT_EQ(federated_forms, |
| 225 GetRawPointers(passwords_data().federation_providers_forms())); |
210 EXPECT_EQ(state, passwords_data().state()); | 226 EXPECT_EQ(state, passwords_data().state()); |
211 EXPECT_EQ(origin, passwords_data().origin()); | 227 EXPECT_EQ(origin, passwords_data().origin()); |
212 | 228 |
213 // Delete the form. | 229 // Delete the form. |
214 list[0] = password_manager::PasswordStoreChange( | 230 list[0] = password_manager::PasswordStoreChange( |
215 password_manager::PasswordStoreChange::REMOVE, form); | 231 password_manager::PasswordStoreChange::REMOVE, form); |
216 passwords_data().ProcessLoginsChanged(list); | 232 passwords_data().ProcessLoginsChanged(list); |
217 EXPECT_EQ(forms, passwords_data().GetCurrentForms()); | 233 EXPECT_EQ(forms, GetRawPointers(passwords_data().GetCurrentForms())); |
218 EXPECT_EQ(federated_forms, passwords_data().federated_credentials_forms()); | 234 EXPECT_EQ(federated_forms, |
| 235 GetRawPointers(passwords_data().federation_providers_forms())); |
219 EXPECT_EQ(state, passwords_data().state()); | 236 EXPECT_EQ(state, passwords_data().state()); |
220 EXPECT_EQ(origin, passwords_data().origin()); | 237 EXPECT_EQ(origin, passwords_data().origin()); |
221 | 238 |
222 TestNoisyUpdates(); | 239 TestNoisyUpdates(); |
223 } | 240 } |
224 | 241 |
225 void ManagePasswordsStateTest::TestBlacklistedUpdates() { | 242 void ManagePasswordsStateTest::TestBlacklistedUpdates() { |
226 const std::vector<const autofill::PasswordForm*> forms = | 243 const std::vector<const autofill::PasswordForm*> forms = |
227 passwords_data_.GetCurrentForms(); | 244 GetRawPointers(passwords_data_.GetCurrentForms()); |
228 const std::vector<const autofill::PasswordForm*> federated_forms = | 245 const std::vector<const autofill::PasswordForm*> federated_forms = |
229 passwords_data_.federated_credentials_forms(); | 246 GetRawPointers(passwords_data_.federation_providers_forms()); |
230 const password_manager::ui::State state = passwords_data_.state(); | 247 const password_manager::ui::State state = passwords_data_.state(); |
231 const GURL origin = passwords_data_.origin(); | 248 const GURL origin = passwords_data_.origin(); |
232 EXPECT_NE(GURL::EmptyGURL(), origin); | 249 EXPECT_NE(GURL::EmptyGURL(), origin); |
233 | 250 |
234 // Process the blacklisted form. | 251 // Process the blacklisted form. |
235 autofill::PasswordForm blacklisted; | 252 autofill::PasswordForm blacklisted; |
236 blacklisted.blacklisted_by_user = true; | 253 blacklisted.blacklisted_by_user = true; |
237 blacklisted.origin = origin; | 254 blacklisted.origin = origin; |
238 password_manager::PasswordStoreChangeList list; | 255 password_manager::PasswordStoreChangeList list; |
239 list.push_back(password_manager::PasswordStoreChange( | 256 list.push_back(password_manager::PasswordStoreChange( |
240 password_manager::PasswordStoreChange::ADD, blacklisted)); | 257 password_manager::PasswordStoreChange::ADD, blacklisted)); |
241 passwords_data().ProcessLoginsChanged(list); | 258 passwords_data().ProcessLoginsChanged(list); |
242 EXPECT_EQ(forms, passwords_data().GetCurrentForms()); | 259 EXPECT_EQ(forms, GetRawPointers(passwords_data().GetCurrentForms())); |
243 EXPECT_EQ(federated_forms, passwords_data().federated_credentials_forms()); | 260 EXPECT_EQ(federated_forms, |
| 261 GetRawPointers(passwords_data().federation_providers_forms())); |
244 EXPECT_EQ(state, passwords_data().state()); | 262 EXPECT_EQ(state, passwords_data().state()); |
245 EXPECT_EQ(origin, passwords_data().origin()); | 263 EXPECT_EQ(origin, passwords_data().origin()); |
246 | 264 |
247 // Delete the blacklisted form. | 265 // Delete the blacklisted form. |
248 list[0] = password_manager::PasswordStoreChange( | 266 list[0] = password_manager::PasswordStoreChange( |
249 password_manager::PasswordStoreChange::REMOVE, blacklisted); | 267 password_manager::PasswordStoreChange::REMOVE, blacklisted); |
250 passwords_data().ProcessLoginsChanged(list); | 268 passwords_data().ProcessLoginsChanged(list); |
251 EXPECT_EQ(forms, passwords_data().GetCurrentForms()); | 269 EXPECT_EQ(forms, GetRawPointers(passwords_data().GetCurrentForms())); |
252 EXPECT_EQ(federated_forms, passwords_data().federated_credentials_forms()); | 270 EXPECT_EQ(federated_forms, |
| 271 GetRawPointers(passwords_data().federation_providers_forms())); |
253 EXPECT_EQ(state, passwords_data().state()); | 272 EXPECT_EQ(state, passwords_data().state()); |
254 EXPECT_EQ(origin, passwords_data().origin()); | 273 EXPECT_EQ(origin, passwords_data().origin()); |
255 } | 274 } |
256 | 275 |
257 TEST_F(ManagePasswordsStateTest, DefaultState) { | 276 TEST_F(ManagePasswordsStateTest, DefaultState) { |
258 EXPECT_THAT(passwords_data().GetCurrentForms(), IsEmpty()); | 277 EXPECT_THAT(passwords_data().GetCurrentForms(), IsEmpty()); |
259 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 278 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
260 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, passwords_data().state()); | 279 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, passwords_data().state()); |
261 EXPECT_EQ(GURL::EmptyGURL(), passwords_data().origin()); | 280 EXPECT_EQ(GURL::EmptyGURL(), passwords_data().origin()); |
262 EXPECT_FALSE(passwords_data().form_manager()); | 281 EXPECT_FALSE(passwords_data().form_manager()); |
263 | 282 |
264 TestNoisyUpdates(); | 283 TestNoisyUpdates(); |
265 } | 284 } |
266 | 285 |
267 TEST_F(ManagePasswordsStateTest, PasswordSubmitted) { | 286 TEST_F(ManagePasswordsStateTest, PasswordSubmitted) { |
268 test_stored_forms().push_back(new autofill::PasswordForm(test_local_form())); | 287 test_stored_forms().push_back(new autofill::PasswordForm(test_local_form())); |
269 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 288 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
270 CreateFormManager()); | 289 CreateFormManager()); |
271 test_form_manager->ProvisionallySave( | 290 test_form_manager->ProvisionallySave( |
272 test_submitted_form(), | 291 test_submitted_form(), |
273 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 292 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
274 passwords_data().OnPendingPassword(std::move(test_form_manager)); | 293 passwords_data().OnPendingPassword(std::move(test_form_manager)); |
275 | 294 |
276 EXPECT_THAT(passwords_data().GetCurrentForms(), | 295 EXPECT_THAT(passwords_data().GetCurrentForms(), |
277 ElementsAre(Pointee(test_local_form()))); | 296 ElementsAre(Pointee(test_local_form()))); |
278 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 297 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
279 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 298 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
280 passwords_data().state()); | 299 passwords_data().state()); |
281 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); | 300 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); |
282 ASSERT_TRUE(passwords_data().form_manager()); | 301 ASSERT_TRUE(passwords_data().form_manager()); |
283 EXPECT_EQ(test_submitted_form(), | 302 EXPECT_EQ(test_submitted_form(), |
284 passwords_data().form_manager()->pending_credentials()); | 303 passwords_data().form_manager()->pending_credentials()); |
285 TestAllUpdates(); | 304 TestAllUpdates(); |
286 } | 305 } |
287 | 306 |
288 TEST_F(ManagePasswordsStateTest, PasswordSaved) { | 307 TEST_F(ManagePasswordsStateTest, PasswordSaved) { |
289 test_stored_forms().push_back(new autofill::PasswordForm(test_local_form())); | 308 test_stored_forms().push_back(new autofill::PasswordForm(test_local_form())); |
290 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 309 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
291 CreateFormManager()); | 310 CreateFormManager()); |
292 test_form_manager->ProvisionallySave( | 311 test_form_manager->ProvisionallySave( |
293 test_submitted_form(), | 312 test_submitted_form(), |
294 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 313 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
295 passwords_data().OnPendingPassword(std::move(test_form_manager)); | 314 passwords_data().OnPendingPassword(std::move(test_form_manager)); |
296 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 315 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
297 passwords_data().state()); | 316 passwords_data().state()); |
298 | 317 |
299 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE); | 318 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE); |
300 EXPECT_THAT(passwords_data().GetCurrentForms(), | 319 EXPECT_THAT(passwords_data().GetCurrentForms(), |
301 ElementsAre(Pointee(test_local_form()))); | 320 ElementsAre(Pointee(test_local_form()))); |
302 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 321 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
303 EXPECT_EQ(password_manager::ui::MANAGE_STATE, | 322 EXPECT_EQ(password_manager::ui::MANAGE_STATE, |
304 passwords_data().state()); | 323 passwords_data().state()); |
305 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); | 324 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); |
306 TestAllUpdates(); | 325 TestAllUpdates(); |
307 } | 326 } |
308 | 327 |
309 TEST_F(ManagePasswordsStateTest, PasswordSubmittedFederationsPresent) { | 328 TEST_F(ManagePasswordsStateTest, PasswordSubmittedFederationsPresent) { |
310 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 329 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
311 CreateFormManagerWithFederation()); | 330 CreateFormManagerWithFederation()); |
312 test_form_manager->ProvisionallySave( | 331 test_form_manager->ProvisionallySave( |
313 test_submitted_form(), | 332 test_submitted_form(), |
314 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 333 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
315 passwords_data().OnPendingPassword(std::move(test_form_manager)); | 334 passwords_data().OnPendingPassword(std::move(test_form_manager)); |
316 | 335 |
317 EXPECT_THAT(passwords_data().GetCurrentForms(), | 336 EXPECT_THAT(passwords_data().GetCurrentForms(), |
318 ElementsAre(Pointee(test_local_federated_form()))); | 337 ElementsAre(Pointee(test_local_federated_form()))); |
319 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 338 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
320 } | 339 } |
321 | 340 |
322 TEST_F(ManagePasswordsStateTest, OnRequestCredentials) { | 341 TEST_F(ManagePasswordsStateTest, OnRequestCredentials) { |
323 ScopedVector<autofill::PasswordForm> local_credentials; | 342 std::vector<std::unique_ptr<autofill::PasswordForm>> local_credentials; |
324 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 343 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); |
325 ScopedVector<autofill::PasswordForm> federated_credentials; | 344 std::vector<std::unique_ptr<autofill::PasswordForm>> federated_credentials; |
326 federated_credentials.push_back( | 345 federated_credentials.emplace_back( |
327 new autofill::PasswordForm(test_federated_form())); | 346 new autofill::PasswordForm(test_federated_form())); |
328 const GURL origin = test_local_form().origin; | 347 const GURL origin = test_local_form().origin; |
329 passwords_data().OnRequestCredentials( | 348 passwords_data().OnRequestCredentials( |
330 std::move(local_credentials), std::move(federated_credentials), origin); | 349 std::move(local_credentials), std::move(federated_credentials), origin); |
331 passwords_data().set_credentials_callback(base::Bind( | 350 passwords_data().set_credentials_callback(base::Bind( |
332 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); | 351 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); |
333 EXPECT_THAT(passwords_data().GetCurrentForms(), | 352 EXPECT_THAT(passwords_data().GetCurrentForms(), |
334 ElementsAre(Pointee(test_local_form()))); | 353 ElementsAre(Pointee(test_local_form()))); |
335 EXPECT_THAT(passwords_data().federated_credentials_forms(), | 354 EXPECT_THAT(passwords_data().federation_providers_forms(), |
336 ElementsAre(Pointee(test_federated_form()))); | 355 ElementsAre(Pointee(test_federated_form()))); |
337 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 356 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
338 passwords_data().state()); | 357 passwords_data().state()); |
339 EXPECT_EQ(origin, passwords_data().origin()); | 358 EXPECT_EQ(origin, passwords_data().origin()); |
340 TestAllUpdates(); | 359 TestAllUpdates(); |
341 | 360 |
342 EXPECT_CALL(*this, CredentialCallback(nullptr)); | 361 EXPECT_CALL(*this, CredentialCallback(nullptr)); |
343 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE); | 362 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE); |
344 EXPECT_TRUE(passwords_data().credentials_callback().is_null()); | 363 EXPECT_TRUE(passwords_data().credentials_callback().is_null()); |
345 EXPECT_THAT(passwords_data().GetCurrentForms(), | 364 EXPECT_THAT(passwords_data().GetCurrentForms(), |
346 ElementsAre(Pointee(test_local_form()))); | 365 ElementsAre(Pointee(test_local_form()))); |
347 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 366 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
348 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); | 367 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); |
349 EXPECT_EQ(origin, passwords_data().origin()); | 368 EXPECT_EQ(origin, passwords_data().origin()); |
350 TestAllUpdates(); | 369 TestAllUpdates(); |
351 } | 370 } |
352 | 371 |
353 TEST_F(ManagePasswordsStateTest, AutoSignin) { | 372 TEST_F(ManagePasswordsStateTest, AutoSignin) { |
354 ScopedVector<autofill::PasswordForm> local_credentials; | 373 std::vector<std::unique_ptr<autofill::PasswordForm>> local_credentials; |
355 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 374 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); |
356 passwords_data().OnAutoSignin(std::move(local_credentials), | 375 passwords_data().OnAutoSignin(std::move(local_credentials), |
357 test_local_form().origin); | 376 test_local_form().origin); |
358 EXPECT_THAT(passwords_data().GetCurrentForms(), | 377 EXPECT_THAT(passwords_data().GetCurrentForms(), |
359 ElementsAre(Pointee(test_local_form()))); | 378 ElementsAre(Pointee(test_local_form()))); |
360 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 379 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
361 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, passwords_data().state()); | 380 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, passwords_data().state()); |
362 EXPECT_EQ(test_local_form().origin, passwords_data().origin()); | 381 EXPECT_EQ(test_local_form().origin, passwords_data().origin()); |
363 TestAllUpdates(); | 382 TestAllUpdates(); |
364 | 383 |
365 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE); | 384 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE); |
366 EXPECT_THAT(passwords_data().GetCurrentForms(), | 385 EXPECT_THAT(passwords_data().GetCurrentForms(), |
367 ElementsAre(Pointee(test_local_form()))); | 386 ElementsAre(Pointee(test_local_form()))); |
368 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 387 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
369 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); | 388 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); |
370 EXPECT_EQ(test_local_form().origin, passwords_data().origin()); | 389 EXPECT_EQ(test_local_form().origin, passwords_data().origin()); |
371 TestAllUpdates(); | 390 TestAllUpdates(); |
372 } | 391 } |
373 | 392 |
374 TEST_F(ManagePasswordsStateTest, AutomaticPasswordSave) { | 393 TEST_F(ManagePasswordsStateTest, AutomaticPasswordSave) { |
375 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 394 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
376 CreateFormManager()); | 395 CreateFormManager()); |
377 test_form_manager->ProvisionallySave( | 396 test_form_manager->ProvisionallySave( |
378 test_submitted_form(), | 397 test_submitted_form(), |
379 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 398 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
380 | 399 |
381 passwords_data().OnAutomaticPasswordSave(std::move(test_form_manager)); | 400 passwords_data().OnAutomaticPasswordSave(std::move(test_form_manager)); |
382 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, passwords_data().state()); | 401 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, passwords_data().state()); |
383 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); | 402 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); |
384 ASSERT_TRUE(passwords_data().form_manager()); | 403 ASSERT_TRUE(passwords_data().form_manager()); |
385 EXPECT_EQ(test_submitted_form(), | 404 EXPECT_EQ(test_submitted_form(), |
386 passwords_data().form_manager()->pending_credentials()); | 405 passwords_data().form_manager()->pending_credentials()); |
387 TestAllUpdates(); | 406 TestAllUpdates(); |
388 | 407 |
389 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE); | 408 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE); |
390 EXPECT_THAT(passwords_data().GetCurrentForms(), | 409 EXPECT_THAT(passwords_data().GetCurrentForms(), |
391 ElementsAre(Pointee(test_submitted_form()))); | 410 ElementsAre(Pointee(test_submitted_form()))); |
392 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 411 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
393 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); | 412 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); |
394 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); | 413 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); |
395 TestAllUpdates(); | 414 TestAllUpdates(); |
396 } | 415 } |
397 | 416 |
398 TEST_F(ManagePasswordsStateTest, AutomaticPasswordSaveWithFederations) { | 417 TEST_F(ManagePasswordsStateTest, AutomaticPasswordSaveWithFederations) { |
399 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 418 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
400 CreateFormManagerWithFederation()); | 419 CreateFormManagerWithFederation()); |
401 test_form_manager->ProvisionallySave( | 420 test_form_manager->ProvisionallySave( |
402 test_submitted_form(), | 421 test_submitted_form(), |
403 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 422 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
404 | 423 |
405 passwords_data().OnAutomaticPasswordSave(std::move(test_form_manager)); | 424 passwords_data().OnAutomaticPasswordSave(std::move(test_form_manager)); |
406 EXPECT_THAT(passwords_data().GetCurrentForms(), | 425 EXPECT_THAT(passwords_data().GetCurrentForms(), |
407 UnorderedElementsAre(Pointee(test_submitted_form()), | 426 UnorderedElementsAre(Pointee(test_submitted_form()), |
408 Pointee(test_local_federated_form()))); | 427 Pointee(test_local_federated_form()))); |
409 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 428 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
410 } | 429 } |
411 | 430 |
412 TEST_F(ManagePasswordsStateTest, PasswordAutofilled) { | 431 TEST_F(ManagePasswordsStateTest, PasswordAutofilled) { |
413 autofill::PasswordFormMap password_form_map; | 432 autofill::PasswordFormMap password_form_map; |
414 password_form_map.insert(std::make_pair( | 433 password_form_map.insert(std::make_pair( |
415 test_local_form().username_value, | 434 test_local_form().username_value, |
416 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); | 435 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); |
417 GURL origin("https://example.com"); | 436 GURL origin("https://example.com"); |
418 passwords_data().OnPasswordAutofilled(password_form_map, origin, nullptr); | 437 passwords_data().OnPasswordAutofilled(password_form_map, origin, nullptr); |
419 | 438 |
420 EXPECT_THAT(passwords_data().GetCurrentForms(), | 439 EXPECT_THAT(passwords_data().GetCurrentForms(), |
421 ElementsAre(Pointee(test_local_form()))); | 440 ElementsAre(Pointee(test_local_form()))); |
422 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 441 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
423 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); | 442 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); |
424 EXPECT_EQ(origin, passwords_data().origin()); | 443 EXPECT_EQ(origin, passwords_data().origin()); |
425 | 444 |
426 // |passwords_data| should hold a separate copy of test_local_form(). | |
427 EXPECT_THAT(passwords_data().GetCurrentForms(), | |
428 Not(Contains(&test_local_form()))); | |
429 TestAllUpdates(); | 445 TestAllUpdates(); |
430 } | 446 } |
431 | 447 |
432 TEST_F(ManagePasswordsStateTest, PasswordAutofillWithSavedFederations) { | 448 TEST_F(ManagePasswordsStateTest, PasswordAutofillWithSavedFederations) { |
433 autofill::PasswordFormMap password_form_map; | 449 autofill::PasswordFormMap password_form_map; |
434 password_form_map.insert(std::make_pair( | 450 password_form_map.insert(std::make_pair( |
435 test_local_form().username_value, | 451 test_local_form().username_value, |
436 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); | 452 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); |
437 GURL origin("https://example.com"); | 453 GURL origin("https://example.com"); |
438 std::vector<std::unique_ptr<autofill::PasswordForm>> federated; | 454 std::vector<std::unique_ptr<autofill::PasswordForm>> federated; |
439 federated.push_back(base::WrapUnique( | 455 federated.push_back(base::WrapUnique( |
440 new autofill::PasswordForm(test_local_federated_form()))); | 456 new autofill::PasswordForm(test_local_federated_form()))); |
441 passwords_data().OnPasswordAutofilled(password_form_map, origin, &federated); | 457 passwords_data().OnPasswordAutofilled(password_form_map, origin, &federated); |
442 | 458 |
443 // |federated| represents the locally saved federations. These are bundled in | 459 // |federated| represents the locally saved federations. These are bundled in |
444 // the "current forms". | 460 // the "current forms". |
445 EXPECT_THAT(passwords_data().GetCurrentForms(), | 461 EXPECT_THAT(passwords_data().GetCurrentForms(), |
446 UnorderedElementsAre(Pointee(test_local_form()), | 462 UnorderedElementsAre(Pointee(test_local_form()), |
447 Pointee(test_local_federated_form()))); | 463 Pointee(test_local_federated_form()))); |
448 // |federated_credentials_forms()| do not refer to the saved federations. | 464 // |federated_credentials_forms()| do not refer to the saved federations. |
449 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 465 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
450 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); | 466 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); |
451 } | 467 } |
452 | 468 |
453 TEST_F(ManagePasswordsStateTest, ActiveOnMixedPSLAndNonPSLMatched) { | 469 TEST_F(ManagePasswordsStateTest, ActiveOnMixedPSLAndNonPSLMatched) { |
454 autofill::PasswordFormMap password_form_map; | 470 autofill::PasswordFormMap password_form_map; |
455 password_form_map.insert(std::make_pair( | 471 password_form_map.insert(std::make_pair( |
456 test_local_form().username_value, | 472 test_local_form().username_value, |
457 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); | 473 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); |
458 autofill::PasswordForm psl_matched_test_form = test_local_form(); | 474 autofill::PasswordForm psl_matched_test_form = test_local_form(); |
459 psl_matched_test_form.is_public_suffix_match = true; | 475 psl_matched_test_form.is_public_suffix_match = true; |
460 password_form_map.insert(std::make_pair( | 476 password_form_map.insert(std::make_pair( |
461 psl_matched_test_form.username_value, | 477 psl_matched_test_form.username_value, |
462 base::WrapUnique(new autofill::PasswordForm(psl_matched_test_form)))); | 478 base::WrapUnique(new autofill::PasswordForm(psl_matched_test_form)))); |
463 GURL origin("https://example.com"); | 479 GURL origin("https://example.com"); |
464 passwords_data().OnPasswordAutofilled(password_form_map, origin, nullptr); | 480 passwords_data().OnPasswordAutofilled(password_form_map, origin, nullptr); |
465 | 481 |
466 EXPECT_THAT(passwords_data().GetCurrentForms(), | 482 EXPECT_THAT(passwords_data().GetCurrentForms(), |
467 ElementsAre(Pointee(test_local_form()))); | 483 ElementsAre(Pointee(test_local_form()))); |
468 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 484 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
469 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); | 485 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); |
470 EXPECT_EQ(origin, passwords_data().origin()); | 486 EXPECT_EQ(origin, passwords_data().origin()); |
471 | 487 |
472 // |passwords_data| should hold a separate copy of test_local_form(). | |
473 EXPECT_THAT(passwords_data().GetCurrentForms(), | |
474 Not(Contains(&test_local_form()))); | |
475 TestAllUpdates(); | 488 TestAllUpdates(); |
476 } | 489 } |
477 | 490 |
478 TEST_F(ManagePasswordsStateTest, InactiveOnPSLMatched) { | 491 TEST_F(ManagePasswordsStateTest, InactiveOnPSLMatched) { |
479 autofill::PasswordForm psl_matched_test_form = test_local_form(); | 492 autofill::PasswordForm psl_matched_test_form = test_local_form(); |
480 psl_matched_test_form.is_public_suffix_match = true; | 493 psl_matched_test_form.is_public_suffix_match = true; |
481 autofill::PasswordFormMap password_form_map; | 494 autofill::PasswordFormMap password_form_map; |
482 password_form_map.insert(std::make_pair( | 495 password_form_map.insert(std::make_pair( |
483 psl_matched_test_form.username_value, | 496 psl_matched_test_form.username_value, |
484 base::WrapUnique(new autofill::PasswordForm(psl_matched_test_form)))); | 497 base::WrapUnique(new autofill::PasswordForm(psl_matched_test_form)))); |
485 passwords_data().OnPasswordAutofilled( | 498 passwords_data().OnPasswordAutofilled( |
486 password_form_map, GURL("https://m.example.com/"), nullptr); | 499 password_form_map, GURL("https://m.example.com/"), nullptr); |
487 | 500 |
488 EXPECT_THAT(passwords_data().GetCurrentForms(), IsEmpty()); | 501 EXPECT_THAT(passwords_data().GetCurrentForms(), IsEmpty()); |
489 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 502 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
490 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, passwords_data().state()); | 503 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, passwords_data().state()); |
491 EXPECT_EQ(GURL::EmptyGURL(), passwords_data().origin()); | 504 EXPECT_EQ(GURL::EmptyGURL(), passwords_data().origin()); |
492 EXPECT_FALSE(passwords_data().form_manager()); | 505 EXPECT_FALSE(passwords_data().form_manager()); |
493 } | 506 } |
494 | 507 |
495 TEST_F(ManagePasswordsStateTest, OnInactive) { | 508 TEST_F(ManagePasswordsStateTest, OnInactive) { |
496 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 509 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
497 CreateFormManager()); | 510 CreateFormManager()); |
498 test_form_manager->ProvisionallySave( | 511 test_form_manager->ProvisionallySave( |
499 test_submitted_form(), | 512 test_submitted_form(), |
500 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 513 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
501 passwords_data().OnPendingPassword(std::move(test_form_manager)); | 514 passwords_data().OnPendingPassword(std::move(test_form_manager)); |
502 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 515 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
503 passwords_data().state()); | 516 passwords_data().state()); |
504 passwords_data().OnInactive(); | 517 passwords_data().OnInactive(); |
505 EXPECT_THAT(passwords_data().GetCurrentForms(), IsEmpty()); | 518 EXPECT_THAT(passwords_data().GetCurrentForms(), IsEmpty()); |
506 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 519 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
507 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, passwords_data().state()); | 520 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, passwords_data().state()); |
508 EXPECT_EQ(GURL::EmptyGURL(), passwords_data().origin()); | 521 EXPECT_EQ(GURL::EmptyGURL(), passwords_data().origin()); |
509 EXPECT_FALSE(passwords_data().form_manager()); | 522 EXPECT_FALSE(passwords_data().form_manager()); |
510 TestNoisyUpdates(); | 523 TestNoisyUpdates(); |
511 } | 524 } |
512 | 525 |
513 TEST_F(ManagePasswordsStateTest, PendingPasswordAddBlacklisted) { | 526 TEST_F(ManagePasswordsStateTest, PendingPasswordAddBlacklisted) { |
514 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 527 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
515 CreateFormManager()); | 528 CreateFormManager()); |
516 test_form_manager->ProvisionallySave( | 529 test_form_manager->ProvisionallySave( |
517 test_submitted_form(), | 530 test_submitted_form(), |
518 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 531 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
519 passwords_data().OnPendingPassword(std::move(test_form_manager)); | 532 passwords_data().OnPendingPassword(std::move(test_form_manager)); |
520 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, | 533 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
521 passwords_data().state()); | 534 passwords_data().state()); |
522 | 535 |
523 TestBlacklistedUpdates(); | 536 TestBlacklistedUpdates(); |
524 } | 537 } |
525 | 538 |
526 TEST_F(ManagePasswordsStateTest, RequestCredentialsAddBlacklisted) { | 539 TEST_F(ManagePasswordsStateTest, RequestCredentialsAddBlacklisted) { |
527 ScopedVector<autofill::PasswordForm> local_credentials; | 540 std::vector<std::unique_ptr<autofill::PasswordForm>> local_credentials; |
528 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 541 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); |
529 ScopedVector<autofill::PasswordForm> federated_credentials; | 542 std::vector<std::unique_ptr<autofill::PasswordForm>> federated_credentials; |
530 federated_credentials.push_back( | 543 federated_credentials.emplace_back( |
531 new autofill::PasswordForm(test_federated_form())); | 544 new autofill::PasswordForm(test_federated_form())); |
532 const GURL origin = test_local_form().origin; | 545 const GURL origin = test_local_form().origin; |
533 passwords_data().OnRequestCredentials( | 546 passwords_data().OnRequestCredentials( |
534 std::move(local_credentials), std::move(federated_credentials), origin); | 547 std::move(local_credentials), std::move(federated_credentials), origin); |
535 passwords_data().set_credentials_callback(base::Bind( | 548 passwords_data().set_credentials_callback(base::Bind( |
536 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); | 549 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); |
537 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, | 550 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
538 passwords_data().state()); | 551 passwords_data().state()); |
539 | 552 |
540 TestBlacklistedUpdates(); | 553 TestBlacklistedUpdates(); |
541 } | 554 } |
542 | 555 |
543 TEST_F(ManagePasswordsStateTest, AutoSigninAddBlacklisted) { | 556 TEST_F(ManagePasswordsStateTest, AutoSigninAddBlacklisted) { |
544 ScopedVector<autofill::PasswordForm> local_credentials; | 557 std::vector<std::unique_ptr<autofill::PasswordForm>> local_credentials; |
545 local_credentials.push_back(new autofill::PasswordForm(test_local_form())); | 558 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); |
546 passwords_data().OnAutoSignin(std::move(local_credentials), | 559 passwords_data().OnAutoSignin(std::move(local_credentials), |
547 test_local_form().origin); | 560 test_local_form().origin); |
548 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, passwords_data().state()); | 561 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, passwords_data().state()); |
549 | 562 |
550 TestBlacklistedUpdates(); | 563 TestBlacklistedUpdates(); |
551 } | 564 } |
552 | 565 |
553 TEST_F(ManagePasswordsStateTest, AutomaticPasswordSaveAddBlacklisted) { | 566 TEST_F(ManagePasswordsStateTest, AutomaticPasswordSaveAddBlacklisted) { |
554 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 567 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
555 CreateFormManager()); | 568 CreateFormManager()); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 test_stored_forms().push_back(new autofill::PasswordForm(test_local_form())); | 604 test_stored_forms().push_back(new autofill::PasswordForm(test_local_form())); |
592 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 605 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
593 CreateFormManager()); | 606 CreateFormManager()); |
594 test_form_manager->ProvisionallySave( | 607 test_form_manager->ProvisionallySave( |
595 test_submitted_form(), | 608 test_submitted_form(), |
596 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 609 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
597 passwords_data().OnUpdatePassword(std::move(test_form_manager)); | 610 passwords_data().OnUpdatePassword(std::move(test_form_manager)); |
598 | 611 |
599 EXPECT_THAT(passwords_data().GetCurrentForms(), | 612 EXPECT_THAT(passwords_data().GetCurrentForms(), |
600 ElementsAre(Pointee(test_local_form()))); | 613 ElementsAre(Pointee(test_local_form()))); |
601 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 614 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
602 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 615 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
603 passwords_data().state()); | 616 passwords_data().state()); |
604 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); | 617 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); |
605 ASSERT_TRUE(passwords_data().form_manager()); | 618 ASSERT_TRUE(passwords_data().form_manager()); |
606 EXPECT_EQ(test_submitted_form(), | 619 EXPECT_EQ(test_submitted_form(), |
607 passwords_data().form_manager()->pending_credentials()); | 620 passwords_data().form_manager()->pending_credentials()); |
608 TestAllUpdates(); | 621 TestAllUpdates(); |
609 } | 622 } |
610 | 623 |
611 TEST_F(ManagePasswordsStateTest, AndroidPasswordUpdateSubmitted) { | 624 TEST_F(ManagePasswordsStateTest, AndroidPasswordUpdateSubmitted) { |
612 autofill::PasswordForm android_form; | 625 autofill::PasswordForm android_form; |
613 android_form.signon_realm = "android://dHJhc2g=@com.example.android/"; | 626 android_form.signon_realm = "android://dHJhc2g=@com.example.android/"; |
614 android_form.origin = GURL(android_form.signon_realm); | 627 android_form.origin = GURL(android_form.signon_realm); |
615 android_form.username_value = test_submitted_form().username_value; | 628 android_form.username_value = test_submitted_form().username_value; |
616 android_form.password_value = base::ASCIIToUTF16("old pass"); | 629 android_form.password_value = base::ASCIIToUTF16("old pass"); |
617 test_stored_forms().push_back(new autofill::PasswordForm(android_form)); | 630 test_stored_forms().push_back(new autofill::PasswordForm(android_form)); |
618 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 631 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
619 CreateFormManager()); | 632 CreateFormManager()); |
620 test_form_manager->ProvisionallySave( | 633 test_form_manager->ProvisionallySave( |
621 test_submitted_form(), | 634 test_submitted_form(), |
622 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 635 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
623 passwords_data().OnUpdatePassword(std::move(test_form_manager)); | 636 passwords_data().OnUpdatePassword(std::move(test_form_manager)); |
624 | 637 |
625 EXPECT_THAT(passwords_data().GetCurrentForms(), | 638 EXPECT_THAT(passwords_data().GetCurrentForms(), |
626 ElementsAre(Pointee(android_form))); | 639 ElementsAre(Pointee(android_form))); |
627 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 640 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
628 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, | 641 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, |
629 passwords_data().state()); | 642 passwords_data().state()); |
630 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); | 643 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin()); |
631 ASSERT_TRUE(passwords_data().form_manager()); | 644 ASSERT_TRUE(passwords_data().form_manager()); |
632 android_form.password_value = test_submitted_form().password_value; | 645 android_form.password_value = test_submitted_form().password_value; |
633 EXPECT_EQ(android_form, | 646 EXPECT_EQ(android_form, |
634 passwords_data().form_manager()->pending_credentials()); | 647 passwords_data().form_manager()->pending_credentials()); |
635 TestAllUpdates(); | 648 TestAllUpdates(); |
636 } | 649 } |
637 | 650 |
638 TEST_F(ManagePasswordsStateTest, PasswordUpdateSubmittedWithFederations) { | 651 TEST_F(ManagePasswordsStateTest, PasswordUpdateSubmittedWithFederations) { |
639 test_stored_forms().push_back(new autofill::PasswordForm(test_local_form())); | 652 test_stored_forms().push_back(new autofill::PasswordForm(test_local_form())); |
640 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 653 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
641 CreateFormManagerWithFederation()); | 654 CreateFormManagerWithFederation()); |
642 test_form_manager->ProvisionallySave( | 655 test_form_manager->ProvisionallySave( |
643 test_submitted_form(), | 656 test_submitted_form(), |
644 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 657 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
645 passwords_data().OnUpdatePassword(std::move(test_form_manager)); | 658 passwords_data().OnUpdatePassword(std::move(test_form_manager)); |
646 | 659 |
647 EXPECT_THAT(passwords_data().GetCurrentForms(), | 660 EXPECT_THAT(passwords_data().GetCurrentForms(), |
648 UnorderedElementsAre(Pointee(test_local_form()), | 661 UnorderedElementsAre(Pointee(test_local_form()), |
649 Pointee(test_local_federated_form()))); | 662 Pointee(test_local_federated_form()))); |
650 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); | 663 EXPECT_THAT(passwords_data().federation_providers_forms(), IsEmpty()); |
651 } | 664 } |
652 | 665 |
653 TEST_F(ManagePasswordsStateTest, ChooseCredentialLocal) { | 666 TEST_F(ManagePasswordsStateTest, ChooseCredentialLocal) { |
654 passwords_data().OnRequestCredentials(ScopedVector<autofill::PasswordForm>(), | 667 passwords_data().OnRequestCredentials( |
655 ScopedVector<autofill::PasswordForm>(), | 668 std::vector<std::unique_ptr<autofill::PasswordForm>>(), |
656 test_local_form().origin); | 669 std::vector<std::unique_ptr<autofill::PasswordForm>>(), |
| 670 test_local_form().origin); |
657 passwords_data().set_credentials_callback(base::Bind( | 671 passwords_data().set_credentials_callback(base::Bind( |
658 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); | 672 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); |
659 EXPECT_CALL(*this, CredentialCallback(&test_local_form())); | 673 EXPECT_CALL(*this, CredentialCallback(&test_local_form())); |
660 passwords_data().ChooseCredential(&test_local_form()); | 674 passwords_data().ChooseCredential(&test_local_form()); |
661 } | 675 } |
662 | 676 |
663 TEST_F(ManagePasswordsStateTest, ChooseCredentialEmpty) { | 677 TEST_F(ManagePasswordsStateTest, ChooseCredentialEmpty) { |
664 passwords_data().OnRequestCredentials(ScopedVector<autofill::PasswordForm>(), | 678 passwords_data().OnRequestCredentials( |
665 ScopedVector<autofill::PasswordForm>(), | 679 std::vector<std::unique_ptr<autofill::PasswordForm>>(), |
666 test_local_form().origin); | 680 std::vector<std::unique_ptr<autofill::PasswordForm>>(), |
| 681 test_local_form().origin); |
667 passwords_data().set_credentials_callback(base::Bind( | 682 passwords_data().set_credentials_callback(base::Bind( |
668 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); | 683 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); |
669 password_manager::CredentialInfo credential_info( | 684 password_manager::CredentialInfo credential_info( |
670 test_federated_form(), | 685 test_federated_form(), |
671 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); | 686 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); |
672 EXPECT_CALL(*this, CredentialCallback(nullptr)); | 687 EXPECT_CALL(*this, CredentialCallback(nullptr)); |
673 passwords_data().ChooseCredential(nullptr); | 688 passwords_data().ChooseCredential(nullptr); |
674 } | 689 } |
675 | 690 |
676 TEST_F(ManagePasswordsStateTest, ChooseCredentialLocalWithNonEmptyFederation) { | 691 TEST_F(ManagePasswordsStateTest, ChooseCredentialLocalWithNonEmptyFederation) { |
677 passwords_data().OnRequestCredentials(ScopedVector<autofill::PasswordForm>(), | 692 passwords_data().OnRequestCredentials( |
678 ScopedVector<autofill::PasswordForm>(), | 693 std::vector<std::unique_ptr<autofill::PasswordForm>>(), |
679 test_local_form().origin); | 694 std::vector<std::unique_ptr<autofill::PasswordForm>>(), |
| 695 test_local_form().origin); |
680 passwords_data().set_credentials_callback(base::Bind( | 696 passwords_data().set_credentials_callback(base::Bind( |
681 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); | 697 &ManagePasswordsStateTest::CredentialCallback, base::Unretained(this))); |
682 EXPECT_CALL(*this, CredentialCallback(&test_local_federated_form())); | 698 EXPECT_CALL(*this, CredentialCallback(&test_local_federated_form())); |
683 passwords_data().ChooseCredential(&test_local_federated_form()); | 699 passwords_data().ChooseCredential(&test_local_federated_form()); |
684 } | 700 } |
685 | 701 |
686 } // namespace | 702 } // namespace |
OLD | NEW |