OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/core/browser/password_manager.h" | 5 #include "components/password_manager/core/browser/password_manager.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
14 #include "components/password_manager/core/browser/mock_password_store.h" | 14 #include "components/password_manager/core/browser/mock_password_store.h" |
15 #include "components/password_manager/core/browser/password_autofill_manager.h" | 15 #include "components/password_manager/core/browser/password_autofill_manager.h" |
16 #include "components/password_manager/core/browser/password_manager_driver.h" | 16 #include "components/password_manager/core/browser/password_manager_driver.h" |
17 #include "components/password_manager/core/browser/password_store.h" | 17 #include "components/password_manager/core/browser/password_store.h" |
18 #include "components/password_manager/core/browser/statistics_table.h" | 18 #include "components/password_manager/core/browser/statistics_table.h" |
19 #include "components/password_manager/core/browser/stub_password_manager_client.
h" | 19 #include "components/password_manager/core/browser/stub_password_manager_client.
h" |
20 #include "components/password_manager/core/browser/stub_password_manager_driver.
h" | 20 #include "components/password_manager/core/browser/stub_password_manager_driver.
h" |
| 21 #include "components/password_manager/core/common/password_manager_features.h" |
21 #include "components/password_manager/core/common/password_manager_pref_names.h" | 22 #include "components/password_manager/core/common/password_manager_pref_names.h" |
22 #include "components/password_manager/core/common/password_manager_switches.h" | 23 #include "components/password_manager/core/common/password_manager_switches.h" |
23 #include "testing/gmock/include/gmock/gmock.h" | 24 #include "testing/gmock/include/gmock/gmock.h" |
24 #include "testing/gtest/include/gtest/gtest.h" | 25 #include "testing/gtest/include/gtest/gtest.h" |
25 | 26 |
26 using autofill::PasswordForm; | 27 using autofill::PasswordForm; |
27 using base::ASCIIToUTF16; | 28 using base::ASCIIToUTF16; |
28 using testing::_; | 29 using testing::_; |
29 using testing::AnyNumber; | 30 using testing::AnyNumber; |
30 using testing::Return; | 31 using testing::Return; |
(...skipping 1176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1207 observed.clear(); | 1208 observed.clear(); |
1208 manager()->OnPasswordFormsParsed(&driver_, observed); | 1209 manager()->OnPasswordFormsParsed(&driver_, observed); |
1209 manager()->OnPasswordFormsRendered(&driver_, observed, true); | 1210 manager()->OnPasswordFormsRendered(&driver_, observed, true); |
1210 EXPECT_EQ(form.username_value, form_to_save.username_value); | 1211 EXPECT_EQ(form.username_value, form_to_save.username_value); |
1211 // What was "new password" field in the submitted form, becomes the current | 1212 // What was "new password" field in the submitted form, becomes the current |
1212 // password field in the form to save. | 1213 // password field in the form to save. |
1213 EXPECT_EQ(form.new_password_value, form_to_save.password_value); | 1214 EXPECT_EQ(form.new_password_value, form_to_save.password_value); |
1214 } | 1215 } |
1215 | 1216 |
1216 TEST_F(PasswordManagerTest, ForceSavingPasswords) { | 1217 TEST_F(PasswordManagerTest, ForceSavingPasswords) { |
1217 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 1218 // Add the enable-password-force-saving feature. |
1218 switches::kEnablePasswordForceSaving); | 1219 base::FeatureList::ClearInstanceForTesting(); |
| 1220 scoped_ptr<base::FeatureList> feature_list(new base::FeatureList); |
| 1221 feature_list->InitializeFromCommandLine( |
| 1222 password_manager::features::kEnablePasswordForceSaving.name, ""); |
| 1223 base::FeatureList::SetInstance(std::move(feature_list)); |
1219 PasswordForm form(MakeSimpleForm()); | 1224 PasswordForm form(MakeSimpleForm()); |
1220 | 1225 |
1221 std::vector<PasswordForm> observed; | 1226 std::vector<PasswordForm> observed; |
1222 observed.push_back(form); | 1227 observed.push_back(form); |
1223 EXPECT_CALL(*store_, GetLogins(_, _, _)) | 1228 EXPECT_CALL(*store_, GetLogins(_, _, _)) |
1224 .WillRepeatedly(WithArg<2>(InvokeEmptyConsumerWithForms())); | 1229 .WillRepeatedly(WithArg<2>(InvokeEmptyConsumerWithForms())); |
1225 manager()->OnPasswordFormsParsed(&driver_, observed); | 1230 manager()->OnPasswordFormsParsed(&driver_, observed); |
1226 manager()->OnPasswordFormsRendered(&driver_, observed, true); | 1231 manager()->OnPasswordFormsRendered(&driver_, observed, true); |
1227 | 1232 |
1228 scoped_ptr<PasswordFormManager> form_manager_to_save; | 1233 scoped_ptr<PasswordFormManager> form_manager_to_save; |
1229 EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) | 1234 EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) |
1230 .WillRepeatedly(Return(true)); | 1235 .WillRepeatedly(Return(true)); |
1231 EXPECT_CALL(client_, | 1236 EXPECT_CALL(client_, |
1232 PromptUserToSaveOrUpdatePasswordPtr( | 1237 PromptUserToSaveOrUpdatePasswordPtr( |
1233 _, CredentialSourceType::CREDENTIAL_SOURCE_PASSWORD_MANAGER)) | 1238 _, CredentialSourceType::CREDENTIAL_SOURCE_PASSWORD_MANAGER)) |
1234 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); | 1239 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
1235 manager()->OnPasswordFormForceSaveRequested(&driver_, form); | 1240 manager()->OnPasswordFormForceSaveRequested(&driver_, form); |
1236 ASSERT_TRUE(form_manager_to_save); | 1241 ASSERT_TRUE(form_manager_to_save); |
1237 EXPECT_EQ(form.password_value, | 1242 EXPECT_EQ(form.password_value, |
1238 PasswordFormManager::PasswordToSave( | 1243 PasswordFormManager::PasswordToSave( |
1239 form_manager_to_save->pending_credentials())); | 1244 form_manager_to_save->pending_credentials())); |
1240 } | 1245 } |
1241 | 1246 |
1242 // Forcing Chrome to save an empty passwords should fail without a crash. | 1247 // Forcing Chrome to save an empty passwords should fail without a crash. |
1243 TEST_F(PasswordManagerTest, ForceSavingPasswords_Empty) { | 1248 TEST_F(PasswordManagerTest, ForceSavingPasswords_Empty) { |
1244 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 1249 // Add the enable-password-force-saving feature. |
1245 switches::kEnablePasswordForceSaving); | 1250 base::FeatureList::ClearInstanceForTesting(); |
| 1251 scoped_ptr<base::FeatureList> feature_list(new base::FeatureList); |
| 1252 feature_list->InitializeFromCommandLine( |
| 1253 password_manager::features::kEnablePasswordForceSaving.name, ""); |
| 1254 base::FeatureList::SetInstance(std::move(feature_list)); |
1246 PasswordForm empty_password_form; | 1255 PasswordForm empty_password_form; |
1247 | 1256 |
1248 std::vector<PasswordForm> observed; | 1257 std::vector<PasswordForm> observed; |
1249 observed.push_back(empty_password_form); | 1258 observed.push_back(empty_password_form); |
1250 EXPECT_CALL(*store_, GetLogins(_, _, _)) | 1259 EXPECT_CALL(*store_, GetLogins(_, _, _)) |
1251 .WillRepeatedly(WithArg<2>(InvokeEmptyConsumerWithForms())); | 1260 .WillRepeatedly(WithArg<2>(InvokeEmptyConsumerWithForms())); |
1252 manager()->OnPasswordFormsParsed(&driver_, observed); | 1261 manager()->OnPasswordFormsParsed(&driver_, observed); |
1253 manager()->OnPasswordFormsRendered(&driver_, observed, true); | 1262 manager()->OnPasswordFormsRendered(&driver_, observed, true); |
1254 | 1263 |
1255 EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) | 1264 EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1298 observed.clear(); | 1307 observed.clear(); |
1299 manager()->OnPasswordFormsRendered(&driver_, observed, true); | 1308 manager()->OnPasswordFormsRendered(&driver_, observed, true); |
1300 | 1309 |
1301 EXPECT_EQ(android_form.username_value, form_data.username_field.value); | 1310 EXPECT_EQ(android_form.username_value, form_data.username_field.value); |
1302 EXPECT_EQ(android_form.password_value, form_data.password_field.value); | 1311 EXPECT_EQ(android_form.password_value, form_data.password_field.value); |
1303 EXPECT_FALSE(form_data.wait_for_username); | 1312 EXPECT_FALSE(form_data.wait_for_username); |
1304 EXPECT_EQ(android_form.signon_realm, form_data.preferred_realm); | 1313 EXPECT_EQ(android_form.signon_realm, form_data.preferred_realm); |
1305 } | 1314 } |
1306 | 1315 |
1307 } // namespace password_manager | 1316 } // namespace password_manager |
OLD | NEW |