Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <string> | 5 #include <string> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/metrics/histogram_samples.h" | 10 #include "base/metrics/histogram_samples.h" |
| (...skipping 2887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2898 AutofillSuggestionsForPasswordFormWithAutocompleteOff) { | 2898 AutofillSuggestionsForPasswordFormWithAutocompleteOff) { |
| 2899 std::string submit = | 2899 std::string submit = |
| 2900 "document.getElementById('username').value = 'temp';" | 2900 "document.getElementById('username').value = 'temp';" |
| 2901 "document.getElementById('password').value = 'mypassword';" | 2901 "document.getElementById('password').value = 'mypassword';" |
| 2902 "document.getElementById('submit').click();"; | 2902 "document.getElementById('submit').click();"; |
| 2903 VerifyPasswordIsSavedAndFilled( | 2903 VerifyPasswordIsSavedAndFilled( |
| 2904 "/password/password_autocomplete_off_test.html", submit, "password", | 2904 "/password/password_autocomplete_off_test.html", submit, "password", |
| 2905 "mypassword"); | 2905 "mypassword"); |
| 2906 } | 2906 } |
| 2907 | 2907 |
| 2908 | |
| 2909 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, | 2908 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, |
| 2910 SkipZeroClickToggledAfterSuccessfulSubmission) { | 2909 SkipZeroClickToggledAfterSuccessfulSubmissionWithAPI) { |
| 2911 ASSERT_TRUE(ChromePasswordManagerClient::IsTheHotNewBubbleUIEnabled()); | 2910 ASSERT_TRUE(ChromePasswordManagerClient::IsTheHotNewBubbleUIEnabled()); |
| 2912 // Save credentials with 'skip_zero_click' | 2911 // Save credentials with 'skip_zero_click' |
| 2913 scoped_refptr<password_manager::TestPasswordStore> password_store = | 2912 scoped_refptr<password_manager::TestPasswordStore> password_store = |
| 2914 static_cast<password_manager::TestPasswordStore*>( | 2913 static_cast<password_manager::TestPasswordStore*>( |
| 2915 PasswordStoreFactory::GetForProfile( | 2914 PasswordStoreFactory::GetForProfile( |
| 2916 browser()->profile(), ServiceAccessType::IMPLICIT_ACCESS) | 2915 browser()->profile(), ServiceAccessType::IMPLICIT_ACCESS) |
| 2917 .get()); | 2916 .get()); |
| 2918 autofill::PasswordForm signin_form; | 2917 autofill::PasswordForm signin_form; |
| 2919 signin_form.signon_realm = embedded_test_server()->base_url().spec(); | 2918 signin_form.signon_realm = embedded_test_server()->base_url().spec(); |
| 2920 signin_form.password_value = base::ASCIIToUTF16("password"); | 2919 signin_form.password_value = base::ASCIIToUTF16("password"); |
| 2921 signin_form.username_value = base::ASCIIToUTF16("user"); | 2920 signin_form.username_value = base::ASCIIToUTF16("user"); |
| 2921 signin_form.origin = embedded_test_server()->base_url(); | |
| 2922 signin_form.skip_zero_click = true; | 2922 signin_form.skip_zero_click = true; |
| 2923 password_store->AddLogin(signin_form); | 2923 password_store->AddLogin(signin_form); |
| 2924 | 2924 |
| 2925 NavigateToFile("/password/password_form.html"); | 2925 NavigateToFile("/password/password_form.html"); |
| 2926 | |
| 2927 // Call the API to trigger the notification to the client. | |
| 2928 ASSERT_TRUE(content::ExecuteScript( | |
| 2929 RenderViewHost(), | |
| 2930 "navigator.credentials.get({password: true, unmediated: true })")); | |
| 2931 | |
| 2926 NavigationObserver observer(WebContents()); | 2932 NavigationObserver observer(WebContents()); |
| 2927 scoped_ptr<PromptObserver> prompt_observer( | 2933 scoped_ptr<PromptObserver> prompt_observer( |
| 2928 PromptObserver::Create(WebContents())); | 2934 PromptObserver::Create(WebContents())); |
| 2929 std::string fill_and_submit_change_password = | 2935 std::string fill_and_submit_change_password = |
| 2930 "document.getElementById('username_field').value = 'user';" | 2936 "document.getElementById('username_field').value = 'user';" |
| 2931 "document.getElementById('password_field').value = 'password';" | 2937 "document.getElementById('password_field').value = 'password';" |
| 2932 "document.getElementById('input_submit_button').click()"; | 2938 "document.getElementById('input_submit_button').click()"; |
| 2933 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), | 2939 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), |
| 2934 fill_and_submit_change_password)); | 2940 fill_and_submit_change_password)); |
| 2935 observer.Wait(); | 2941 observer.Wait(); |
| 2936 EXPECT_FALSE(prompt_observer->IsShowingPrompt()); | 2942 EXPECT_FALSE(prompt_observer->IsShowingPrompt()); |
| 2937 | 2943 |
| 2938 // Verify that the form's 'skip_zero_click' is updated. | 2944 // Verify that the form's 'skip_zero_click' is updated. |
| 2939 auto& passwords_map = password_store->stored_passwords(); | 2945 auto& passwords_map = password_store->stored_passwords(); |
| 2940 ASSERT_EQ(1u, passwords_map.size()); | 2946 ASSERT_EQ(1u, passwords_map.size()); |
| 2941 auto& passwords_vector = passwords_map.begin()->second; | 2947 auto& passwords_vector = passwords_map.begin()->second; |
| 2942 ASSERT_EQ(1u, passwords_vector.size()); | 2948 ASSERT_EQ(1u, passwords_vector.size()); |
| 2943 const autofill::PasswordForm& form = passwords_vector[0]; | 2949 const autofill::PasswordForm& form = passwords_vector[0]; |
| 2944 EXPECT_EQ(base::ASCIIToUTF16("user"), form.username_value); | 2950 EXPECT_EQ(base::ASCIIToUTF16("user"), form.username_value); |
| 2945 EXPECT_EQ(base::ASCIIToUTF16("password"), form.password_value); | 2951 EXPECT_EQ(base::ASCIIToUTF16("password"), form.password_value); |
| 2946 EXPECT_FALSE(form.skip_zero_click); | 2952 EXPECT_FALSE(form.skip_zero_click); |
| 2947 } | 2953 } |
| 2948 | 2954 |
| 2955 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, | |
| 2956 SkipZeroClickNotToggledAfterSuccessfulAutofill) { | |
| 2957 ASSERT_TRUE(ChromePasswordManagerClient::IsTheHotNewBubbleUIEnabled()); | |
| 2958 // Save credentials with 'skip_zero_click' | |
| 2959 scoped_refptr<password_manager::TestPasswordStore> password_store = | |
| 2960 static_cast<password_manager::TestPasswordStore*>( | |
| 2961 PasswordStoreFactory::GetForProfile( | |
| 2962 browser()->profile(), ServiceAccessType::IMPLICIT_ACCESS) | |
| 2963 .get()); | |
| 2964 autofill::PasswordForm signin_form; | |
| 2965 signin_form.signon_realm = embedded_test_server()->base_url().spec(); | |
| 2966 signin_form.password_value = base::ASCIIToUTF16("password"); | |
| 2967 signin_form.username_value = base::ASCIIToUTF16("user"); | |
| 2968 signin_form.skip_zero_click = true; | |
|
vabr (Chromium)
2016/02/26 14:50:27
nit: Any reason why signin_form.origin is not need
| |
| 2969 password_store->AddLogin(signin_form); | |
| 2970 | |
| 2971 NavigateToFile("/password/password_form.html"); | |
| 2972 | |
| 2973 // No API call. | |
| 2974 | |
| 2975 NavigationObserver observer(WebContents()); | |
| 2976 scoped_ptr<PromptObserver> prompt_observer( | |
| 2977 PromptObserver::Create(WebContents())); | |
| 2978 std::string fill_and_submit_change_password = | |
| 2979 "document.getElementById('username_field').value = 'user';" | |
| 2980 "document.getElementById('password_field').value = 'password';" | |
| 2981 "document.getElementById('input_submit_button').click()"; | |
| 2982 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), | |
| 2983 fill_and_submit_change_password)); | |
| 2984 observer.Wait(); | |
| 2985 EXPECT_FALSE(prompt_observer->IsShowingPrompt()); | |
| 2986 | |
| 2987 // Verify that the form's 'skip_zero_click' is not updated. | |
| 2988 auto& passwords_map = password_store->stored_passwords(); | |
| 2989 ASSERT_EQ(1u, passwords_map.size()); | |
| 2990 auto& passwords_vector = passwords_map.begin()->second; | |
| 2991 ASSERT_EQ(1u, passwords_vector.size()); | |
| 2992 const autofill::PasswordForm& form = passwords_vector[0]; | |
| 2993 EXPECT_EQ(base::ASCIIToUTF16("user"), form.username_value); | |
| 2994 EXPECT_EQ(base::ASCIIToUTF16("password"), form.password_value); | |
| 2995 EXPECT_TRUE(form.skip_zero_click); | |
| 2996 } | |
| 2997 | |
| 2949 } // namespace password_manager | 2998 } // namespace password_manager |
| OLD | NEW |