| Index: components/spellcheck/renderer/spellcheck_provider_test.cc
|
| diff --git a/components/spellcheck/renderer/spellcheck_provider_test.cc b/components/spellcheck/renderer/spellcheck_provider_test.cc
|
| index ffba9d14b0c2f6713aa7bc66180b68c53a499225..76d48ae86297b2d6c7dfd458b6dd47247cf58220 100644
|
| --- a/components/spellcheck/renderer/spellcheck_provider_test.cc
|
| +++ b/components/spellcheck/renderer/spellcheck_provider_test.cc
|
| @@ -5,19 +5,16 @@
|
| #include "components/spellcheck/renderer/spellcheck_provider_test.h"
|
|
|
| #include "base/memory/ptr_util.h"
|
| -#include "base/stl_util.h"
|
| +#include "base/message_loop/message_loop.h"
|
| +#include "base/run_loop.h"
|
| +#include "components/spellcheck/common/spellcheck.mojom.h"
|
| #include "components/spellcheck/common/spellcheck_messages.h"
|
| +#include "components/spellcheck/common/spellcheck_result.h"
|
| #include "components/spellcheck/renderer/spellcheck.h"
|
| #include "components/spellcheck/spellcheck_build_features.h"
|
| -#include "ipc/ipc_message_macros.h"
|
| -
|
| -class MockSpellcheck: public SpellCheck {
|
| -};
|
|
|
| FakeTextCheckingCompletion::FakeTextCheckingCompletion()
|
| -: completion_count_(0),
|
| - cancellation_count_(0) {
|
| -}
|
| + : completion_count_(0), cancellation_count_(0) {}
|
|
|
| FakeTextCheckingCompletion::~FakeTextCheckingCompletion() {}
|
|
|
| @@ -32,62 +29,76 @@ void FakeTextCheckingCompletion::DidCancelCheckingText() {
|
| }
|
|
|
| TestingSpellCheckProvider::TestingSpellCheckProvider()
|
| - : SpellCheckProvider(NULL, new MockSpellcheck),
|
| - spelling_service_call_count_(0) {
|
| -}
|
| + : SpellCheckProvider(nullptr, new SpellCheck),
|
| + spelling_service_call_count_(0),
|
| + binding_(this) {}
|
|
|
| -TestingSpellCheckProvider::TestingSpellCheckProvider(
|
| - SpellCheck* spellcheck)
|
| +TestingSpellCheckProvider::TestingSpellCheckProvider(SpellCheck* spellcheck)
|
| : SpellCheckProvider(nullptr, spellcheck),
|
| - spelling_service_call_count_(0) {
|
| -}
|
| + spelling_service_call_count_(0),
|
| + binding_(this) {}
|
|
|
| TestingSpellCheckProvider::~TestingSpellCheckProvider() {
|
| + binding_.Close();
|
| delete spellcheck_;
|
| }
|
|
|
| -bool TestingSpellCheckProvider::Send(IPC::Message* message) {
|
| +void TestingSpellCheckProvider::RequestTextChecking(
|
| + const base::string16& text,
|
| + blink::WebTextCheckingCompletion* completion) {
|
| #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER)
|
| - // 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;
|
| - }
|
| + if (!loop_ && !base::MessageLoop::current())
|
| + loop_ = base::MakeUnique<base::MessageLoop>();
|
| + if (!binding_.is_bound())
|
| + SetSpellCheckHostForTesting(binding_.CreateInterfacePtrAndBind());
|
| + SpellCheckProvider::RequestTextChecking(text, completion);
|
| + base::RunLoop().RunUntilIdle();
|
| +#else
|
| + SpellCheckProvider::RequestTextChecking(text, completion);
|
| #endif
|
| +}
|
|
|
| +bool TestingSpellCheckProvider::Send(IPC::Message* message) {
|
| messages_.push_back(base::WrapUnique<IPC::Message>(message));
|
| return true;
|
| }
|
|
|
| +void TestingSpellCheckProvider::RequestDictionary() {}
|
| +
|
| +void TestingSpellCheckProvider::NotifyChecked(const base::string16& word,
|
| + bool misspelled) {}
|
| +
|
| +void TestingSpellCheckProvider::CallSpellingService(
|
| + const base::string16& text,
|
| + const CallSpellingServiceCallback& callback) {
|
| +#if !BUILDFLAG(USE_BROWSER_SPELLCHECKER)
|
| + OnCallSpellingService(text);
|
| + callback.Run(true, std::vector<SpellCheckResult>());
|
| +#else
|
| + NOTREACHED();
|
| +#endif
|
| +}
|
| +
|
| void TestingSpellCheckProvider::OnCallSpellingService(
|
| - int route_id,
|
| - int identifier,
|
| const base::string16& text) {
|
| -#if BUILDFLAG(USE_BROWSER_SPELLCHECKER)
|
| - NOTREACHED();
|
| -#else
|
| +#if !BUILDFLAG(USE_BROWSER_SPELLCHECKER)
|
| ++spelling_service_call_count_;
|
| blink::WebTextCheckingCompletion* completion =
|
| - text_check_completions_.Lookup(identifier);
|
| + text_check_completions_.Lookup(last_identifier_);
|
| if (!completion) {
|
| ResetResult();
|
| return;
|
| }
|
| text_.assign(text);
|
| - text_check_completions_.Remove(identifier);
|
| + text_check_completions_.Remove(last_identifier_);
|
| std::vector<blink::WebTextCheckingResult> results;
|
| results.push_back(blink::WebTextCheckingResult(
|
| blink::kWebTextDecorationTypeSpelling, 0, 5, blink::WebString("hello")));
|
| completion->DidFinishCheckingText(results);
|
| last_request_ = text;
|
| last_results_ = results;
|
| +#else
|
| + NOTREACHED();
|
| #endif
|
| }
|
|
|
|
|