| Index: chrome/renderer/autofill/page_click_tracker_browsertest.cc
|
| diff --git a/chrome/renderer/autofill/page_click_tracker_browsertest.cc b/chrome/renderer/autofill/page_click_tracker_browsertest.cc
|
| index 6495254487a2e267dd8c4f51051748eb44aba594..68a30186df60878cdfdff18ebae681ff393b42ef 100644
|
| --- a/chrome/renderer/autofill/page_click_tracker_browsertest.cc
|
| +++ b/chrome/renderer/autofill/page_click_tracker_browsertest.cc
|
| @@ -3,6 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/basictypes.h"
|
| +#include "base/strings/stringprintf.h"
|
| #include "chrome/test/base/chrome_render_view_test.h"
|
| #include "components/autofill/content/renderer/page_click_listener.h"
|
| #include "components/autofill/content/renderer/page_click_tracker.h"
|
| @@ -74,27 +75,20 @@ class PageClickTrackerTest : public ChromeRenderViewTest {
|
| ChromeRenderViewTest::TearDown();
|
| }
|
|
|
| - // Simulates a click on the given element and then waits for the stack
|
| - // to unwind.
|
| + // Simulates a click on the given element and the corresponding response from
|
| + // the browser about completing the animation effects.
|
| void SendElementClick(const std::string& element_id) {
|
| EXPECT_TRUE(SimulateElementClick(element_id));
|
| - ProcessPendingMessages();
|
| + SimulateFocusChangeCompleteMessageReceived();
|
| }
|
|
|
| - // Send all the messages required for a complete key press.
|
| - void SendKeyPress(int key_code) {
|
| - blink::WebKeyboardEvent keyboard_event;
|
| - keyboard_event.windowsKeyCode = key_code;
|
| - keyboard_event.setKeyIdentifierFromWindowsKeyCode();
|
| -
|
| - keyboard_event.type = blink::WebInputEvent::RawKeyDown;
|
| - SendWebKeyboardEvent(keyboard_event);
|
| -
|
| - keyboard_event.type = blink::WebInputEvent::Char;
|
| - SendWebKeyboardEvent(keyboard_event);
|
| -
|
| - keyboard_event.type = blink::WebInputEvent::KeyUp;
|
| - SendWebKeyboardEvent(keyboard_event);
|
| + // Simulates a JavaScript focus on the given element and the corresponding
|
| + // response from the browser about complete the animation effects.
|
| + void SendElementFocus(const char* element_id) {
|
| + ExecuteJavaScript(
|
| + base::StringPrintf("document.getElementById('%s').focus();", element_id)
|
| + .c_str());
|
| + SimulateFocusChangeCompleteMessageReceived();
|
| }
|
|
|
| scoped_ptr<PageClickTracker> page_click_tracker_;
|
| @@ -126,6 +120,19 @@ TEST_F(PageClickTrackerTest, PageClickTrackerInputClicked) {
|
| EXPECT_FALSE(test_listener_.form_control_element_clicked_called_);
|
| }
|
|
|
| +TEST_F(PageClickTrackerTest, PageClickTrackerInputFocusedAndClicked) {
|
| + // Focus the text field without a click.
|
| + SendElementFocus("text_1");
|
| + EXPECT_FALSE(test_listener_.form_control_element_clicked_called_);
|
| + test_listener_.ClearResults();
|
| +
|
| + // Click the focused text field to test that was_focused_ is set correctly.
|
| + SendElementClick("text_1");
|
| + EXPECT_TRUE(test_listener_.form_control_element_clicked_called_);
|
| + EXPECT_TRUE(test_listener_.was_focused_);
|
| + EXPECT_TRUE(text_ == test_listener_.form_control_element_clicked_);
|
| +}
|
| +
|
| // Tests that PageClickTracker does notify correctly when a textarea
|
| // node is clicked.
|
| TEST_F(PageClickTrackerTest, PageClickTrackerTextAreaClicked) {
|
| @@ -148,4 +155,18 @@ TEST_F(PageClickTrackerTest, PageClickTrackerTextAreaClicked) {
|
| EXPECT_FALSE(test_listener_.form_control_element_clicked_called_);
|
| }
|
|
|
| +TEST_F(PageClickTrackerTest, PageClickTrackerTextAreaFocusedAndClicked) {
|
| + // Focus the textarea without a click.
|
| + SendElementFocus("textarea_1");
|
| + EXPECT_FALSE(test_listener_.form_control_element_clicked_called_);
|
| + test_listener_.ClearResults();
|
| +
|
| + // Click the focused text field to test that was_focused_ is set correctly.
|
| + SendElementClick("textarea_1");
|
| + EXPECT_TRUE(test_listener_.form_control_element_clicked_called_);
|
| + EXPECT_TRUE(test_listener_.was_focused_);
|
| + EXPECT_TRUE(textarea_ == test_listener_.form_control_element_clicked_);
|
| + test_listener_.ClearResults();
|
| +}
|
| +
|
| } // namespace autofill
|
|
|