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 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
224 PromptObserver::Create(WebContents())); | 224 PromptObserver::Create(WebContents())); |
225 std::string fill_and_submit = | 225 std::string fill_and_submit = |
226 "document.getElementById('username_field').value = 'temp';" | 226 "document.getElementById('username_field').value = 'temp';" |
227 "document.getElementById('password_field').value = 'random';" | 227 "document.getElementById('password_field').value = 'random';" |
228 "document.getElementById('submit_button').click()"; | 228 "document.getElementById('submit_button').click()"; |
229 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); | 229 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); |
230 observer.Wait(); | 230 observer.Wait(); |
231 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); | 231 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); |
232 } | 232 } |
233 | 233 |
234 // Flaky: crbug.com/301547, observed on win and mac. Probably happens on all | 234 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, PromptForDynamicForm) { |
235 // platforms. | |
236 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, | |
237 DISABLED_PromptForDynamicForm) { | |
238 NavigateToFile("/password/dynamic_password_form.html"); | 235 NavigateToFile("/password/dynamic_password_form.html"); |
239 | 236 |
237 // Create password form. | |
vabr (Chromium)
2015/08/05 08:37:35
nit: This comment is not necessary, you named the
xunlu
2015/08/05 18:37:12
Done.
| |
238 std::string create_form = | |
239 "document.getElementById('create_form_button').click();"; | |
240 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), create_form)); | |
241 | |
242 // Make sure PasswordStore::GetLogins() returned before submitting the form. | |
vabr (Chromium)
2015/08/05 08:37:35
This comment can be misunderstood. The observer sa
xunlu
2015/08/05 18:37:12
Your version is much more clear, thanks! Done
| |
243 password_manager::TestPasswordStore* password_store = | |
vabr (Chromium)
2015/08/05 08:37:35
(1) You do not need TestPasswordStore interface, j
xunlu
2015/08/05 18:37:12
Done.
| |
244 static_cast<password_manager::TestPasswordStore*>( | |
245 PasswordStoreFactory::GetForProfile( | |
246 browser()->profile(), ServiceAccessType::IMPLICIT_ACCESS).get()); | |
247 PasswordStoreObserver store_observer(password_store); | |
248 store_observer.Wait(); | |
249 | |
240 // Fill the dynamic password form and submit. | 250 // Fill the dynamic password form and submit. |
241 NavigationObserver observer(WebContents()); | 251 NavigationObserver observer(WebContents()); |
242 scoped_ptr<PromptObserver> prompt_observer( | 252 scoped_ptr<PromptObserver> prompt_observer( |
243 PromptObserver::Create(WebContents())); | 253 PromptObserver::Create(WebContents())); |
244 std::string fill_and_submit = | 254 std::string fill_and_submit = |
245 "document.getElementById('create_form_button').click();" | |
246 "window.setTimeout(function() {" | 255 "window.setTimeout(function() {" |
247 " document.dynamic_form.username.value = 'tempro';" | 256 " document.dynamic_form.username.value = 'tempro';" |
248 " document.dynamic_form.password.value = 'random';" | 257 " document.dynamic_form.password.value = 'random';" |
249 " document.dynamic_form.submit();" | 258 " document.dynamic_form.submit();" |
250 "}, 0)"; | 259 "}, 0)"; |
251 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); | 260 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); |
252 observer.Wait(); | 261 observer.Wait(); |
253 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); | 262 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); |
254 } | 263 } |
255 | 264 |
(...skipping 1130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1386 // needed for autofilling fields. | 1395 // needed for autofilling fields. |
1387 content::SimulateMouseClickAt( | 1396 content::SimulateMouseClickAt( |
1388 WebContents(), 0, blink::WebMouseEvent::ButtonLeft, gfx::Point(1, 1)); | 1397 WebContents(), 0, blink::WebMouseEvent::ButtonLeft, gfx::Point(1, 1)); |
1389 | 1398 |
1390 // Wait until that interaction causes the password value to be revealed. | 1399 // Wait until that interaction causes the password value to be revealed. |
1391 WaitForElementValue("password", "mypassword"); | 1400 WaitForElementValue("password", "mypassword"); |
1392 } | 1401 } |
1393 | 1402 |
1394 // Test that if a form gets autofilled, then it gets autofilled on re-creation | 1403 // Test that if a form gets autofilled, then it gets autofilled on re-creation |
1395 // as well. | 1404 // as well. |
1396 // TODO(vabr): This is flaky everywhere. http://crbug.com/442704 | |
1397 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, | 1405 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, |
1398 DISABLED_ReCreatedFormsGetFilled) { | 1406 ReCreatedFormsGetFilled) { |
1399 NavigateToFile("/password/dynamic_password_form.html"); | 1407 NavigateToFile("/password/dynamic_password_form.html"); |
1400 | 1408 |
1409 // Create password form. | |
1410 std::string create_form = | |
1411 "document.getElementById('create_form_button').click();"; | |
1412 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), create_form)); | |
1413 | |
1414 // Make sure PasswordStore::GetLogins() returned before submitting form. | |
1415 password_manager::TestPasswordStore* password_store = | |
1416 static_cast<password_manager::TestPasswordStore*>( | |
1417 PasswordStoreFactory::GetForProfile( | |
1418 browser()->profile(), ServiceAccessType::IMPLICIT_ACCESS).get()); | |
1419 PasswordStoreObserver store_observer(password_store); | |
1420 store_observer.Wait(); | |
1421 | |
1401 // Fill in the credentials, and make sure they are saved. | 1422 // Fill in the credentials, and make sure they are saved. |
1402 NavigationObserver form_submit_observer(WebContents()); | 1423 NavigationObserver form_submit_observer(WebContents()); |
1403 scoped_ptr<PromptObserver> prompt_observer( | 1424 scoped_ptr<PromptObserver> prompt_observer( |
1404 PromptObserver::Create(WebContents())); | 1425 PromptObserver::Create(WebContents())); |
1405 std::string create_fill_and_submit = | 1426 std::string fill_and_submit = |
1406 "document.getElementById('create_form_button').click();" | |
1407 "window.setTimeout(function() {" | 1427 "window.setTimeout(function() {" |
1408 " var form = document.getElementById('dynamic_form_id');" | 1428 " var form = document.getElementById('dynamic_form_id');" |
1409 " form.username.value = 'temp';" | 1429 " form.username.value = 'temp';" |
1410 " form.password.value = 'random';" | 1430 " form.password.value = 'random';" |
1411 " form.submit();" | 1431 " form.submit();" |
1412 "}, 0)"; | 1432 "}, 0)"; |
1413 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), create_fill_and_submit)); | 1433 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_submit)); |
1414 form_submit_observer.Wait(); | 1434 form_submit_observer.Wait(); |
1415 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); | 1435 EXPECT_TRUE(prompt_observer->IsShowingPrompt()); |
1416 prompt_observer->Accept(); | 1436 prompt_observer->Accept(); |
1417 | 1437 |
1418 // Reload the original page to have the saved credentials autofilled. | 1438 // Reload the original page to have the saved credentials autofilled. |
1419 NavigationObserver reload_observer(WebContents()); | 1439 NavigationObserver reload_observer(WebContents()); |
1420 NavigateToFile("/password/dynamic_password_form.html"); | 1440 NavigateToFile("/password/dynamic_password_form.html"); |
1421 reload_observer.Wait(); | 1441 reload_observer.Wait(); |
1422 std::string create_form = | |
1423 "document.getElementById('create_form_button').click();"; | |
1424 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), create_form)); | 1442 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), create_form)); |
1425 // Wait until the username is filled, to make sure autofill kicked in. | 1443 // Wait until the username is filled, to make sure autofill kicked in. |
1426 WaitForElementValue("username_id", "temp"); | 1444 WaitForElementValue("username_id", "temp"); |
1427 | 1445 |
1428 // Now the form gets deleted and created again. It should get autofilled | 1446 // Now the form gets deleted and created again. It should get autofilled |
1429 // again. | 1447 // again. |
1430 std::string delete_form = | 1448 std::string delete_form = |
1431 "var form = document.getElementById('dynamic_form_id');" | 1449 "var form = document.getElementById('dynamic_form_id');" |
1432 "form.parentNode.removeChild(form);"; | 1450 "form.parentNode.removeChild(form);"; |
1433 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), delete_form)); | 1451 ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), delete_form)); |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1954 top + 1)); | 1972 top + 1)); |
1955 // Verify password has been autofilled | 1973 // Verify password has been autofilled |
1956 WaitForElementValue("iframe", "password_field", "pa55w0rd"); | 1974 WaitForElementValue("iframe", "password_field", "pa55w0rd"); |
1957 | 1975 |
1958 // Verify username has been autofilled | 1976 // Verify username has been autofilled |
1959 CheckElementValue("iframe", "username_field", "temp"); | 1977 CheckElementValue("iframe", "username_field", "temp"); |
1960 | 1978 |
1961 } | 1979 } |
1962 | 1980 |
1963 } // namespace password_manager | 1981 } // namespace password_manager |
OLD | NEW |