1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/renderer/spellchecker/spellcheck_provider_test.h" 6 7#include "base/stl_util.h" 8#include "chrome/common/spellcheck_marker.h" 9#include "chrome/common/spellcheck_messages.h" 10#include "chrome/renderer/spellchecker/spellcheck.h" 11#include "ipc/ipc_message_macros.h" 12 13class MockSpellcheck: public SpellCheck { 14}; 15 16FakeTextCheckingCompletion::FakeTextCheckingCompletion() 17: completion_count_(0), 18 cancellation_count_(0) { 19} 20 21FakeTextCheckingCompletion::~FakeTextCheckingCompletion() {} 22 23void FakeTextCheckingCompletion::didFinishCheckingText( 24 const blink::WebVector<blink::WebTextCheckingResult>& results) { 25 ++completion_count_; 26} 27 28void FakeTextCheckingCompletion::didCancelCheckingText() { 29 ++completion_count_; 30 ++cancellation_count_; 31} 32 33TestingSpellCheckProvider::TestingSpellCheckProvider() 34 : SpellCheckProvider(NULL, new MockSpellcheck), 35 spelling_service_call_count_(0) { 36} 37 38TestingSpellCheckProvider::~TestingSpellCheckProvider() { 39 delete spellcheck_; 40} 41 42bool TestingSpellCheckProvider::Send(IPC::Message* message) { 43#if !defined(OS_MACOSX) 44 // Call our mock message handlers. 45 bool handled = true; 46 IPC_BEGIN_MESSAGE_MAP(TestingSpellCheckProvider, *message) 47 IPC_MESSAGE_HANDLER(SpellCheckHostMsg_CallSpellingService, 48 OnCallSpellingService) 49 IPC_MESSAGE_UNHANDLED(handled = false) 50 IPC_END_MESSAGE_MAP() 51 52 if (handled) { 53 delete message; 54 return true; 55 } 56#endif 57 58 messages_.push_back(message); 59 return true; 60} 61 62void TestingSpellCheckProvider::OnCallSpellingService(int route_id, 63 int identifier, 64 const base::string16& text, 65 const std::vector<SpellCheckMarker>& markers) { 66#if defined (OS_MACOSX) 67 NOTREACHED(); 68#else 69 ++spelling_service_call_count_; 70 blink::WebTextCheckingCompletion* completion = 71 text_check_completions_.Lookup(identifier); 72 if (!completion) { 73 ResetResult(); 74 return; 75 } 76 text_.assign(text); 77 text_check_completions_.Remove(identifier); 78 std::vector<blink::WebTextCheckingResult> results; 79 results.push_back(blink::WebTextCheckingResult( 80 blink::WebTextDecorationTypeSpelling, 81 0, 5, blink::WebString("hello"))); 82 completion->didFinishCheckingText(results); 83 last_request_ = text; 84 last_results_ = results; 85#endif 86} 87 88void TestingSpellCheckProvider::ResetResult() { 89 text_.clear(); 90} 91 92SpellCheckProviderTest::SpellCheckProviderTest() {} 93SpellCheckProviderTest::~SpellCheckProviderTest() {} 94 95 96