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 |