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 blink::WebVector<blink::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 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 88 void TestingSpellCheckProvider::ResetResult() { 89 text_.clear(); 90 } 91 92 SpellCheckProviderTest::SpellCheckProviderTest() {} 93 SpellCheckProviderTest::~SpellCheckProviderTest() {} 94 95 96