Index: Source/web/tests/WebViewTest.cpp |
diff --git a/Source/web/tests/WebViewTest.cpp b/Source/web/tests/WebViewTest.cpp |
index 657f90fd4ad235d65cf08a92b501430f6b162905..e860a1bd9ddf963c2363ef87404885dfa892ce51 100644 |
--- a/Source/web/tests/WebViewTest.cpp |
+++ b/Source/web/tests/WebViewTest.cpp |
@@ -1132,7 +1132,8 @@ public: |
MockAutofillClient() |
: m_ignoreTextChanges(false) |
, m_textChangesWhileIgnored(0) |
- , m_textChangesWhileNotIgnored(0) { } |
+ , m_textChangesWhileNotIgnored(0) |
+ , m_userGestureNotificationsCount(0) { } |
virtual ~MockAutofillClient() { } |
@@ -1144,6 +1145,7 @@ public: |
else |
++m_textChangesWhileNotIgnored; |
} |
+ virtual void firstUserGestureObserved() OVERRIDE { ++m_userGestureNotificationsCount; } |
void clearChangeCounts() |
{ |
@@ -1153,11 +1155,13 @@ public: |
int textChangesWhileIgnored() { return m_textChangesWhileIgnored; } |
int textChangesWhileNotIgnored() { return m_textChangesWhileNotIgnored; } |
+ int getUserGestureNotificationsCount() { return m_userGestureNotificationsCount; } |
private: |
bool m_ignoreTextChanges; |
int m_textChangesWhileIgnored; |
int m_textChangesWhileNotIgnored; |
+ int m_userGestureNotificationsCount; |
}; |
@@ -1871,4 +1875,68 @@ TEST_F(WebViewTest, NonUserInputTextUpdate) |
EXPECT_FALSE(client.textIsUpdated()); |
} |
+// Check that the WebAutofillClient is correctly notified about first user |
+// gestures after load, following various input events. |
+TEST_F(WebViewTest, FirstUserGestureObservedKeyEvent) |
+{ |
+ URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
+ MockAutofillClient client; |
+ WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
+ webView->setAutofillClient(&client); |
+ webView->setInitialFocus(false); |
+ |
+ EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
+ |
+ WebKeyboardEvent keyEvent; |
+ keyEvent.windowsKeyCode = WebCore::VKEY_SPACE; |
+ keyEvent.type = WebInputEvent::RawKeyDown; |
+ keyEvent.setKeyIdentifierFromWindowsKeyCode(); |
+ webView->handleInputEvent(keyEvent); |
+ keyEvent.type = WebInputEvent::KeyUp; |
+ webView->handleInputEvent(keyEvent); |
+ |
+ EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
+ webView->setAutofillClient(0); |
+} |
+ |
+TEST_F(WebViewTest, FirstUserGestureObservedMouseEvent) |
+{ |
+ URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
+ MockAutofillClient client; |
+ WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
+ webView->setAutofillClient(&client); |
+ webView->setInitialFocus(false); |
+ |
+ EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
+ |
+ WebMouseEvent mouseEvent; |
+ mouseEvent.button = WebMouseEvent::ButtonLeft; |
+ mouseEvent.x = 1; |
+ mouseEvent.y = 1; |
+ mouseEvent.clickCount = 1; |
+ mouseEvent.type = WebInputEvent::MouseDown; |
+ webView->handleInputEvent(mouseEvent); |
+ mouseEvent.type = WebInputEvent::MouseUp; |
+ webView->handleInputEvent(mouseEvent); |
+ |
+ EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
+ webView->setAutofillClient(0); |
+} |
+ |
+TEST_F(WebViewTest, FirstUserGestureObservedGestureTap) |
+{ |
+ URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("longpress_selection.html")); |
+ MockAutofillClient client; |
+ WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "longpress_selection.html", true); |
+ webView->setAutofillClient(&client); |
+ webView->setInitialFocus(false); |
+ |
+ EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
+ |
+ EXPECT_TRUE(tapElementById(webView, WebInputEvent::GestureTap, WebString::fromUTF8("target"))); |
+ |
+ EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
+ webView->setAutofillClient(0); |
+} |
+ |
} // namespace |