| 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 |