| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/files/file_util.h" | 8 #include "base/files/file_util.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 using base::ASCIIToUTF16; | 62 using base::ASCIIToUTF16; |
| 63 | 63 |
| 64 namespace autofill { | 64 namespace autofill { |
| 65 | 65 |
| 66 namespace { | 66 namespace { |
| 67 | 67 |
| 68 static const char kDataURIPrefix[] = "data:text/html;charset=utf-8,"; | 68 static const char kDataURIPrefix[] = "data:text/html;charset=utf-8,"; |
| 69 static const char kTestFormString[] = | 69 static const char kTestFormString[] = |
| 70 "<form action=\"http://www.example.com/\" method=\"POST\">" | 70 "<form action=\"http://www.example.com/\" method=\"POST\">" |
| 71 "<label for=\"firstname\">First name:</label>" | 71 "<label for=\"firstname\">First name:</label>" |
| 72 " <input type=\"text\" id=\"firstname\"" | 72 " <input type=\"text\" id=\"firstname\"><br>" |
| 73 " onfocus=\"domAutomationController.send(true)\"><br>" | |
| 74 "<label for=\"lastname\">Last name:</label>" | 73 "<label for=\"lastname\">Last name:</label>" |
| 75 " <input type=\"text\" id=\"lastname\"><br>" | 74 " <input type=\"text\" id=\"lastname\"><br>" |
| 76 "<label for=\"address1\">Address line 1:</label>" | 75 "<label for=\"address1\">Address line 1:</label>" |
| 77 " <input type=\"text\" id=\"address1\"><br>" | 76 " <input type=\"text\" id=\"address1\"><br>" |
| 78 "<label for=\"address2\">Address line 2:</label>" | 77 "<label for=\"address2\">Address line 2:</label>" |
| 79 " <input type=\"text\" id=\"address2\"><br>" | 78 " <input type=\"text\" id=\"address2\"><br>" |
| 80 "<label for=\"city\">City:</label>" | 79 "<label for=\"city\">City:</label>" |
| 81 " <input type=\"text\" id=\"city\"><br>" | 80 " <input type=\"text\" id=\"city\"><br>" |
| 82 "<label for=\"state\">State:</label>" | 81 "<label for=\"state\">State:</label>" |
| 83 " <select id=\"state\">" | 82 " <select id=\"state\">" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 113 "var textchange = false;" | 112 "var textchange = false;" |
| 114 "var textkeyup = false;" | 113 "var textkeyup = false;" |
| 115 "var textblur = false;" | 114 "var textblur = false;" |
| 116 "var selectfocus = false;" | 115 "var selectfocus = false;" |
| 117 "var selectinput = false;" | 116 "var selectinput = false;" |
| 118 "var selectchange = false;" | 117 "var selectchange = false;" |
| 119 "var selectblur = false;" | 118 "var selectblur = false;" |
| 120 "</script>" | 119 "</script>" |
| 121 "<form action=\"http://www.example.com/\" method=\"POST\">" | 120 "<form action=\"http://www.example.com/\" method=\"POST\">" |
| 122 "<label for=\"firstname\">First name:</label>" | 121 "<label for=\"firstname\">First name:</label>" |
| 123 " <input type=\"text\" id=\"firstname\"" | 122 " <input type=\"text\" id=\"firstname\"><br>" |
| 124 " onfocus=\"domAutomationController.send(true)\"><br>" | |
| 125 "<label for=\"lastname\">Last name:</label>" | 123 "<label for=\"lastname\">Last name:</label>" |
| 126 " <input type=\"text\" id=\"lastname\"" | 124 " <input type=\"text\" id=\"lastname\"" |
| 127 " onfocus=\"inputfocus = true\" onkeydown=\"inputkeydown = true\"" | 125 " onfocus=\"inputfocus = true\" onkeydown=\"inputkeydown = true\"" |
| 128 " oninput=\"inputinput = true\" onchange=\"inputchange = true\"" | 126 " oninput=\"inputinput = true\" onchange=\"inputchange = true\"" |
| 129 " onkeyup=\"inputkeyup = true\" onblur=\"inputblur = true\" ><br>" | 127 " onkeyup=\"inputkeyup = true\" onblur=\"inputblur = true\" ><br>" |
| 130 "<label for=\"address1\">Address line 1:</label>" | 128 "<label for=\"address1\">Address line 1:</label>" |
| 131 " <input type=\"text\" id=\"address1\"><br>" | 129 " <input type=\"text\" id=\"address1\"><br>" |
| 132 "<label for=\"address2\">Address line 2:</label>" | 130 "<label for=\"address2\">Address line 2:</label>" |
| 133 " <input type=\"text\" id=\"address2\"><br>" | 131 " <input type=\"text\" id=\"address2\"><br>" |
| 134 "<label for=\"city\">City:</label>" | 132 "<label for=\"city\">City:</label>" |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 fetcher->set_status(net::URLRequestStatus::FromError(error)); | 352 fetcher->set_status(net::URLRequestStatus::FromError(error)); |
| 355 fetcher->set_response_code(success ? 200 : 500); | 353 fetcher->set_response_code(success ? 200 : 500); |
| 356 fetcher->SetResponseString(script); | 354 fetcher->SetResponseString(script); |
| 357 fetcher->delegate()->OnURLFetchComplete(fetcher); | 355 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 358 } | 356 } |
| 359 | 357 |
| 360 void FocusFieldByName(const std::string& name) { | 358 void FocusFieldByName(const std::string& name) { |
| 361 bool result = false; | 359 bool result = false; |
| 362 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 360 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
| 363 GetRenderViewHost(), | 361 GetRenderViewHost(), |
| 364 "if (document.readyState === 'complete')" | 362 "function onFocusHandler(e) {" |
| 365 " document.getElementById('" + name + "').focus();" | 363 " e.target.removeEventListener(e.type, arguments.callee);" |
| 366 "else" | 364 " domAutomationController.send(true);" |
| 367 " domAutomationController.send(false);", | 365 "}" |
| 366 "if (document.readyState === 'complete') {" |
| 367 " var target = document.getElementById('" + |
| 368 name + |
| 369 "');" |
| 370 " target.addEventListener('focus', onFocusHandler);" |
| 371 " target.focus();" |
| 372 "} else {" |
| 373 " domAutomationController.send(false);" |
| 374 "}", |
| 368 &result)); | 375 &result)); |
| 369 ASSERT_TRUE(result); | 376 ASSERT_TRUE(result); |
| 370 } | 377 } |
| 371 | 378 |
| 372 void FocusFirstNameField() { | 379 void FocusFirstNameField() { FocusFieldByName("firstname"); } |
| 373 bool result = false; | |
| 374 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | |
| 375 GetRenderViewHost(), | |
| 376 "if (document.readyState === 'complete')" | |
| 377 " document.getElementById('firstname').focus();" | |
| 378 "else" | |
| 379 " domAutomationController.send(false);", | |
| 380 &result)); | |
| 381 ASSERT_TRUE(result); | |
| 382 } | |
| 383 | 380 |
| 384 // Simulates a click on the middle of the DOM element with the given |id|. | 381 // Simulates a click on the middle of the DOM element with the given |id|. |
| 385 void ClickElementWithId(const std::string& id) { | 382 void ClickElementWithId(const std::string& id) { |
| 386 int x; | 383 int x; |
| 387 ASSERT_TRUE(content::ExecuteScriptAndExtractInt( | 384 ASSERT_TRUE(content::ExecuteScriptAndExtractInt( |
| 388 GetRenderViewHost(), | 385 GetRenderViewHost(), |
| 389 "var bounds = document.getElementById('" + | 386 "var bounds = document.getElementById('" + |
| 390 id + | 387 id + |
| 391 "').getBoundingClientRect();" | 388 "').getBoundingClientRect();" |
| 392 "domAutomationController.send(" | 389 "domAutomationController.send(" |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 #else | 785 #else |
| 789 #define MAYBE_OnSelectOptionFromDatalist OnSelectOptionFromDatalist | 786 #define MAYBE_OnSelectOptionFromDatalist OnSelectOptionFromDatalist |
| 790 #endif | 787 #endif |
| 791 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, | 788 IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, |
| 792 MAYBE_OnSelectOptionFromDatalist) { | 789 MAYBE_OnSelectOptionFromDatalist) { |
| 793 // Load the test page. | 790 // Load the test page. |
| 794 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 791 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 795 browser(), | 792 browser(), |
| 796 GURL(std::string(kDataURIPrefix) + | 793 GURL(std::string(kDataURIPrefix) + |
| 797 "<form action=\"http://www.example.com/\" method=\"POST\">" | 794 "<form action=\"http://www.example.com/\" method=\"POST\">" |
| 798 " <input list=\"dl\" type=\"search\" id=\"firstname\"" | 795 " <input list=\"dl\" type=\"search\" id=\"firstname\"><br>" |
| 799 " onfocus=\"domAutomationController.send(true)\"><br>" | |
| 800 " <datalist id=\"dl\">" | 796 " <datalist id=\"dl\">" |
| 801 " <option value=\"Adam\"></option>" | 797 " <option value=\"Adam\"></option>" |
| 802 " <option value=\"Bob\"></option>" | 798 " <option value=\"Bob\"></option>" |
| 803 " <option value=\"Carl\"></option>" | 799 " <option value=\"Carl\"></option>" |
| 804 " </datalist>" | 800 " </datalist>" |
| 805 "</form>"))); | 801 "</form>"))); |
| 806 std::string orginalcolor; | 802 std::string orginalcolor; |
| 807 GetFieldBackgroundColor("firstname", &orginalcolor); | 803 GetFieldBackgroundColor("firstname", &orginalcolor); |
| 808 | 804 |
| 809 FocusFirstNameField(); | 805 FocusFirstNameField(); |
| (...skipping 1081 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1891 std::string script_focus( | 1887 std::string script_focus( |
| 1892 "window.focus();" | 1888 "window.focus();" |
| 1893 "document.getElementById('CREDIT_CARD_NUMBER').focus();"); | 1889 "document.getElementById('CREDIT_CARD_NUMBER').focus();"); |
| 1894 ASSERT_TRUE(content::ExecuteScript(cross_frame, script_focus)); | 1890 ASSERT_TRUE(content::ExecuteScript(cross_frame, script_focus)); |
| 1895 | 1891 |
| 1896 // Send an arrow dow keypress in order to trigger the autofill popup. | 1892 // Send an arrow dow keypress in order to trigger the autofill popup. |
| 1897 SendKeyToPageAndWait(ui::DomKey::ARROW_DOWN); | 1893 SendKeyToPageAndWait(ui::DomKey::ARROW_DOWN); |
| 1898 } | 1894 } |
| 1899 | 1895 |
| 1900 } // namespace autofill | 1896 } // namespace autofill |
| OLD | NEW |