Chromium Code Reviews| Index: chrome/browser/spellchecker/spellcheck_profile_unittest.cc |
| diff --git a/chrome/browser/spellchecker/spellcheck_profile_unittest.cc b/chrome/browser/spellchecker/spellcheck_profile_unittest.cc |
| index 4e03fa9160c5226d58c6166a7b2b9ffd16c32109..d870d0340c0edd23d325730be3a4fed14038794e 100644 |
| --- a/chrome/browser/spellchecker/spellcheck_profile_unittest.cc |
| +++ b/chrome/browser/spellchecker/spellcheck_profile_unittest.cc |
| @@ -4,6 +4,7 @@ |
| #include <vector> |
| +#include "base/scoped_temp_dir.h" |
| #include "chrome/browser/spellchecker/spellcheck_host.h" |
| #include "chrome/browser/spellchecker/spellcheck_profile.h" |
| #include "content/browser/browser_thread.h" |
| @@ -56,8 +57,16 @@ class TestingSpellCheckProfile : public SpellCheckProfile { |
| returning_from_create_ = host; |
| } |
| + FilePath GetCustomDictionaryDir() { |
| + if (!custom_dictionary_dir_.IsValid()) |
| + EXPECT_TRUE(custom_dictionary_dir_.CreateUniqueTempDir()); |
| + |
| + return custom_dictionary_dir_.path(); |
| + } |
| + |
| size_t create_host_calls_; |
| scoped_refptr<SpellCheckHost> returning_from_create_; |
| + ScopedTempDir custom_dictionary_dir_; |
| }; |
| typedef SpellCheckProfile::ReinitializeResult ResultType; |
| @@ -66,122 +75,141 @@ typedef SpellCheckProfile::ReinitializeResult ResultType; |
| class SpellCheckProfileTest : public testing::Test { |
| protected: |
| SpellCheckProfileTest() |
| - : file_thread_(BrowserThread::FILE) { |
| + : ui_thread_(BrowserThread::UI, &message_loop_), |
| + file_thread_(BrowserThread::FILE, &message_loop_) { |
|
gmorrita
2011/10/12 11:03:36
I guess we need one MessageLoop instance per threa
|
| } |
| // SpellCheckHost will be deleted on FILE thread. |
| + MessageLoop message_loop_; |
| + BrowserThread ui_thread_; |
| BrowserThread file_thread_; |
| }; |
| TEST_F(SpellCheckProfileTest, ReinitializeEnabled) { |
| scoped_refptr<MockSpellCheckHost> host(new MockSpellCheckHost()); |
| - TestingSpellCheckProfile target; |
| - target.SetHostToBeCreated(host.get()); |
| + scoped_refptr<TestingSpellCheckProfile> target( |
| + new TestingSpellCheckProfile()); |
| + target->SetHostToBeCreated(host.get()); |
| // The first call should create host. |
| - ResultType result1 = target.ReinitializeHost(false, true, "", NULL); |
| - EXPECT_EQ(target.create_host_calls_, 1U); |
| + ResultType result1 = target->ReinitializeHost(false, true, "", NULL); |
| + EXPECT_EQ(target->create_host_calls_, 1U); |
| EXPECT_EQ(result1, SpellCheckProfile::REINITIALIZE_CREATED_HOST); |
| // The second call should be ignored. |
| - ResultType result2 = target.ReinitializeHost(false, true, "", NULL); |
| + ResultType result2 = target->ReinitializeHost(false, true, "", NULL); |
| EXPECT_EQ(result2, SpellCheckProfile::REINITIALIZE_DID_NOTHING); |
| - EXPECT_EQ(target.create_host_calls_, 1U); |
| + EXPECT_EQ(target->create_host_calls_, 1U); |
| // Host should become ready after the notification. |
| - EXPECT_FALSE(target.IsCreatedHostReady()); |
| - target.SpellCheckHostInitialized(0); |
| - EXPECT_TRUE(target.IsCreatedHostReady()); |
| + EXPECT_FALSE(target->IsCreatedHostReady()); |
| + target->SpellCheckHostInitialized(); |
| + EXPECT_TRUE(target->IsCreatedHostReady()); |
| } |
| TEST_F(SpellCheckProfileTest, ReinitializeDisabled) { |
| scoped_refptr<MockSpellCheckHost> host(new MockSpellCheckHost()); |
| - TestingSpellCheckProfile target; |
| - target.returning_from_create_ = host.get(); |
| + scoped_refptr<TestingSpellCheckProfile> target( |
| + new TestingSpellCheckProfile()); |
| + target->returning_from_create_ = host.get(); |
| // If enabled is false, nothing should happen |
| - ResultType result1 = target.ReinitializeHost(false, false, "", NULL); |
| - EXPECT_EQ(target.create_host_calls_, 0U); |
| + ResultType result1 = target->ReinitializeHost(false, false, "", NULL); |
| + EXPECT_EQ(target->create_host_calls_, 0U); |
| EXPECT_EQ(result1, SpellCheckProfile::REINITIALIZE_DID_NOTHING); |
| // Nothing should happen even if forced. |
| - ResultType result2 = target.ReinitializeHost(true, false, "", NULL); |
| - EXPECT_EQ(target.create_host_calls_, 0U); |
| + ResultType result2 = target->ReinitializeHost(true, false, "", NULL); |
| + EXPECT_EQ(target->create_host_calls_, 0U); |
| EXPECT_EQ(result2, SpellCheckProfile::REINITIALIZE_DID_NOTHING); |
| } |
| TEST_F(SpellCheckProfileTest, ReinitializeRemove) { |
| scoped_refptr<MockSpellCheckHost> host(new MockSpellCheckHost()); |
| - TestingSpellCheckProfile target; |
| - target.SetHostToBeCreated(host.get()); |
| - |
| + scoped_refptr<TestingSpellCheckProfile> target( |
| + new TestingSpellCheckProfile()); |
| + target->SetHostToBeCreated(host.get()); |
| // At first, create the host. |
| - ResultType result1 = target.ReinitializeHost(false, true, "", NULL); |
| - target.SpellCheckHostInitialized(0); |
| + ResultType result1 = target->ReinitializeHost(false, true, "", NULL); |
| + target->SpellCheckHostInitialized(); |
| EXPECT_EQ(result1, SpellCheckProfile::REINITIALIZE_CREATED_HOST); |
| - EXPECT_TRUE(target.IsCreatedHostReady()); |
| + EXPECT_TRUE(target->IsCreatedHostReady()); |
| // Then the host should be deleted if it's forced to be disabled. |
| - ResultType result2 = target.ReinitializeHost(true, false, "", NULL); |
| - target.SpellCheckHostInitialized(0); |
| + ResultType result2 = target->ReinitializeHost(true, false, "", NULL); |
| + target->SpellCheckHostInitialized(); |
| EXPECT_EQ(result2, SpellCheckProfile::REINITIALIZE_REMOVED_HOST); |
| - EXPECT_FALSE(target.IsCreatedHostReady()); |
| + EXPECT_FALSE(target->IsCreatedHostReady()); |
| } |
| TEST_F(SpellCheckProfileTest, ReinitializeRecreate) { |
| scoped_refptr<MockSpellCheckHost> host1(new MockSpellCheckHost()); |
| - TestingSpellCheckProfile target; |
| - target.SetHostToBeCreated(host1.get()); |
| + scoped_refptr<TestingSpellCheckProfile> target( |
| + new TestingSpellCheckProfile()); |
| + target->SetHostToBeCreated(host1.get()); |
| // At first, create the host. |
| - ResultType result1 = target.ReinitializeHost(false, true, "", NULL); |
| - target.SpellCheckHostInitialized(0); |
| - EXPECT_EQ(target.create_host_calls_, 1U); |
| + ResultType result1 = target->ReinitializeHost(false, true, "", NULL); |
| + target->SpellCheckHostInitialized(); |
| + EXPECT_EQ(target->create_host_calls_, 1U); |
| EXPECT_EQ(result1, SpellCheckProfile::REINITIALIZE_CREATED_HOST); |
| - EXPECT_TRUE(target.IsCreatedHostReady()); |
| + EXPECT_TRUE(target->IsCreatedHostReady()); |
| // Then the host should be re-created if it's forced to recreate. |
| scoped_refptr<MockSpellCheckHost> host2(new MockSpellCheckHost()); |
| - target.SetHostToBeCreated(host2.get()); |
| + target->SetHostToBeCreated(host2.get()); |
| - ResultType result2 = target.ReinitializeHost(true, true, "", NULL); |
| - target.SpellCheckHostInitialized(0); |
| - EXPECT_EQ(target.create_host_calls_, 2U); |
| + ResultType result2 = target->ReinitializeHost(true, true, "", NULL); |
| + target->SpellCheckHostInitialized(); |
| + EXPECT_EQ(target->create_host_calls_, 2U); |
| EXPECT_EQ(result2, SpellCheckProfile::REINITIALIZE_CREATED_HOST); |
| - EXPECT_TRUE(target.IsCreatedHostReady()); |
| + EXPECT_TRUE(target->IsCreatedHostReady()); |
| } |
| -TEST_F(SpellCheckProfileTest, SpellCheckHostInitializedWithCustomWords) { |
| +TEST_F(SpellCheckProfileTest, CustomDictionaryLoaded) { |
| scoped_refptr<MockSpellCheckHost> host(new MockSpellCheckHost()); |
| - TestingSpellCheckProfile target; |
| - target.SetHostToBeCreated(host.get()); |
| - target.ReinitializeHost(false, true, "", NULL); |
| + scoped_refptr<TestingSpellCheckProfile> target( |
| + new TestingSpellCheckProfile()); |
| + target->SetHostToBeCreated(host.get()); |
| + target->ReinitializeHost(false, true, "", NULL); |
| scoped_ptr<SpellCheckProfile::CustomWordList> loaded_custom_words |
| - (new SpellCheckProfile::CustomWordList()); |
| + (new SpellCheckProfile::CustomWordList()); |
| loaded_custom_words->push_back("foo"); |
| loaded_custom_words->push_back("bar"); |
| + |
| SpellCheckProfile::CustomWordList expected(*loaded_custom_words); |
| - target.SpellCheckHostInitialized(loaded_custom_words.release()); |
| - EXPECT_EQ(target.GetCustomWords(), expected); |
| + target->CustomDictionaryLoaded(loaded_custom_words.release()); |
| + EXPECT_EQ(target->GetCustomWords(), expected); |
| } |
| -TEST_F(SpellCheckProfileTest, CustomWordAddedLocally) { |
| +TEST_F(SpellCheckProfileTest, SaveAndLoad) { |
| scoped_refptr<MockSpellCheckHost> host(new MockSpellCheckHost()); |
| - TestingSpellCheckProfile target; |
| - target.SetHostToBeCreated(host.get()); |
| - target.ReinitializeHost(false, true, "", NULL); |
| + scoped_refptr<TestingSpellCheckProfile> target( |
| + new TestingSpellCheckProfile()); |
| + target->SetHostToBeCreated(host.get()); |
| + target->ReinitializeHost(false, true, "", NULL); |
| scoped_ptr<SpellCheckProfile::CustomWordList> loaded_custom_words |
| (new SpellCheckProfile::CustomWordList()); |
| - target.SpellCheckHostInitialized(NULL); |
| + target->SpellCheckHostInitialized(); |
| SpellCheckProfile::CustomWordList expected; |
| - EXPECT_EQ(target.GetCustomWords(), expected); |
| - target.CustomWordAddedLocally("foo"); |
| + EXPECT_EQ(target->GetCustomWords(), expected); |
| + target->CustomWordAddedLocally("foo"); |
| expected.push_back("foo"); |
| - EXPECT_EQ(target.GetCustomWords(), expected); |
| - target.CustomWordAddedLocally("bar"); |
| + EXPECT_EQ(target->GetCustomWords(), expected); |
| + target->CustomWordAddedLocally("bar"); |
| expected.push_back("bar"); |
| - EXPECT_EQ(target.GetCustomWords(), expected); |
| + EXPECT_EQ(target->GetCustomWords(), expected); |
| + |
| + file_thread_.message_loop()->RunAllPending(); |
| + |
| + // The same dictionary should be loaded again. |
| + target->ClearCustomWords(); |
| + target->LoadCustomDictionary(); |
| + file_thread_.message_loop()->RunAllPending(); |
| + ui_thread_.message_loop()->RunAllPending(); |
| + |
| + EXPECT_EQ(target->GetCustomWords(), expected); |
| } |