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

Unified Diff: webkit/glue/autocomplete_input_listener_unittest.cc

Issue 11479: New take at implementing autofill using the editor client API (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month 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
« no previous file with comments | « webkit/glue/autocomplete_input_listener.cc ('k') | webkit/glue/dom_operations.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/autocomplete_input_listener_unittest.cc
===================================================================
--- webkit/glue/autocomplete_input_listener_unittest.cc (revision 5578)
+++ webkit/glue/autocomplete_input_listener_unittest.cc (working copy)
@@ -1,227 +0,0 @@
-// Copyright (c) 2006-2008 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.
-//
-// The DomAutocompleteTests in this file are responsible for ensuring the
-// abstract dom autocomplete framework is correctly responding to events and
-// delegating to appropriate places. This means concrete implementations should
-// focus only on testing the code actually written for that implementation and
-// those tests should be completely decoupled from WebCore::Event.
-
-#include <string>
-
-#include "config.h"
-
-#include "base/compiler_specific.h"
-
-MSVC_PUSH_WARNING_LEVEL(0);
-#include "HTMLInputElement.h"
-#include "HTMLFormElement.h"
-#include "Document.h"
-#include "Frame.h"
-#include "Editor.h"
-#include "EventNames.h"
-#include "Event.h"
-#include "EventListener.h"
-#include <wtf/Threading.h>
-MSVC_POP_WARNING();
-
-#undef LOG
-
-#include "webkit/glue/autocomplete_input_listener.h"
-#include "webkit/glue/webframe.h"
-#include "webkit/glue/webframe_impl.h"
-#include "webkit/glue/webview.h"
-#include "webkit/tools/test_shell/test_shell_test.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using WebCore::Event;
-
-namespace webkit_glue {
-
-class TestAutocompleteBodyListener : public AutocompleteBodyListener {
- public:
- TestAutocompleteBodyListener() {
- }
-
- void SetCaretAtEnd(WebCore::HTMLInputElement* element, bool value) {
- std::vector<WebCore::HTMLInputElement*>::iterator iter =
- std::find(caret_at_end_elements_.begin(), caret_at_end_elements_.end(),
- element);
- if (value) {
- if (iter == caret_at_end_elements_.end())
- caret_at_end_elements_.push_back(element);
- } else {
- if (iter != caret_at_end_elements_.end())
- caret_at_end_elements_.erase(iter);
- }
- }
-
- void ResetTestState() {
- caret_at_end_elements_.clear();
- }
-
- protected:
- // AutocompleteBodyListener override.
- virtual bool IsCaretAtEndOfText(WebCore::HTMLInputElement* element,
- size_t input_length,
- size_t previous_length) const {
- return std::find(caret_at_end_elements_.begin(),
- caret_at_end_elements_.end(),
- element) != caret_at_end_elements_.end();
- }
-
- private:
- // List of elements for which the caret is at the end of the text.
- std::vector<WebCore::HTMLInputElement*> caret_at_end_elements_;
-};
-
-class TestAutocompleteInputListener : public AutocompleteInputListener {
- public:
- TestAutocompleteInputListener()
- : blurred_(false),
- did_request_inline_autocomplete_(false) {
- }
-
- void ResetTestState() {
- blurred_ = false;
- did_request_inline_autocomplete_ = false;
- }
-
- bool blurred() const { return blurred_; }
- bool did_request_inline_autocomplete() const {
- return did_request_inline_autocomplete_;
- }
-
- virtual void OnBlur(WebCore::HTMLInputElement* element,
- const std::wstring& user_input) {
- blurred_ = true;
- }
- virtual void OnInlineAutocompleteNeeded(WebCore::HTMLInputElement* element,
- const std::wstring& user_input) {
- did_request_inline_autocomplete_ = true;
- }
-
- private:
- bool blurred_;
- bool did_request_inline_autocomplete_;
-};
-
-namespace {
-
-class DomAutocompleteTests : public TestShellTest {
- public:
- virtual void SetUp() {
- TestShellTest::SetUp();
- // We need a document in order to create HTMLInputElements.
- WebView* view = test_shell_->webView();
- WebFrameImpl* frame = static_cast<WebFrameImpl*>(view->GetMainFrame());
- document_ = frame->frame()->document();
- }
-
- void FireAndHandleInputEvent(AutocompleteBodyListener* listener,
- WebCore::HTMLInputElement* element) {
- RefPtr<Event> event(Event::create(WebCore::eventNames().inputEvent,
- false, false));
- event->setTarget(element);
- listener->handleEvent(event.get(), false);
- }
-
- void SimulateTypedInput(TestAutocompleteBodyListener* listener,
- WebCore::HTMLInputElement* element,
- const std::wstring& new_input,
- bool caret_at_end) {
- element->setValue(StdWStringToString(new_input));
- listener->SetCaretAtEnd(element, caret_at_end);
- FireAndHandleInputEvent(listener, element);
- }
-
- WebCore::Document* document_;
-};
-} // namespace
-
-TEST_F(DomAutocompleteTests, OnBlur) {
- RefPtr<WebCore::HTMLInputElement> ignored_element =
- new WebCore::HTMLInputElement(document_);
- RefPtr<WebCore::HTMLInputElement> listened_element =
- new WebCore::HTMLInputElement(document_);
- RefPtr<TestAutocompleteBodyListener> body_listener =
- new TestAutocompleteBodyListener;
- TestAutocompleteInputListener* listener = new TestAutocompleteInputListener();
- // body_listener takes ownership of the listener.
- body_listener->AddInputListener(listened_element.get(), listener);
-
- // Simulate a blur event to the element we are not listening to.
- // Our listener should not be notified.
- RefPtr<Event> event(Event::create(WebCore::eventNames().DOMFocusOutEvent,
- false, false));
- event->setTarget(ignored_element.get());
- body_listener->handleEvent(event.get(), false);
- EXPECT_FALSE(listener->blurred());
-
- // Now simulate the event on the input element we are listening to.
- event->setTarget(listened_element.get());
- body_listener->handleEvent(event.get(), false);
- EXPECT_TRUE(listener->blurred());
-}
-
-TEST_F(DomAutocompleteTests, InlineAutocompleteTriggeredByInputEvent) {
- RefPtr<WebCore::HTMLInputElement> ignored_element =
- new WebCore::HTMLInputElement(document_);
- RefPtr<WebCore::HTMLInputElement> listened_element =
- new WebCore::HTMLInputElement(document_);
- RefPtr<TestAutocompleteBodyListener> body_listener =
- new TestAutocompleteBodyListener;
-
- TestAutocompleteInputListener* listener = new TestAutocompleteInputListener();
- body_listener->AddInputListener(listened_element.get(), listener);
-
- // Simulate an inputEvent by setting the value and artificially firing evt.
- // The user typed 'g'.
- SimulateTypedInput(body_listener.get(), ignored_element.get(), L"g", true);
- EXPECT_FALSE(listener->did_request_inline_autocomplete());
- SimulateTypedInput(body_listener.get(), listened_element.get(), L"g", true);
- EXPECT_TRUE(listener->did_request_inline_autocomplete());
-}
-
-TEST_F(DomAutocompleteTests, InlineAutocompleteHeuristics) {
- RefPtr<WebCore::HTMLInputElement> input_element =
- new WebCore::HTMLInputElement(document_);
- RefPtr<TestAutocompleteBodyListener> body_listener =
- new TestAutocompleteBodyListener();
-
- TestAutocompleteInputListener* listener = new TestAutocompleteInputListener();
- body_listener->AddInputListener(input_element.get(), listener);
-
- // Simulate a user entering some text, and then backspacing to remove
- // a character.
- SimulateTypedInput(body_listener.get(), input_element.get(), L"g", true);
- EXPECT_TRUE(listener->did_request_inline_autocomplete());
- listener->ResetTestState();
- body_listener->ResetTestState();
-
- SimulateTypedInput(body_listener.get(), input_element.get(), L"go", true);
- EXPECT_TRUE(listener->did_request_inline_autocomplete());
- listener->ResetTestState();
- body_listener->ResetTestState();
-
- SimulateTypedInput(body_listener.get(), input_element.get(), L"g", true);
- EXPECT_FALSE(listener->did_request_inline_autocomplete());
- listener->ResetTestState();
- body_listener->ResetTestState();
-
- // Now simulate the user moving the cursor to a position other than the end,
- // and adding text.
- SimulateTypedInput(body_listener.get(), input_element.get(), L"og", false);
- EXPECT_FALSE(listener->did_request_inline_autocomplete());
- listener->ResetTestState();
- body_listener->ResetTestState();
-
- // Test that same input doesn't trigger autocomplete.
- SimulateTypedInput(body_listener.get(), input_element.get(), L"og", true);
- EXPECT_FALSE(listener->did_request_inline_autocomplete());
- listener->ResetTestState();
- body_listener->ResetTestState();
-}
-
-} // webkit_glue
« no previous file with comments | « webkit/glue/autocomplete_input_listener.cc ('k') | webkit/glue/dom_operations.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698