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_) { |
} |
// 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); |
} |