// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/basictypes.h" #include "components/autofill/content/renderer/page_click_listener.h" #include "components/autofill/content/renderer/page_click_tracker.h" #include "content/public/renderer/render_view.h" #include "content/public/test/render_view_test.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebInputElement.h" #include "third_party/WebKit/public/web/WebView.h" #include "third_party/WebKit/public/platform/WebSize.h" #include "ui/base/keycodes/keyboard_codes.h" namespace autofill { class TestPageClickListener : public PageClickListener { public: TestPageClickListener() : input_element_clicked_called_(false), input_element_lost_focus_called_(false), was_focused_(false), is_focused_(false) { } virtual void InputElementClicked(const WebKit::WebInputElement& element, bool was_focused, bool is_focused) OVERRIDE { input_element_clicked_called_ = true; element_clicked_ = element; was_focused_ = was_focused; is_focused_ = is_focused; } virtual void InputElementLostFocus() OVERRIDE { input_element_lost_focus_called_ = true; } void ClearResults() { input_element_clicked_called_ = false; input_element_lost_focus_called_ = false; element_clicked_.reset(); was_focused_ = false; is_focused_ = false; } bool input_element_clicked_called_; bool input_element_lost_focus_called_; WebKit::WebInputElement element_clicked_; bool was_focused_; bool is_focused_; }; class PageClickTrackerTest : public content::RenderViewTest { protected: virtual void SetUp() OVERRIDE { content::RenderViewTest::SetUp(); // RenderView creates PageClickTracker but it doesn't keep it around. // Rather than make it do so for the test, we create a new object. page_click_tracker_.reset(new PageClickTracker(view_, &test_listener_)); LoadHTML("
"); GetWebWidget()->resize(WebKit::WebSize(500, 500)); GetWebWidget()->setFocus(true); WebKit::WebDocument document = view_->GetWebView()->mainFrame()->document(); text_ = document.getElementById("text_1"); ASSERT_FALSE(text_.isNull()); } virtual void TearDown() OVERRIDE { text_.reset(); test_listener_.ClearResults(); page_click_tracker_.reset(); content::RenderViewTest::TearDown(); } // Send all the messages required for a complete key press. void SendKeyPress(int key_code) { WebKit::WebKeyboardEvent keyboard_event; keyboard_event.windowsKeyCode = key_code; keyboard_event.setKeyIdentifierFromWindowsKeyCode(); keyboard_event.type = WebKit::WebInputEvent::RawKeyDown; SendWebKeyboardEvent(keyboard_event); keyboard_event.type = WebKit::WebInputEvent::Char; SendWebKeyboardEvent(keyboard_event); keyboard_event.type = WebKit::WebInputEvent::KeyUp; SendWebKeyboardEvent(keyboard_event); } scoped_ptr