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

Side by Side Diff: chrome/browser/password_manager/password_manager_browsertest.cc

Issue 1735013004: CREDENTIAL: Only toggle 'skip_zero_click' state if API is used. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698