Home | History | Annotate | Download | only in spellchecker
      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