OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/password_manager/content/browser/credential_manager_impl.h" | 5 #include "components/password_manager/content/browser/credential_manager_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <tuple> | 10 #include <tuple> |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 NavigateAndCommit(GURL("https://example.com/test.html")); | 217 NavigateAndCommit(GURL("https://example.com/test.html")); |
218 | 218 |
219 form_.username_value = base::ASCIIToUTF16("Username"); | 219 form_.username_value = base::ASCIIToUTF16("Username"); |
220 form_.display_name = base::ASCIIToUTF16("Display Name"); | 220 form_.display_name = base::ASCIIToUTF16("Display Name"); |
221 form_.icon_url = GURL("https://example.com/icon.png"); | 221 form_.icon_url = GURL("https://example.com/icon.png"); |
222 form_.password_value = base::ASCIIToUTF16("Password"); | 222 form_.password_value = base::ASCIIToUTF16("Password"); |
223 form_.origin = web_contents()->GetLastCommittedURL().GetOrigin(); | 223 form_.origin = web_contents()->GetLastCommittedURL().GetOrigin(); |
224 form_.signon_realm = form_.origin.spec(); | 224 form_.signon_realm = form_.origin.spec(); |
225 form_.scheme = autofill::PasswordForm::SCHEME_HTML; | 225 form_.scheme = autofill::PasswordForm::SCHEME_HTML; |
226 form_.skip_zero_click = false; | 226 form_.skip_zero_click = false; |
227 form_.ssl_valid = true; | |
228 | 227 |
229 affiliated_form1_.username_value = base::ASCIIToUTF16("Affiliated 1"); | 228 affiliated_form1_.username_value = base::ASCIIToUTF16("Affiliated 1"); |
230 affiliated_form1_.display_name = base::ASCIIToUTF16("Display Name"); | 229 affiliated_form1_.display_name = base::ASCIIToUTF16("Display Name"); |
231 affiliated_form1_.password_value = base::ASCIIToUTF16("Password"); | 230 affiliated_form1_.password_value = base::ASCIIToUTF16("Password"); |
232 affiliated_form1_.origin = GURL(); | 231 affiliated_form1_.origin = GURL(); |
233 affiliated_form1_.signon_realm = kTestAndroidRealm1; | 232 affiliated_form1_.signon_realm = kTestAndroidRealm1; |
234 affiliated_form1_.scheme = autofill::PasswordForm::SCHEME_HTML; | 233 affiliated_form1_.scheme = autofill::PasswordForm::SCHEME_HTML; |
235 affiliated_form1_.skip_zero_click = false; | 234 affiliated_form1_.skip_zero_click = false; |
236 affiliated_form1_.ssl_valid = true; | |
237 | 235 |
238 affiliated_form2_.username_value = base::ASCIIToUTF16("Affiliated 2"); | 236 affiliated_form2_.username_value = base::ASCIIToUTF16("Affiliated 2"); |
239 affiliated_form2_.display_name = base::ASCIIToUTF16("Display Name"); | 237 affiliated_form2_.display_name = base::ASCIIToUTF16("Display Name"); |
240 affiliated_form2_.password_value = base::ASCIIToUTF16("Password"); | 238 affiliated_form2_.password_value = base::ASCIIToUTF16("Password"); |
241 affiliated_form2_.origin = GURL(); | 239 affiliated_form2_.origin = GURL(); |
242 affiliated_form2_.signon_realm = kTestAndroidRealm2; | 240 affiliated_form2_.signon_realm = kTestAndroidRealm2; |
243 affiliated_form2_.scheme = autofill::PasswordForm::SCHEME_HTML; | 241 affiliated_form2_.scheme = autofill::PasswordForm::SCHEME_HTML; |
244 affiliated_form2_.skip_zero_click = false; | 242 affiliated_form2_.skip_zero_click = false; |
245 affiliated_form2_.ssl_valid = true; | |
246 | 243 |
247 origin_path_form_.username_value = base::ASCIIToUTF16("Username 2"); | 244 origin_path_form_.username_value = base::ASCIIToUTF16("Username 2"); |
248 origin_path_form_.display_name = base::ASCIIToUTF16("Display Name 2"); | 245 origin_path_form_.display_name = base::ASCIIToUTF16("Display Name 2"); |
249 origin_path_form_.password_value = base::ASCIIToUTF16("Password 2"); | 246 origin_path_form_.password_value = base::ASCIIToUTF16("Password 2"); |
250 origin_path_form_.origin = GURL("https://example.com/path"); | 247 origin_path_form_.origin = GURL("https://example.com/path"); |
251 origin_path_form_.signon_realm = origin_path_form_.origin.spec(); | 248 origin_path_form_.signon_realm = origin_path_form_.origin.spec(); |
252 origin_path_form_.scheme = autofill::PasswordForm::SCHEME_HTML; | 249 origin_path_form_.scheme = autofill::PasswordForm::SCHEME_HTML; |
253 origin_path_form_.skip_zero_click = false; | 250 origin_path_form_.skip_zero_click = false; |
254 | 251 |
255 subdomain_form_.username_value = base::ASCIIToUTF16("Username 2"); | 252 subdomain_form_.username_value = base::ASCIIToUTF16("Username 2"); |
(...skipping 961 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1217 ExpectZeroClickSignInSuccess(true, true, federations, | 1214 ExpectZeroClickSignInSuccess(true, true, federations, |
1218 mojom::CredentialType::PASSWORD); | 1215 mojom::CredentialType::PASSWORD); |
1219 } | 1216 } |
1220 | 1217 |
1221 TEST_F(CredentialManagerImplTest, GetSynthesizedFormForOrigin) { | 1218 TEST_F(CredentialManagerImplTest, GetSynthesizedFormForOrigin) { |
1222 autofill::PasswordForm synthesized = | 1219 autofill::PasswordForm synthesized = |
1223 cm_service_impl_->GetSynthesizedFormForOrigin(); | 1220 cm_service_impl_->GetSynthesizedFormForOrigin(); |
1224 EXPECT_EQ(kTestWebOrigin, synthesized.origin.spec()); | 1221 EXPECT_EQ(kTestWebOrigin, synthesized.origin.spec()); |
1225 EXPECT_EQ(kTestWebOrigin, synthesized.signon_realm); | 1222 EXPECT_EQ(kTestWebOrigin, synthesized.signon_realm); |
1226 EXPECT_EQ(autofill::PasswordForm::SCHEME_HTML, synthesized.scheme); | 1223 EXPECT_EQ(autofill::PasswordForm::SCHEME_HTML, synthesized.scheme); |
1227 EXPECT_TRUE(synthesized.ssl_valid); | |
1228 } | 1224 } |
1229 | 1225 |
1230 TEST_F(CredentialManagerImplTest, BlacklistPasswordCredential) { | 1226 TEST_F(CredentialManagerImplTest, BlacklistPasswordCredential) { |
1231 EXPECT_CALL(*client_, PromptUserToSavePasswordPtr( | 1227 EXPECT_CALL(*client_, PromptUserToSavePasswordPtr( |
1232 _, CredentialSourceType::CREDENTIAL_SOURCE_API)); | 1228 _, CredentialSourceType::CREDENTIAL_SOURCE_API)); |
1233 | 1229 |
1234 CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_PASSWORD); | 1230 CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_PASSWORD); |
1235 bool called = false; | 1231 bool called = false; |
1236 CallStore(info, base::Bind(&RespondCallback, &called)); | 1232 CallStore(info, base::Bind(&RespondCallback, &called)); |
1237 // Allow the PasswordFormManager to talk to the password store | 1233 // Allow the PasswordFormManager to talk to the password store |
1238 RunAllPendingTasks(); | 1234 RunAllPendingTasks(); |
1239 | 1235 |
1240 ASSERT_TRUE(client_->pending_manager()); | 1236 ASSERT_TRUE(client_->pending_manager()); |
1241 client_->pending_manager()->PermanentlyBlacklist(); | 1237 client_->pending_manager()->PermanentlyBlacklist(); |
1242 // Allow the PasswordFormManager to talk to the password store. | 1238 // Allow the PasswordFormManager to talk to the password store. |
1243 RunAllPendingTasks(); | 1239 RunAllPendingTasks(); |
1244 | 1240 |
1245 // Verify that the site is blacklisted. | 1241 // Verify that the site is blacklisted. |
1246 autofill::PasswordForm blacklisted; | 1242 autofill::PasswordForm blacklisted; |
1247 TestPasswordStore::PasswordMap passwords = store_->stored_passwords(); | 1243 TestPasswordStore::PasswordMap passwords = store_->stored_passwords(); |
1248 blacklisted.blacklisted_by_user = true; | 1244 blacklisted.blacklisted_by_user = true; |
1249 blacklisted.origin = form_.origin; | 1245 blacklisted.origin = form_.origin; |
1250 blacklisted.signon_realm = form_.signon_realm; | 1246 blacklisted.signon_realm = form_.signon_realm; |
1251 blacklisted.type = autofill::PasswordForm::TYPE_API; | 1247 blacklisted.type = autofill::PasswordForm::TYPE_API; |
1252 blacklisted.ssl_valid = true; | |
1253 blacklisted.date_created = passwords[form_.signon_realm][0].date_created; | 1248 blacklisted.date_created = passwords[form_.signon_realm][0].date_created; |
1254 EXPECT_THAT(passwords[form_.signon_realm], testing::ElementsAre(blacklisted)); | 1249 EXPECT_THAT(passwords[form_.signon_realm], testing::ElementsAre(blacklisted)); |
1255 } | 1250 } |
1256 | 1251 |
1257 TEST_F(CredentialManagerImplTest, BlacklistFederatedCredential) { | 1252 TEST_F(CredentialManagerImplTest, BlacklistFederatedCredential) { |
1258 form_.federation_origin = url::Origin(GURL("https://example.com/")); | 1253 form_.federation_origin = url::Origin(GURL("https://example.com/")); |
1259 form_.password_value = base::string16(); | 1254 form_.password_value = base::string16(); |
1260 form_.signon_realm = "federation://example.com/example.com"; | 1255 form_.signon_realm = "federation://example.com/example.com"; |
1261 | 1256 |
1262 EXPECT_CALL(*client_, PromptUserToSavePasswordPtr( | 1257 EXPECT_CALL(*client_, PromptUserToSavePasswordPtr( |
(...skipping 10 matching lines...) Expand all Loading... |
1273 RunAllPendingTasks(); | 1268 RunAllPendingTasks(); |
1274 | 1269 |
1275 // Verify that the site is blacklisted. | 1270 // Verify that the site is blacklisted. |
1276 TestPasswordStore::PasswordMap passwords = store_->stored_passwords(); | 1271 TestPasswordStore::PasswordMap passwords = store_->stored_passwords(); |
1277 ASSERT_TRUE(passwords.count(form_.origin.spec())); | 1272 ASSERT_TRUE(passwords.count(form_.origin.spec())); |
1278 autofill::PasswordForm blacklisted; | 1273 autofill::PasswordForm blacklisted; |
1279 blacklisted.blacklisted_by_user = true; | 1274 blacklisted.blacklisted_by_user = true; |
1280 blacklisted.origin = form_.origin; | 1275 blacklisted.origin = form_.origin; |
1281 blacklisted.signon_realm = blacklisted.origin.spec(); | 1276 blacklisted.signon_realm = blacklisted.origin.spec(); |
1282 blacklisted.type = autofill::PasswordForm::TYPE_API; | 1277 blacklisted.type = autofill::PasswordForm::TYPE_API; |
1283 blacklisted.ssl_valid = true; | |
1284 blacklisted.date_created = | 1278 blacklisted.date_created = |
1285 passwords[blacklisted.signon_realm][0].date_created; | 1279 passwords[blacklisted.signon_realm][0].date_created; |
1286 EXPECT_THAT(passwords[blacklisted.signon_realm], | 1280 EXPECT_THAT(passwords[blacklisted.signon_realm], |
1287 testing::ElementsAre(blacklisted)); | 1281 testing::ElementsAre(blacklisted)); |
1288 } | 1282 } |
1289 | 1283 |
1290 TEST_F(CredentialManagerImplTest, RespectBlacklistingPasswordCredential) { | 1284 TEST_F(CredentialManagerImplTest, RespectBlacklistingPasswordCredential) { |
1291 autofill::PasswordForm blacklisted; | 1285 autofill::PasswordForm blacklisted; |
1292 blacklisted.blacklisted_by_user = true; | 1286 blacklisted.blacklisted_by_user = true; |
1293 blacklisted.origin = form_.origin; | 1287 blacklisted.origin = form_.origin; |
1294 blacklisted.signon_realm = blacklisted.origin.spec(); | 1288 blacklisted.signon_realm = blacklisted.origin.spec(); |
1295 blacklisted.ssl_valid = true; | |
1296 store_->AddLogin(blacklisted); | 1289 store_->AddLogin(blacklisted); |
1297 | 1290 |
1298 CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_PASSWORD); | 1291 CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_PASSWORD); |
1299 bool called = false; | 1292 bool called = false; |
1300 EXPECT_CALL(*client_, PromptUserToSavePasswordPtr( | 1293 EXPECT_CALL(*client_, PromptUserToSavePasswordPtr( |
1301 _, CredentialSourceType::CREDENTIAL_SOURCE_API)); | 1294 _, CredentialSourceType::CREDENTIAL_SOURCE_API)); |
1302 CallStore(info, base::Bind(&RespondCallback, &called)); | 1295 CallStore(info, base::Bind(&RespondCallback, &called)); |
1303 // Allow the PasswordFormManager to talk to the password store | 1296 // Allow the PasswordFormManager to talk to the password store |
1304 RunAllPendingTasks(); | 1297 RunAllPendingTasks(); |
1305 | 1298 |
1306 ASSERT_TRUE(client_->pending_manager()); | 1299 ASSERT_TRUE(client_->pending_manager()); |
1307 EXPECT_TRUE(client_->pending_manager()->IsBlacklisted()); | 1300 EXPECT_TRUE(client_->pending_manager()->IsBlacklisted()); |
1308 } | 1301 } |
1309 | 1302 |
1310 TEST_F(CredentialManagerImplTest, RespectBlacklistingFederatedCredential) { | 1303 TEST_F(CredentialManagerImplTest, RespectBlacklistingFederatedCredential) { |
1311 autofill::PasswordForm blacklisted; | 1304 autofill::PasswordForm blacklisted; |
1312 blacklisted.blacklisted_by_user = true; | 1305 blacklisted.blacklisted_by_user = true; |
1313 blacklisted.origin = form_.origin; | 1306 blacklisted.origin = form_.origin; |
1314 blacklisted.signon_realm = blacklisted.origin.spec(); | 1307 blacklisted.signon_realm = blacklisted.origin.spec(); |
1315 blacklisted.ssl_valid = true; | |
1316 store_->AddLogin(blacklisted); | 1308 store_->AddLogin(blacklisted); |
1317 | 1309 |
1318 form_.federation_origin = url::Origin(GURL("https://example.com/")); | 1310 form_.federation_origin = url::Origin(GURL("https://example.com/")); |
1319 form_.password_value = base::string16(); | 1311 form_.password_value = base::string16(); |
1320 form_.signon_realm = "federation://example.com/example.com"; | 1312 form_.signon_realm = "federation://example.com/example.com"; |
1321 CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_FEDERATED); | 1313 CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_FEDERATED); |
1322 bool called = false; | 1314 bool called = false; |
1323 EXPECT_CALL(*client_, PromptUserToSavePasswordPtr( | 1315 EXPECT_CALL(*client_, PromptUserToSavePasswordPtr( |
1324 _, CredentialSourceType::CREDENTIAL_SOURCE_API)); | 1316 _, CredentialSourceType::CREDENTIAL_SOURCE_API)); |
1325 CallStore(info, base::Bind(&RespondCallback, &called)); | 1317 CallStore(info, base::Bind(&RespondCallback, &called)); |
1326 // Allow the PasswordFormManager to talk to the password store | 1318 // Allow the PasswordFormManager to talk to the password store |
1327 RunAllPendingTasks(); | 1319 RunAllPendingTasks(); |
1328 | 1320 |
1329 ASSERT_TRUE(client_->pending_manager()); | 1321 ASSERT_TRUE(client_->pending_manager()); |
1330 EXPECT_TRUE(client_->pending_manager()->IsBlacklisted()); | 1322 EXPECT_TRUE(client_->pending_manager()->IsBlacklisted()); |
1331 } | 1323 } |
1332 | 1324 |
1333 } // namespace password_manager | 1325 } // namespace password_manager |
OLD | NEW |