| Index: chrome/browser/autofill/autofill_interactive_uitest.cc | 
| diff --git a/chrome/browser/autofill/autofill_interactive_uitest.cc b/chrome/browser/autofill/autofill_interactive_uitest.cc | 
| index d151972248d007b22205288c1c2148ccbc8a234e..44b3367e7134035e47a1cc2f2d86905b306374e6 100644 | 
| --- a/chrome/browser/autofill/autofill_interactive_uitest.cc | 
| +++ b/chrome/browser/autofill/autofill_interactive_uitest.cc | 
| @@ -12,6 +12,7 @@ | 
| #include "base/strings/string16.h" | 
| #include "base/strings/string_number_conversions.h" | 
| #include "base/strings/string_split.h" | 
| +#include "base/strings/stringprintf.h" | 
| #include "base/strings/utf_string_conversions.h" | 
| #include "base/time/time.h" | 
| #include "build/build_config.h" | 
| @@ -69,8 +70,7 @@ static const char kDataURIPrefix[] = "data:text/html;charset=utf-8,"; | 
| static const char kTestFormString[] = | 
| "<form action=\"http://www.example.com/\" method=\"POST\">" | 
| "<label for=\"firstname\">First name:</label>" | 
| -    " <input type=\"text\" id=\"firstname\"" | 
| -    "        onfocus=\"domAutomationController.send(true)\"><br>" | 
| +    " <input type=\"text\" id=\"firstname\"><br>" | 
| "<label for=\"lastname\">Last name:</label>" | 
| " <input type=\"text\" id=\"lastname\"><br>" | 
| "<label for=\"address1\">Address line 1:</label>" | 
| @@ -120,8 +120,7 @@ static const char kTestEventFormString[] = | 
| "</script>" | 
| "<form action=\"http://www.example.com/\" method=\"POST\">" | 
| "<label for=\"firstname\">First name:</label>" | 
| -    " <input type=\"text\" id=\"firstname\"" | 
| -    "        onfocus=\"domAutomationController.send(true)\"><br>" | 
| +    " <input type=\"text\" id=\"firstname\"><br>" | 
| "<label for=\"lastname\">Last name:</label>" | 
| " <input type=\"text\" id=\"lastname\"" | 
| " onfocus=\"inputfocus = true\" onkeydown=\"inputkeydown = true\"" | 
| @@ -359,27 +358,25 @@ class AutofillInteractiveTest : public InProcessBrowserTest { | 
|  | 
| void FocusFieldByName(const std::string& name) { | 
| bool result = false; | 
| -    ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 
| -        GetRenderViewHost(), | 
| -        "if (document.readyState === 'complete')" | 
| -        "  document.getElementById('" + name + "').focus();" | 
| -        "else" | 
| -        "  domAutomationController.send(false);", | 
| -        &result)); | 
| +    std::string script = base::StringPrintf( | 
| +        R"( function onFocusHandler(e) { | 
| +              e.target.removeEventListener(e.type, arguments.callee); | 
| +              domAutomationController.send(true); | 
| +            } | 
| +            if (document.readyState === 'complete') { | 
| +              var target = document.getElementById('%s'); | 
| +              target.addEventListener('focus', onFocusHandler); | 
| +              target.focus(); | 
| +            } else { | 
| +              domAutomationController.send(false); | 
| +            })", | 
| +        name.c_str()); | 
| +    ASSERT_TRUE(content::ExecuteScriptAndExtractBool(GetRenderViewHost(), | 
| +                                                     script, &result)); | 
| ASSERT_TRUE(result); | 
| } | 
|  | 
| -  void FocusFirstNameField() { | 
| -    bool result = false; | 
| -    ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 
| -        GetRenderViewHost(), | 
| -        "if (document.readyState === 'complete')" | 
| -        "  document.getElementById('firstname').focus();" | 
| -        "else" | 
| -        "  domAutomationController.send(false);", | 
| -        &result)); | 
| -    ASSERT_TRUE(result); | 
| -  } | 
| +  void FocusFirstNameField() { FocusFieldByName("firstname"); } | 
|  | 
| // Simulates a click on the middle of the DOM element with the given |id|. | 
| void ClickElementWithId(const std::string& id) { | 
| @@ -795,8 +792,7 @@ IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, | 
| browser(), | 
| GURL(std::string(kDataURIPrefix) + | 
| "<form action=\"http://www.example.com/\" method=\"POST\">" | 
| -           "  <input list=\"dl\" type=\"search\" id=\"firstname\"" | 
| -           "         onfocus=\"domAutomationController.send(true)\"><br>" | 
| +           "  <input list=\"dl\" type=\"search\" id=\"firstname\"><br>" | 
| "  <datalist id=\"dl\">" | 
| "  <option value=\"Adam\"></option>" | 
| "  <option value=\"Bob\"></option>" | 
|  |