Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: chrome/renderer/autofill/password_autofill_agent_browsertest.cc

Issue 2915763003: [Password Manager] Show omnibox icon and anchored prompt once user start typing password (Closed)
Patch Set: Sent For Review Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/autofill/content/renderer/password_autofill_agent.h" 5 #include "components/autofill/content/renderer/password_autofill_agent.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 3010 matching lines...) Expand 10 before | Expand all | Expand 10 after
3021 3021
3022 // Repeatedly occurring AJAX events without removing the input elements 3022 // Repeatedly occurring AJAX events without removing the input elements
3023 // shouldn't be treated as a password submission. 3023 // shouldn't be treated as a password submission.
3024 password_autofill_agent_->AJAXSucceeded(); 3024 password_autofill_agent_->AJAXSucceeded();
3025 base::RunLoop().RunUntilIdle(); 3025 base::RunLoop().RunUntilIdle();
3026 3026
3027 ASSERT_FALSE(fake_driver_.called_password_form_submitted()); 3027 ASSERT_FALSE(fake_driver_.called_password_form_submitted());
3028 ASSERT_FALSE(static_cast<bool>(fake_driver_.password_form_submitted())); 3028 ASSERT_FALSE(static_cast<bool>(fake_driver_.password_form_submitted()));
3029 } 3029 }
3030 3030
3031 TEST_F(PasswordAutofillAgentTest, ManualFallbackForSaving) {
3032 scoped_feature_list_.InitAndEnableFeature(
3033 password_manager::features::kEnableManualFallbackForSaving);
3034
3035 // The users enters a username. No password - no fallback.
3036 SimulateUsernameChange(kUsernameName);
3037 EXPECT_EQ(0, fake_driver_.called_show_manual_fallback_cnt());
3038
3039 // The user enters a password.
3040 SimulatePasswordChange(kPasswordName);
3041 // SimulateUsernameChange/SimulatePasswordChange calls
3042 // PasswordAutofillAgent::UpdateStateForTextChange only once.
3043 EXPECT_EQ(1, fake_driver_.called_show_manual_fallback_cnt());
3044
3045 // Remove one character from the password value.
3046 SimulateUserTypingASCIICharacter(ui::VKEY_BACK, true);
3047 EXPECT_EQ(2, fake_driver_.called_show_manual_fallback_cnt());
3048
3049 // Add one character to the username value.
3050 SetFocused(username_element_);
3051 SimulateUserTypingASCIICharacter('a', true);
3052 EXPECT_EQ(3, fake_driver_.called_show_manual_fallback_cnt());
3053
3054 // Remove username value.
3055 SimulateUsernameChange("");
3056 EXPECT_EQ(4, fake_driver_.called_show_manual_fallback_cnt());
3057
3058 // Change the password. Despite of empty username the fallback is still
3059 // there.
3060 SetFocused(password_element_);
3061 SimulateUserTypingASCIICharacter('a', true);
3062 EXPECT_EQ(5, fake_driver_.called_show_manual_fallback_cnt());
3063
3064 // Remove password value. The fallback should be disabled.
3065 SimulatePasswordChange("");
3066 EXPECT_EQ(0, fake_driver_.called_show_manual_fallback_cnt());
3067
3068 // The user enters new password. Show the fallback again.
3069 SimulateUserTypingASCIICharacter('a', true);
3070 EXPECT_EQ(1, fake_driver_.called_show_manual_fallback_cnt());
3071 }
3072
3073 TEST_F(PasswordAutofillAgentTest, ManualFallbackForSaving_PasswordChangeForm) {
3074 scoped_feature_list_.InitAndEnableFeature(
3075 password_manager::features::kEnableManualFallbackForSaving);
3076
3077 LoadHTML(kPasswordChangeFormHTML);
3078 UpdateOriginForHTML(kPasswordChangeFormHTML);
3079 UpdateUsernameAndPasswordElements();
3080
3081 // No password to save yet - no fallback.
3082 SimulateUsernameChange(kUsernameName);
3083 EXPECT_EQ(0, fake_driver_.called_show_manual_fallback_cnt());
3084
3085 // The user enters in the current password field. The fallback should be
3086 // available to save the entered value. It's a subject to re-consider.
vasilii 2017/07/21 12:48:20 Why do we need to reconsider it?
kolos1 2017/07/24 15:33:30 Below the user types into the new password field.
3087 SimulatePasswordChange(kPasswordName);
3088 // SimulateUsernameChange/SimulatePasswordChange calls
3089 // PasswordAutofillAgent::UpdateStateForTextChange only once.
3090 EXPECT_EQ(1, fake_driver_.called_show_manual_fallback_cnt());
3091
3092 // The user types into the new password field. The fallback should be updated.
3093 WebInputElement new_password = GetInputElementByID("newpassword");
3094 ASSERT_FALSE(new_password.IsNull());
3095 SetFocused(new_password);
3096 SimulateUserTypingASCIICharacter('a', true);
3097 EXPECT_EQ(2, fake_driver_.called_show_manual_fallback_cnt());
3098
3099 // Edits of the confirmation password field trigger fallback updates.
3100 WebInputElement confirmation_password =
3101 GetInputElementByID("confirmpassword");
3102 ASSERT_FALSE(confirmation_password.IsNull());
3103 SetFocused(confirmation_password);
3104 SimulateUserTypingASCIICharacter('a', true);
3105 EXPECT_EQ(3, fake_driver_.called_show_manual_fallback_cnt());
3106
3107 // Clear all password fields. The fallback should be disabled.
vasilii 2017/07/21 12:48:20 What happens if you have two password fields. The
kolos1 2017/07/24 15:33:30 The manual fallback relies on what GetPasswordForm
3108 SimulatePasswordChange("");
3109 SimulateUserInputChangeForElement(&new_password, "");
3110 SimulateUserInputChangeForElement(&confirmation_password, "");
3111 EXPECT_EQ(0, fake_driver_.called_show_manual_fallback_cnt());
3112 }
3113
3031 } // namespace autofill 3114 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698