| // Copyright (c) 2012 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 "chrome/renderer/spellchecker/spellcheck_provider_test.h" |
| |
| #include "base/stl_util.h" |
| #include "chrome/common/spellcheck_marker.h" |
| #include "chrome/common/spellcheck_messages.h" |
| #include "chrome/renderer/spellchecker/spellcheck.h" |
| #include "ipc/ipc_message_macros.h" |
| |
| class MockSpellcheck: public SpellCheck { |
| }; |
| |
| FakeTextCheckingCompletion::FakeTextCheckingCompletion() |
| : completion_count_(0), |
| cancellation_count_(0) { |
| } |
| |
| FakeTextCheckingCompletion::~FakeTextCheckingCompletion() {} |
| |
| void FakeTextCheckingCompletion::didFinishCheckingText( |
| const blink::WebVector<blink::WebTextCheckingResult>& results) { |
| ++completion_count_; |
| } |
| |
| void FakeTextCheckingCompletion::didCancelCheckingText() { |
| ++completion_count_; |
| ++cancellation_count_; |
| } |
| |
| TestingSpellCheckProvider::TestingSpellCheckProvider() |
| : SpellCheckProvider(NULL, new MockSpellcheck), |
| spelling_service_call_count_(0) { |
| } |
| |
| TestingSpellCheckProvider::~TestingSpellCheckProvider() { |
| delete spellcheck_; |
| } |
| |
| bool TestingSpellCheckProvider::Send(IPC::Message* message) { |
| #if !defined(OS_MACOSX) |
| // Call our mock message handlers. |
| bool handled = true; |
| IPC_BEGIN_MESSAGE_MAP(TestingSpellCheckProvider, *message) |
| IPC_MESSAGE_HANDLER(SpellCheckHostMsg_CallSpellingService, |
| OnCallSpellingService) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| |
| if (handled) { |
| delete message; |
| return true; |
| } |
| #endif |
| |
| messages_.push_back(message); |
| return true; |
| } |
| |
| void TestingSpellCheckProvider::OnCallSpellingService(int route_id, |
| int identifier, |
| const base::string16& text, |
| const std::vector<SpellCheckMarker>& markers) { |
| #if defined (OS_MACOSX) |
| NOTREACHED(); |
| #else |
| ++spelling_service_call_count_; |
| blink::WebTextCheckingCompletion* completion = |
| text_check_completions_.Lookup(identifier); |
| if (!completion) { |
| ResetResult(); |
| return; |
| } |
| text_.assign(text); |
| text_check_completions_.Remove(identifier); |
| std::vector<blink::WebTextCheckingResult> results; |
| results.push_back(blink::WebTextCheckingResult( |
| blink::WebTextDecorationTypeSpelling, |
| 0, 5, blink::WebString("hello"))); |
| completion->didFinishCheckingText(results); |
| last_request_ = text; |
| last_results_ = results; |
| #endif |
| } |
| |
| void TestingSpellCheckProvider::ResetResult() { |
| text_.clear(); |
| } |
| |
| SpellCheckProviderTest::SpellCheckProviderTest() {} |
| SpellCheckProviderTest::~SpellCheckProviderTest() {} |
| |
| |