Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8442)

Unified Diff: chrome/renderer/autofill/page_click_tracker_browsertest.cc

Issue 715733002: [Android] Show autofill popup after animation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..84231f682f5c6c2da8d012cd6d1711f032f64dcc 100644
--- a/chrome/renderer/autofill/page_click_tracker_browsertest.cc
+++ b/chrome/renderer/autofill/page_click_tracker_browsertest.cc
@@ -8,11 +8,13 @@
#include "components/autofill/content/renderer/page_click_tracker.h"
#include "content/public/renderer/render_view.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/WebKit/public/platform/WebFloatPoint.h"
+#include "third_party/WebKit/public/platform/WebSize.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebInputElement.h"
+#include "third_party/WebKit/public/web/WebSettings.h"
#include "third_party/WebKit/public/web/WebTextAreaElement.h"
#include "third_party/WebKit/public/web/WebView.h"
-#include "third_party/WebKit/public/platform/WebSize.h"
#include "ui/events/keycodes/keyboard_codes.h"
namespace autofill {
@@ -50,12 +52,17 @@ class PageClickTrackerTest : public ChromeRenderViewTest {
// Rather than make it do so for the test, we create a new object.
page_click_tracker_.reset(new PageClickTracker(view_, &test_listener_));
+ // Must be set before loading HTML.
+ view_->GetWebView()->setDefaultPageScaleLimits(1, 4);
+ view_->GetWebView()->settings()->setPinchVirtualViewportEnabled(true);
+
LoadHTML("<form>"
" <input type='text' id='text_1'></input><br>"
" <input type='text' id='text_2'></input><br>"
" <textarea id='textarea_1'></textarea><br>"
" <textarea id='textarea_2'></textarea><br>"
" <input type='button' id='button'></input><br>"
+ " <input type='button' id='button_2' disabled></input><br>"
"</form>");
GetWebWidget()->resize(blink::WebSize(500, 500));
GetWebWidget()->setFocus(true);
@@ -64,6 +71,10 @@ class PageClickTrackerTest : public ChromeRenderViewTest {
textarea_ = document.getElementById("textarea_1");
ASSERT_FALSE(text_.isNull());
ASSERT_FALSE(textarea_.isNull());
+
+ // Enable show-ime event when element is focused by indicating that a user
+ // gesture has been processed since load.
+ EXPECT_TRUE(SimulateElementClick("button"));
}
void TearDown() override {
@@ -74,29 +85,6 @@ class PageClickTrackerTest : public ChromeRenderViewTest {
ChromeRenderViewTest::TearDown();
}
- // Simulates a click on the given element and then waits for the stack
- // to unwind.
- void SendElementClick(const std::string& element_id) {
- EXPECT_TRUE(SimulateElementClick(element_id));
- ProcessPendingMessages();
- }
-
- // 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);
- }
-
scoped_ptr<PageClickTracker> page_click_tracker_;
TestPageClickListener test_listener_;
blink::WebElement text_;
@@ -108,43 +96,96 @@ class PageClickTrackerTest : public ChromeRenderViewTest {
TEST_F(PageClickTrackerTest, PageClickTrackerInputClicked) {
EXPECT_NE(text_, text_.document().focusedElement());
// Click the text field once.
- SendElementClick("text_1");
+ EXPECT_TRUE(SimulateElementClick("text_1"));
EXPECT_TRUE(test_listener_.form_control_element_clicked_called_);
EXPECT_FALSE(test_listener_.was_focused_);
EXPECT_TRUE(text_ == test_listener_.form_control_element_clicked_);
test_listener_.ClearResults();
// Click the text field again to test that was_focused_ is set correctly.
- SendElementClick("text_1");
+ EXPECT_TRUE(SimulateElementClick("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_);
test_listener_.ClearResults();
// Click the button, no notification should happen (this is not a text-input).
- SendElementClick("button");
+ EXPECT_TRUE(SimulateElementClick("button"));
EXPECT_FALSE(test_listener_.form_control_element_clicked_called_);
}
+TEST_F(PageClickTrackerTest, PageClickTrackerInputFocusedAndClicked) {
+ // Focus the text field without a click.
+ ExecuteJavaScript("document.getElementById('text_1').focus();");
+ 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.
+ EXPECT_TRUE(SimulateElementClick("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) {
// Click the textarea field once.
- SendElementClick("textarea_1");
+ EXPECT_TRUE(SimulateElementClick("textarea_1"));
EXPECT_TRUE(test_listener_.form_control_element_clicked_called_);
EXPECT_FALSE(test_listener_.was_focused_);
EXPECT_TRUE(textarea_ == test_listener_.form_control_element_clicked_);
test_listener_.ClearResults();
// Click the textarea field again to test that was_focused_ is set correctly.
- SendElementClick("textarea_1");
+ EXPECT_TRUE(SimulateElementClick("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();
// Click the button, no notification should happen (this is not a text-input).
- SendElementClick("button");
+ EXPECT_TRUE(SimulateElementClick("button"));
+ EXPECT_FALSE(test_listener_.form_control_element_clicked_called_);
+}
+
+TEST_F(PageClickTrackerTest, PageClickTrackerTextAreaFocusedAndClicked) {
+ // Focus the textarea without a click.
+ ExecuteJavaScript("document.getElementById('textarea_1').focus();");
+ 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.
+ EXPECT_TRUE(SimulateElementClick("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();
+}
+
+TEST_F(PageClickTrackerTest, PageClickTrackerScaledTextareaClicked) {
+ EXPECT_NE(text_, text_.document().focusedElement());
+ view_->GetWebView()->setPageScaleFactor(3);
+ view_->GetWebView()->setPinchViewportOffset(blink::WebFloatPoint(50, 50));
+
+ // Click textarea_1.
+ SimulatePointClick(gfx::Point(30, 30));
+ EXPECT_TRUE(test_listener_.form_control_element_clicked_called_);
+ EXPECT_FALSE(test_listener_.was_focused_);
+ EXPECT_TRUE(textarea_ == test_listener_.form_control_element_clicked_);
+}
+
+TEST_F(PageClickTrackerTest, PageClickTrackerDisabledInputClickedNoEvent) {
+ EXPECT_NE(text_, text_.document().focusedElement());
+ // Click the text field once.
+ EXPECT_TRUE(SimulateElementClick("text_1"));
+ EXPECT_TRUE(test_listener_.form_control_element_clicked_called_);
+ EXPECT_FALSE(test_listener_.was_focused_);
+ EXPECT_TRUE(text_ == test_listener_.form_control_element_clicked_);
+ test_listener_.ClearResults();
+
+ // Click the disabled element.
+ EXPECT_TRUE(SimulateElementClick("button_2"));
EXPECT_FALSE(test_listener_.form_control_element_clicked_called_);
}

Powered by Google App Engine
This is Rietveld 408576698