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 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/histogram_samples.h" | 8 #include "base/metrics/histogram_samples.h" |
9 #include "base/metrics/statistics_recorder.h" | 9 #include "base/metrics/statistics_recorder.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 879 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
890 std::string fill_and_submit = | 890 std::string fill_and_submit = |
891 "document.getElementsByName('username_field_no_id')[0].value = 'temp';" | 891 "document.getElementsByName('username_field_no_id')[0].value = 'temp';" |
892 "document.getElementsByName('password_field_no_id')[0].value = 'random';" | 892 "document.getElementsByName('password_field_no_id')[0].value = 'random';" |
893 "document.getElementsByName('input_submit_button_no_id')[0].click()"; | 893 "document.getElementsByName('input_submit_button_no_id')[0].click()"; |
894 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); | 894 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); |
895 observer.Wait(); | 895 observer.Wait(); |
896 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); | 896 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); |
897 } | 897 } |
898 | 898 |
899 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, | 899 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, |
900 NoPromptForInputElementWithoutIdAndName) { | 900 PromptForInputElementWithoutIdAndName) { |
901 // Check that no prompt is shown for forms where the input fields lack both | 901 // Check that prompt is shown for forms where the input fields lack both |
902 // the "id" and the "name" attributes. | 902 // the "id" and the "name" attributes. |
903 NavigateToFile("/password/password_form.html"); | 903 NavigateToFile("/password/password_form.html"); |
904 | 904 |
905 NavigationObserver observer(WebContents()); | 905 NavigationObserver observer(WebContents()); |
906 scoped_ptr<PromptObserver> prompt_observer( | 906 scoped_ptr<PromptObserver> prompt_observer( |
907 PromptObserver::Create(WebContents())); | 907 PromptObserver::Create(WebContents())); |
908 std::string fill_and_submit = | 908 std::string fill_and_submit = |
909 "var form = document.getElementById('testform_elements_no_id_no_name');" | 909 "var form = document.getElementById('testform_elements_no_id_no_name');" |
910 "var username = form.children[0];" | 910 "var username = form.children[0];" |
911 "username.value = 'temp';" | 911 "username.value = 'temp';" |
912 "var password = form.children[1];" | 912 "var password = form.children[1];" |
913 "password.value = 'random';" | 913 "password.value = 'random';" |
914 "form.children[2].click()"; // form.children[2] is the submit button. | 914 "form.children[2].click()"; // form.children[2] is the submit button. |
915 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); | 915 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); |
916 observer.Wait(); | 916 observer.Wait(); |
917 EXPECT_FALSE(prompt_observer->IsShowingPrompt()); | 917 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); |
| 918 prompt_observer->Accept(); |
| 919 |
| 920 // Check that credentials are stored. |
| 921 scoped_refptr<password_manager::TestPasswordStore> password_store = |
| 922 static_cast<password_manager::TestPasswordStore*>( |
| 923 PasswordStoreFactory::GetForProfile( |
| 924 browser()->profile(), ServiceAccessType::IMPLICIT_ACCESS) |
| 925 .get()); |
| 926 |
| 927 // Spin the message loop to make sure the password store had a chance to save |
| 928 // the password. |
| 929 base::RunLoop run_loop; |
| 930 run_loop.RunUntilIdle(); |
| 931 EXPECT_FALSE(password_store->IsEmpty()); |
| 932 |
| 933 #if !defined(OS_MACOSX) |
| 934 CheckThatCredentialsStored(password_store.get(), base::ASCIIToUTF16("temp"), |
| 935 base::ASCIIToUTF16("random")); |
| 936 #endif |
918 } | 937 } |
919 | 938 |
920 // Test for checking that no prompt is shown for URLs with file: scheme. | 939 // Test for checking that no prompt is shown for URLs with file: scheme. |
921 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, | 940 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, |
922 NoPromptForFileSchemeURLs) { | 941 NoPromptForFileSchemeURLs) { |
923 GURL url = GetFileURL("password_form.html"); | 942 GURL url = GetFileURL("password_form.html"); |
924 ui_test_utils::NavigateToURL(browser(), url); | 943 ui_test_utils::NavigateToURL(browser(), url); |
925 | 944 |
926 NavigationObserver observer(WebContents()); | 945 NavigationObserver observer(WebContents()); |
927 scoped_ptr<PromptObserver> prompt_observer( | 946 scoped_ptr<PromptObserver> prompt_observer( |
(...skipping 1165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2093 observer.Wait(); | 2112 observer.Wait(); |
2094 // The stored password "pw" was not overriden, so update prompt is not | 2113 // The stored password "pw" was not overriden, so update prompt is not |
2095 // expected. | 2114 // expected. |
2096 EXPECT_FALSE(prompt_observer->IsShowingUpdatePrompt()); | 2115 EXPECT_FALSE(prompt_observer->IsShowingUpdatePrompt()); |
2097 CheckThatCredentialsStored(password_store.get(), base::ASCIIToUTF16("temp"), | 2116 CheckThatCredentialsStored(password_store.get(), base::ASCIIToUTF16("temp"), |
2098 base::ASCIIToUTF16("pw")); | 2117 base::ASCIIToUTF16("pw")); |
2099 } | 2118 } |
2100 #endif | 2119 #endif |
2101 | 2120 |
2102 } // namespace password_manager | 2121 } // namespace password_manager |
OLD | NEW |