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
13 class MockSpellcheck: public SpellCheck {
14 };
15
FakeTextCheckingCompletion()16 FakeTextCheckingCompletion::FakeTextCheckingCompletion()
17 : completion_count_(0),
18 cancellation_count_(0) {
19 }
20
~FakeTextCheckingCompletion()21 FakeTextCheckingCompletion::~FakeTextCheckingCompletion() {}
22
didFinishCheckingText(const blink::WebVector<blink::WebTextCheckingResult> & results)23 void FakeTextCheckingCompletion::didFinishCheckingText(
24 const blink::WebVector<blink::WebTextCheckingResult>& results) {
25 ++completion_count_;
26 }
27
didCancelCheckingText()28 void FakeTextCheckingCompletion::didCancelCheckingText() {
29 ++completion_count_;
30 ++cancellation_count_;
31 }
32
TestingSpellCheckProvider()33 TestingSpellCheckProvider::TestingSpellCheckProvider()
34 : SpellCheckProvider(NULL, new MockSpellcheck),
35 spelling_service_call_count_(0) {
36 }
37
~TestingSpellCheckProvider()38 TestingSpellCheckProvider::~TestingSpellCheckProvider() {
39 delete spellcheck_;
40 }
41
Send(IPC::Message * message)42 bool 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
OnCallSpellingService(int route_id,int identifier,const base::string16 & text,const std::vector<SpellCheckMarker> & markers)62 void 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
ResetResult()88 void TestingSpellCheckProvider::ResetResult() {
89 text_.clear();
90 }
91
SpellCheckProviderTest()92 SpellCheckProviderTest::SpellCheckProviderTest() {}
~SpellCheckProviderTest()93 SpellCheckProviderTest::~SpellCheckProviderTest() {}
94
95
96