summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/app/generated_resources.grd5
-rw-r--r--chrome/browser/browser_prefs.cc1
-rw-r--r--chrome/browser/profile.cc80
-rw-r--r--chrome/browser/profile.h30
-rw-r--r--chrome/browser/render_process_host.cc6
-rw-r--r--chrome/browser/resource_message_filter.cc113
-rw-r--r--chrome/browser/spellchecker.cc6
-rw-r--r--chrome/browser/spellchecker.h2
-rw-r--r--chrome/browser/views/options/languages_page_view.cc29
-rw-r--r--chrome/browser/views/options/languages_page_view.h5
-rw-r--r--chrome/common/pref_names.cc3
-rw-r--r--chrome/common/pref_names.h1
-rw-r--r--chrome/test/testing_profile.h2
13 files changed, 132 insertions, 151 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 855bb80..81fbcf7 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -3080,7 +3080,10 @@ each locale. -->
<message name="IDS_OPTIONS_CHROME_DICTIONARY_LANGUAGE" desc="The documentation string of the 'Spell check dictionary language' preference">
Spell-checker language:
</message>
-
+ <message name="IDS_OPTIONS_ENABLE_SPELLCHECK" desc="The documentation string of the 'Enable spellcheck' option">
+ Enable spellcheck:
+ </message>
+
<message name="IDS_OPTIONS_RESET" desc="The label of the 'Reset all settings to defaults' button">
Reset to defaults
</message>
diff --git a/chrome/browser/browser_prefs.cc b/chrome/browser/browser_prefs.cc
index 44408db..9f43083 100644
--- a/chrome/browser/browser_prefs.cc
+++ b/chrome/browser/browser_prefs.cc
@@ -49,7 +49,6 @@ void RegisterAllPrefs(PrefService* user_prefs, PrefService* local_state) {
DownloadManager::RegisterUserPrefs(user_prefs);
PasswordManager::RegisterUserPrefs(user_prefs);
SessionStartupPref::RegisterUserPrefs(user_prefs);
- SpellChecker::RegisterUserPrefs(user_prefs);
SSLManager::RegisterUserPrefs(user_prefs);
TabContents::RegisterUserPrefs(user_prefs);
TemplateURLPrepopulateData::RegisterUserPrefs(user_prefs);
diff --git a/chrome/browser/profile.cc b/chrome/browser/profile.cc
index a81cdd8..1890b1e 100644
--- a/chrome/browser/profile.cc
+++ b/chrome/browser/profile.cc
@@ -12,6 +12,7 @@
#include "base/scoped_ptr.h"
#include "base/string_util.h"
#include "base/values.h"
+#include "chrome/app/locales/locale_settings.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/browser_list.h"
#include "chrome/browser/browser_process.h"
@@ -57,6 +58,9 @@ void Profile::RegisterUserPrefs(PrefService* prefs) {
prefs->RegisterBooleanPref(prefs::kSearchSuggestEnabled, true);
prefs->RegisterBooleanPref(prefs::kSessionExitedCleanly, true);
prefs->RegisterBooleanPref(prefs::kSafeBrowsingEnabled, true);
+ prefs->RegisterLocalizedStringPref(prefs::kSpellCheckDictionary,
+ IDS_SPELLCHECK_DICTIONARY);
+ prefs->RegisterBooleanPref(prefs::kEnableSpellCheck, true);
}
//static
@@ -489,11 +493,11 @@ class OffTheRecordProfileImpl : public Profile,
return NULL;
}
- virtual void InitializeSpellChecker() {
- profile_->InitializeSpellChecker();
+ virtual void ResetTabRestoreService() {
}
- virtual void ResetTabRestoreService() {
+ virtual void ReinitializeSpellChecker() {
+ profile_->ReinitializeSpellChecker();
}
virtual SpellChecker* GetSpellChecker() {
@@ -558,6 +562,9 @@ ProfileImpl::ProfileImpl(const std::wstring& path)
create_session_service_timer_.Start(
TimeDelta::FromMilliseconds(kCreateSessionServiceDelayMS), this,
&ProfileImpl::EnsureSessionServiceCreated);
+ PrefService* prefs = GetPrefs();
+ prefs->AddPrefObserver(prefs::kSpellCheckDictionary, this);
+ prefs->AddPrefObserver(prefs::kEnableSpellCheck, this);
}
ProfileImpl::~ProfileImpl() {
@@ -573,6 +580,11 @@ ProfileImpl::~ProfileImpl() {
// before the history is shutdown so it can properly cancel all requests.
download_manager_ = NULL;
+ // Remove pref observers.
+ PrefService* prefs = GetPrefs();
+ prefs->RemovePrefObserver(prefs::kSpellCheckDictionary, this);
+ prefs->RemovePrefObserver(prefs::kEnableSpellCheck, this);
+
#ifdef CHROME_PERSONALIZATION
personalization_.reset();
#endif
@@ -869,7 +881,8 @@ void ProfileImpl::ResetTabRestoreService() {
class NotifySpellcheckerChangeTask : public Task {
public:
NotifySpellcheckerChangeTask(
- Profile* profile, const SpellcheckerReinitializedDetails& spellchecker)
+ Profile* profile,
+ const SpellcheckerReinitializedDetails& spellchecker)
: profile_(profile),
spellchecker_(spellchecker) {
}
@@ -886,9 +899,7 @@ class NotifySpellcheckerChangeTask : public Task {
SpellcheckerReinitializedDetails spellchecker_;
};
-void ProfileImpl::InitializeSpellChecker() {
- bool need_to_broadcast = false;
-
+void ProfileImpl::InitializeSpellChecker(bool need_to_broadcast) {
// The I/O thread may be NULL during testing.
base::Thread* io_thread = g_browser_process->io_thread();
if (spellchecker_) {
@@ -900,33 +911,42 @@ void ProfileImpl::InitializeSpellChecker() {
io_thread->message_loop()->ReleaseSoon(FROM_HERE, last_spellchecker);
else // during testing, we don't have an I/O thread
last_spellchecker->Release();
-
- need_to_broadcast = true;
}
- std::wstring dict_dir;
- PathService::Get(chrome::DIR_APP_DICTIONARIES, &dict_dir);
-
// Retrieve the (perhaps updated recently) dictionary name from preferences.
PrefService* prefs = GetPrefs();
- std::wstring language = prefs->GetString(prefs::kSpellCheckDictionary);
+ bool enable_spellcheck = prefs->GetBoolean(prefs::kEnableSpellCheck);
- // Note that, as the object pointed to by previously by spellchecker_
- // is being deleted in the io thread, the spellchecker_ can be made to point
- // to a new object (RE-initialized) in parallel in this UI thread.
- spellchecker_ = new SpellChecker(dict_dir, language, GetRequestContext(),
- L"");
- spellchecker_->AddRef(); // Manual refcounting.
+ if (enable_spellcheck) {
+ std::wstring dict_dir;
+ PathService::Get(chrome::DIR_APP_DICTIONARIES, &dict_dir);
+ std::wstring language = prefs->GetString(prefs::kSpellCheckDictionary);
+
+ // Note that, as the object pointed to by previously by spellchecker_
+ // is being deleted in the io thread, the spellchecker_ can be made to point
+ // to a new object (RE-initialized) in parallel in this UI thread.
+ spellchecker_ = new SpellChecker(dict_dir, language, GetRequestContext(),
+ L"");
+ spellchecker_->AddRef(); // Manual refcounting.
+ } else {
+ spellchecker_ = NULL;
+ }
if (need_to_broadcast && io_thread) { // Notify resource message filters.
SpellcheckerReinitializedDetails scoped_spellchecker;
scoped_spellchecker.spellchecker = spellchecker_;
- io_thread->message_loop()->PostTask(
- FROM_HERE,
- new NotifySpellcheckerChangeTask(this, scoped_spellchecker));
+ if (io_thread) {
+ io_thread->message_loop()->PostTask(
+ FROM_HERE,
+ new NotifySpellcheckerChangeTask(this, scoped_spellchecker));
+ }
}
}
+void ProfileImpl::ReinitializeSpellChecker() {
+ InitializeSpellChecker(true);
+}
+
SpellChecker* ProfileImpl::GetSpellChecker() {
if (!spellchecker_) {
// This is where spellchecker gets initialized. Note that this is being
@@ -934,7 +954,7 @@ SpellChecker* ProfileImpl::GetSpellChecker() {
// it is *used* in the io thread.
// TODO (sidchat) One day, change everything so that spellchecker gets
// initialized in the IO thread itself.
- InitializeSpellChecker();
+ InitializeSpellChecker(false);
}
return spellchecker_;
@@ -951,6 +971,20 @@ void ProfileImpl::MarkAsCleanShutdown() {
}
}
+void ProfileImpl::Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ if (NOTIFY_PREF_CHANGED == type) {
+ std::wstring* pref_name_in = Details<std::wstring>(details).ptr();
+ PrefService* prefs = Source<PrefService>(source).ptr();
+ DCHECK(pref_name_in && prefs);
+ if (*pref_name_in == prefs::kSpellCheckDictionary ||
+ *pref_name_in == prefs::kEnableSpellCheck) {
+ InitializeSpellChecker(true);
+ }
+ }
+}
+
void ProfileImpl::StopCreateSessionServiceTimer() {
create_session_service_timer_.Stop();
}
diff --git a/chrome/browser/profile.h b/chrome/browser/profile.h
index 2dbc055..cb3c2ac 100644
--- a/chrome/browser/profile.h
+++ b/chrome/browser/profile.h
@@ -18,6 +18,9 @@
#ifdef CHROME_PERSONALIZATION
#include "chrome/personalization/personalization.h"
#endif
+#include "chrome/common/notification_service.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/common/pref_service.h"
class BookmarkModel;
class DownloadManager;
@@ -200,12 +203,9 @@ class Profile {
virtual void ResetTabRestoreService() = 0;
- // Initializes the spellchecker. If the spellchecker already exsts, then
- // it is released, and initialized again. This model makes sure that
- // spellchecker language can be changed without restarting the browser.
- // NOTE: This is being currently called in the UI thread, which is OK as long
- // as the spellchecker object is USED in the IO thread.
- virtual void InitializeSpellChecker() = 0;
+ // This reinitializes the spellchecker according to the current dictionary
+ // language, and enable spell check option, in the prefs.
+ virtual void ReinitializeSpellChecker() = 0;
// Returns the spell checker object for this profile. THIS OBJECT MUST ONLY
// BE USED ON THE I/O THREAD! This pointer is retrieved from the profile and
@@ -231,7 +231,8 @@ class Profile {
class OffTheRecordProfileImpl;
// The default profile implementation.
-class ProfileImpl : public Profile {
+class ProfileImpl : public Profile,
+ public NotificationObserver {
public:
virtual ~ProfileImpl();
@@ -263,12 +264,16 @@ class ProfileImpl : public Profile {
virtual base::Time GetStartTime() const;
virtual TabRestoreService* GetTabRestoreService();
virtual void ResetTabRestoreService();
- virtual void InitializeSpellChecker();
+ virtual void ReinitializeSpellChecker();
virtual SpellChecker* GetSpellChecker();
virtual void MarkAsCleanShutdown();
#ifdef CHROME_PERSONALIZATION
virtual ProfilePersonalization* GetProfilePersonalization();
#endif
+ // NotificationObserver implementation.
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
private:
class RequestContext;
@@ -286,6 +291,15 @@ class ProfileImpl : public Profile {
GetSessionService();
}
+ // Initializes the spellchecker. If the spellchecker already exsts, then
+ // it is released, and initialized again. This model makes sure that
+ // spellchecker language can be changed without restarting the browser.
+ // NOTE: This is being currently called in the UI thread, which is OK as long
+ // as the spellchecker object is USED in the IO thread.
+ // The |need_to_broadcast| parameter tells it whether to broadcast the new
+ // spellchecker to the resource message filters.
+ void InitializeSpellChecker(bool need_to_broadcast);
+
std::wstring path_;
bool off_the_record_;
scoped_ptr<VisitedLinkMaster> visited_link_master_;
diff --git a/chrome/browser/render_process_host.cc b/chrome/browser/render_process_host.cc
index 22ab752..bfe05a2 100644
--- a/chrome/browser/render_process_host.cc
+++ b/chrome/browser/render_process_host.cc
@@ -780,8 +780,10 @@ void RenderProcessHost::WidgetHidden() {
void RenderProcessHost::AddWord(const std::wstring& word) {
base::Thread* io_thread = g_browser_process->io_thread();
- io_thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
- profile_->GetSpellChecker(), &SpellChecker::AddWord, word));
+ if (profile_->GetSpellChecker()) {
+ io_thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
+ profile_->GetSpellChecker(), &SpellChecker::AddWord, word));
+ }
}
// NotificationObserver implementation.
diff --git a/chrome/browser/resource_message_filter.cc b/chrome/browser/resource_message_filter.cc
index 403fa63..534e447 100644
--- a/chrome/browser/resource_message_filter.cc
+++ b/chrome/browser/resource_message_filter.cc
@@ -641,114 +641,27 @@ ClipboardService* ResourceMessageFilter::GetClipboardService() {
// the spellcheck dictionaries into the browser process, and all renderers ask
// the browsers to do SpellChecking.
//
-// Requests to do SpellCheck come in on the IO thread. Unfortunately, the
-// first spell check requires loading of the spell check tables, which is an
-// expensive operation, both in terms of disk access and memory usage. Even
-// though initialization only happens once, we don't want to do it on the IO
-// thread to keep the browser snappy.
+// This filter should not try to initialize the spellchecker. It is up to the
+// profile to initialize it when required, and send it here. If |spellchecker_|
+// is made NULL, it corresponds to spellchecker turned off - i.e., all
+// spellings are correct.
//
-// To implement:
-// If SpellCheck has not been initialized, we send a request to the
-// browser's file_thread to do the initialization. Once completed, it
-// requests back to the IO thread to send the response to the renderer.
-// If SpellCheck has been initialized, we go ahead and do the lookup
-// directly on the IO thread, as this operation is fairly quick.
-//
-
-// The SpellCheckReplyTask replies to a Renderer for a pending SpellCheck
-// request. The task is created on the Browser's file_thread, and
-// executes on the io_thread.
-class SpellCheckReplyTask : public Task {
- public:
- explicit SpellCheckReplyTask(ResourceMessageFilter* filter,
- IPC::Message* reply_msg,
- int misspell_location,
- int misspell_length) :
- filter_(filter),
- misspell_location_(misspell_location),
- misspell_length_(misspell_length),
- reply_msg_(reply_msg) {
- }
-
- void Run() {
- ViewHostMsg_SpellCheck::WriteReplyParams(reply_msg_, misspell_location_,
- misspell_length_);
- filter_->Send(reply_msg_);
- }
-
- private:
- scoped_refptr<ResourceMessageFilter> filter_;
- IPC::Message* reply_msg_;
- int misspell_location_;
- int misspell_length_;
-};
-
-// The SpellCheckTask initializes the SpellCheck library and does a
-// a SpellCheck Lookup. The task is initiated from the io_thread
-// but executes on the browser's file_thread.
-class SpellCheckTask : public Task {
- public:
- SpellCheckTask(ResourceMessageFilter *filter,
- const std::wstring& word,
- IPC::Message* reply_msg) :
- filter_(filter),
- word_(word),
- reply_msg_(reply_msg) {
- }
- void Run() {
- SpellChecker *checker = filter_->spellchecker();
- int misspell_location = 0;
- int misspell_length = 0;
- if (checker)
- checker->SpellCheckWord(word_.c_str(), static_cast<int>(word_.length()),
- &misspell_location, &misspell_length, NULL);
- base::Thread* io_thread = g_browser_process->io_thread();
- if (io_thread) {
- io_thread->message_loop()->PostTask(FROM_HERE,
- new SpellCheckReplyTask(filter_, reply_msg_,
- misspell_location, misspell_length));
- } else {
- // If the io_thread is NULL, we're tearing down. This shouldn't happen,
- // but if it does, just leave this request pending and let things go down
- // on their own.
- // We can't send the reply from this thread, so there is nothing we can
- // do.
- }
- }
-
- private:
- scoped_refptr<ResourceMessageFilter> filter_;
- const std::wstring word_;
- IPC::Message* reply_msg_;
-};
-
+// Note: This is called in the IO thread.
void ResourceMessageFilter::OnSpellCheck(const std::wstring& word,
IPC::Message* reply_msg) {
- // Get the SpellChecker. If initialized, do the work on this thread.
- if (spellchecker_ != NULL) {
- int misspell_location;
- int misspell_length;
+ int misspell_location = 0;
+ int misspell_length = 0;
+
+ if (spellchecker_ != NULL) {
spellchecker_->SpellCheckWord(word.c_str(),
static_cast<int>(word.length()),
&misspell_location, &misspell_length, NULL);
- ViewHostMsg_SpellCheck::WriteReplyParams(reply_msg, misspell_location,
- misspell_length);
- Send(reply_msg);
- return;
}
- // The SpellChecker is not initialized. We can't run this on the IO
- // thread. Sent it over to the file thread and let it do the dirty work.
- MessageLoop* file_loop = ChromeThread::GetMessageLoop(ChromeThread::FILE);
- if (file_loop) {
- // TODO(abarth): What if the file thread is being destroyed on the UI?
- file_loop->PostTask(FROM_HERE, new SpellCheckTask(this, word, reply_msg));
- } else {
- // If the file_loop is NULL, we're tearing down. This shouldn't happen,
- // but if it does, just leave this request pending and let things go down
- // on their own.
- // We could send a reply, but it doesn't seem necessary.
- }
+ ViewHostMsg_SpellCheck::WriteReplyParams(reply_msg, misspell_location,
+ misspell_length);
+ Send(reply_msg);
+ return;
}
void ResourceMessageFilter::Observe(NotificationType type,
diff --git a/chrome/browser/spellchecker.cc b/chrome/browser/spellchecker.cc
index df0c900..86ede3c 100644
--- a/chrome/browser/spellchecker.cc
+++ b/chrome/browser/spellchecker.cc
@@ -190,12 +190,6 @@ void SpellChecker::set_file_is_downloading(bool value) {
// This part of the code is used for spell checking.
// ################################################################
-// static
-void SpellChecker::RegisterUserPrefs(PrefService* prefs) {
- prefs->RegisterLocalizedStringPref(prefs::kSpellCheckDictionary,
- IDS_SPELLCHECK_DICTIONARY);
-}
-
std::wstring SpellChecker::GetVersionedFileName(const std::wstring& language,
const std::wstring& dict_dir) {
// The default version string currently in use.
diff --git a/chrome/browser/spellchecker.h b/chrome/browser/spellchecker.h
index 526f38a..bfe3121 100644
--- a/chrome/browser/spellchecker.h
+++ b/chrome/browser/spellchecker.h
@@ -43,8 +43,6 @@ class SpellChecker : public base::RefCountedThreadSafe<SpellChecker> {
URLRequestContext* request_context,
const std::wstring& custom_dictionary_file_name);
- static void RegisterUserPrefs(PrefService* prefs);
-
// Only delete on the I/O thread (see above).
~SpellChecker();
diff --git a/chrome/browser/views/options/languages_page_view.cc b/chrome/browser/views/options/languages_page_view.cc
index 1330027..60735ae 100644
--- a/chrome/browser/views/options/languages_page_view.cc
+++ b/chrome/browser/views/options/languages_page_view.cc
@@ -480,12 +480,15 @@ LanguagesPageView::LanguagesPageView(Profile* profile)
ui_language_label_(NULL),
change_ui_language_combobox_(NULL),
change_dictionary_language_combobox_(NULL),
+ enable_spellchecking_checkbox_(NULL),
dictionary_language_label_(NULL),
OptionsPageView(profile),
language_table_edited_(false),
spellcheck_language_index_selected_(-1) {
accept_languages_.Init(prefs::kAcceptLanguages,
profile->GetPrefs(), NULL);
+ enable_spellcheck_.Init(prefs::kEnableSpellCheck,
+ profile->GetPrefs(), NULL);
}
LanguagesPageView::~LanguagesPageView() {
@@ -509,6 +512,11 @@ void LanguagesPageView::ButtonPressed(views::NativeButton* sender) {
gfx::Rect(),
new AddLanguageWindowView(this, profile()))->Show();
language_table_edited_ = true;
+ } else if (sender == enable_spellchecking_checkbox_) {
+ if (enable_spellchecking_checkbox_->IsSelected())
+ enable_spellcheck_.SetValue(true);
+ else
+ enable_spellcheck_.SetValue(false);
}
}
@@ -622,8 +630,12 @@ void LanguagesPageView::InitControlLayout() {
dictionary_language_label_ = new views::Label(
l10n_util::GetString(IDS_OPTIONS_CHROME_DICTIONARY_LANGUAGE));
dictionary_language_label_->SetHorizontalAlignment(
- views::Label::ALIGN_LEFT);
-
+ views::Label::ALIGN_LEFT);
+ enable_spellchecking_checkbox_ = new views::CheckBox(
+ l10n_util::GetString(IDS_OPTIONS_ENABLE_SPELLCHECK));
+ enable_spellchecking_checkbox_->SetListener(this);
+ enable_spellchecking_checkbox_->SetMultiLine(true);
+
layout->StartRow(0, single_column_view_set_id);
layout->AddView(language_info_label_);
layout->AddPaddingRow(0, kRelatedControlVerticalSpacing);
@@ -651,6 +663,10 @@ void LanguagesPageView::InitControlLayout() {
layout->AddView(change_ui_language_combobox_);
layout->AddPaddingRow(0, kRelatedControlVerticalSpacing);
+ // SpellChecker settings.
+ layout->StartRow(0, single_column_view_set_id);
+ layout->AddView(enable_spellchecking_checkbox_);
+ layout->AddPaddingRow(0, kRelatedControlVerticalSpacing);
layout->StartRow(0, double_column_view_set_2_id);
layout->AddView(dictionary_language_label_);
layout->AddView(change_dictionary_language_combobox_);
@@ -685,6 +701,10 @@ void LanguagesPageView::NotifyPrefChanged(const std::wstring* pref_name) {
change_dictionary_language_combobox_->SetSelectedItem(index);
spellcheck_language_index_selected_ = -1;
}
+ if (!pref_name || *pref_name == prefs::kEnableSpellCheck) {
+ enable_spellchecking_checkbox_->SetIsSelected(
+ enable_spellcheck_.GetValue());
+ }
}
void LanguagesPageView::ItemChanged(views::ComboBox* sender,
@@ -756,10 +776,5 @@ void LanguagesPageView::SaveChanges() {
profile()->GetPrefs());
dictionary_language_.SetValue(dictionary_language_model_->
GetLocaleFromIndex(spellcheck_language_index_selected_));
-
- // Initialize spellchecker. Keeping with the tradition, spellchecker is
- // being initialized in this UI thread. However, it must be USED in the IO
- // thread.
- profile()->InitializeSpellChecker();
}
}
diff --git a/chrome/browser/views/options/languages_page_view.h b/chrome/browser/views/options/languages_page_view.h
index 1cd9552..9f5666d1 100644
--- a/chrome/browser/views/options/languages_page_view.h
+++ b/chrome/browser/views/options/languages_page_view.h
@@ -13,6 +13,7 @@
#include "chrome/views/view.h"
namespace views {
+class CheckBox;
class Label;
class TableModel;
class TableView;
@@ -76,6 +77,7 @@ class LanguagesPageView : public OptionsPageView,
views::Label* ui_language_label_;
views::ComboBox* change_ui_language_combobox_;
views::ComboBox* change_dictionary_language_combobox_;
+ views::CheckBox* enable_spellchecking_checkbox_;
views::Label* dictionary_language_label_;
scoped_ptr<LanguageOrderTableModel> language_order_table_model_;
@@ -90,6 +92,9 @@ class LanguagesPageView : public OptionsPageView,
scoped_ptr<LanguageComboboxModel> dictionary_language_model_;
StringPrefMember dictionary_language_;
+ // SpellChecker enable pref.
+ BooleanPrefMember enable_spellcheck_;
+
// This is assigned the new index of spellcheck language if the language
// is changed. Otherwise, it remains -1, and pref members are not updated.
int spellcheck_language_index_selected_;
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index f5c7b06..19b13b4 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -202,6 +202,9 @@ const wchar_t kDeleteCookies[] = L"browser.clear_data.cookies";
const wchar_t kDeletePasswords[] = L"browser.clear_data.passwords";
const wchar_t kDeleteTimePeriod[] = L"browser.clear_data.time_period";
+// Boolean pref to define the default values for using spellchecker.
+const wchar_t kEnableSpellCheck[] = L"browser.enable_spellchecking";
+
// *************** LOCAL STATE ***************
// These are attached to the machine/installation
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 973dfb4..91c2ab7 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -68,6 +68,7 @@ extern const wchar_t kDeleteDownloadHistory[];
extern const wchar_t kDeleteCache[];
extern const wchar_t kDeleteCookies[];
extern const wchar_t kDeletePasswords[];
+extern const wchar_t kEnableSpellCheck[];
extern const wchar_t kDeleteTimePeriod[];
// Local state
diff --git a/chrome/test/testing_profile.h b/chrome/test/testing_profile.h
index a93708f..10b6fbe 100644
--- a/chrome/test/testing_profile.h
+++ b/chrome/test/testing_profile.h
@@ -147,7 +147,7 @@ class TestingProfile : public Profile {
}
virtual void ResetTabRestoreService() {
}
- virtual void InitializeSpellChecker() {
+ virtual void ReinitializeSpellChecker() {
}
virtual SpellChecker* GetSpellChecker() {
return NULL;