- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / renderer / spellchecker / spellcheck_provider_test.cc
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
16 FakeTextCheckingCompletion::FakeTextCheckingCompletion()
17 : completion_count_(0),
18   cancellation_count_(0) {
19 }
20
21 FakeTextCheckingCompletion::~FakeTextCheckingCompletion() {}
22
23 void FakeTextCheckingCompletion::didFinishCheckingText(
24     const WebKit::WebVector<WebKit::WebTextCheckingResult>& results) {
25   ++completion_count_;
26 }
27
28 void FakeTextCheckingCompletion::didCancelCheckingText() {
29   ++completion_count_;
30   ++cancellation_count_;
31 }
32
33 TestingSpellCheckProvider::TestingSpellCheckProvider()
34       : SpellCheckProvider(NULL, new MockSpellcheck),
35         spelling_service_call_count_(0) {
36 }
37
38 TestingSpellCheckProvider::~TestingSpellCheckProvider() {
39   delete spellcheck_;
40 }
41
42 bool TestingSpellCheckProvider::Send(IPC::Message* message)  {
43   // Call our mock message handlers.
44   bool handled = true;
45   IPC_BEGIN_MESSAGE_MAP(TestingSpellCheckProvider, *message)
46 #if !defined(OS_MACOSX)
47     IPC_MESSAGE_HANDLER(SpellCheckHostMsg_CallSpellingService,
48                         OnCallSpellingService)
49 #endif
50     IPC_MESSAGE_UNHANDLED(handled = false)
51   IPC_END_MESSAGE_MAP()
52
53   if (handled) {
54     delete message;
55     return true;
56   }
57
58   messages_.push_back(message);
59   return true;
60 }
61
62 void TestingSpellCheckProvider::OnCallSpellingService(int route_id,
63                            int identifier,
64                            const string16& text,
65                            const std::vector<SpellCheckMarker>& markers) {
66 #if defined (OS_MACOSX)
67   NOTREACHED();
68 #else
69   ++spelling_service_call_count_;
70   WebKit::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<WebKit::WebTextCheckingResult> results;
79   results.push_back(WebKit::WebTextCheckingResult(
80       WebKit::WebTextDecorationTypeSpelling,
81       0, 5, WebKit::WebString("hello")));
82   completion->didFinishCheckingText(results);
83   last_request_ = text;
84   last_results_ = results;
85 #endif
86 }
87
88 void TestingSpellCheckProvider::ResetResult() {
89   text_.clear();
90 }
91
92 SpellCheckProviderTest::SpellCheckProviderTest() {}
93 SpellCheckProviderTest::~SpellCheckProviderTest() {}
94
95