| Index: chrome/browser/profiles/profile_impl.cc
|
| diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
|
| index b6544f7984e187cd4a1283aa2e9e96aa515c31cb..ce5adbfd6f851af8bfe506071b3224b6fa49c83a 100644
|
| --- a/chrome/browser/profiles/profile_impl.cc
|
| +++ b/chrome/browser/profiles/profile_impl.cc
|
| @@ -61,8 +61,7 @@
|
| #include "chrome/browser/search_engines/template_url_fetcher.h"
|
| #include "chrome/browser/search_engines/template_url_service.h"
|
| #include "chrome/browser/sessions/session_service_factory.h"
|
| -#include "chrome/browser/spellchecker/spellcheck_host.h"
|
| -#include "chrome/browser/spellchecker/spellcheck_host_metrics.h"
|
| +#include "chrome/browser/spellchecker/spellcheck_profile.h"
|
| #include "chrome/browser/sync/profile_sync_factory_impl.h"
|
| #include "chrome/browser/sync/profile_sync_service.h"
|
| #include "chrome/browser/tabs/pinned_tab_service_factory.h"
|
| @@ -304,8 +303,6 @@ ProfileImpl::ProfileImpl(const FilePath& path,
|
| created_password_store_(false),
|
| created_download_manager_(false),
|
| start_time_(Time::Now()),
|
| - spellcheck_host_(NULL),
|
| - spellcheck_host_ready_(false),
|
| #if defined(OS_WIN)
|
| checked_instant_promo_(false),
|
| #endif
|
| @@ -407,11 +404,9 @@ void ProfileImpl::DoFinalInit() {
|
|
|
| // Instantiates Metrics object for spellchecking for use.
|
| if (g_browser_process->metrics_service() &&
|
| - g_browser_process->metrics_service()->recording_active()) {
|
| - spellcheck_host_metrics_.reset(new SpellCheckHostMetrics());
|
| - spellcheck_host_metrics_->RecordEnabledStats(
|
| + g_browser_process->metrics_service()->recording_active())
|
| + GetSpellCheckProfile()->StartRecordingMetrics(
|
| GetPrefs()->GetBoolean(prefs::kEnableSpellCheck));
|
| - }
|
|
|
| speech_input::SpeechInputManager::Get()->set_censor_results(
|
| prefs->GetBoolean(prefs::kSpeechInputCensorResults));
|
| @@ -715,9 +710,6 @@ ProfileImpl::~ProfileImpl() {
|
| if (history_service_.get())
|
| history_service_->Cleanup();
|
|
|
| - if (spellcheck_host_.get())
|
| - spellcheck_host_->UnsetObserver();
|
| -
|
| if (io_data_.HasMainRequestContext() &&
|
| default_request_context_ == GetRequestContext()) {
|
| default_request_context_ = NULL;
|
| @@ -1345,35 +1337,20 @@ history::TopSites* ProfileImpl::GetTopSitesWithoutCreating() {
|
| }
|
|
|
| SpellCheckHost* ProfileImpl::GetSpellCheckHost() {
|
| - return spellcheck_host_ready_ ? spellcheck_host_.get() : NULL;
|
| + return GetSpellCheckProfile()->GetHost();
|
| }
|
|
|
| -void ProfileImpl::ReinitializeSpellCheckHost(bool force) {
|
| - // If we are already loading the spellchecker, and this is just a hint to
|
| - // load the spellchecker, do nothing.
|
| - if (!force && spellcheck_host_.get())
|
| - return;
|
| -
|
| - spellcheck_host_ready_ = false;
|
| -
|
| - bool notify = false;
|
| - if (spellcheck_host_.get()) {
|
| - spellcheck_host_->UnsetObserver();
|
| - spellcheck_host_ = NULL;
|
| - notify = true;
|
| - }
|
|
|
| - PrefService* prefs = GetPrefs();
|
| - if (prefs->GetBoolean(prefs::kEnableSpellCheck)) {
|
| - // Retrieve the (perhaps updated recently) dictionary name from preferences.
|
| - spellcheck_host_ = SpellCheckHost::Create(
|
| - this,
|
| - prefs->GetString(prefs::kSpellCheckDictionary),
|
| - GetRequestContext(),
|
| - spellcheck_host_metrics_.get());
|
| - } else if (notify) {
|
| +void ProfileImpl::ReinitializeSpellCheckHost(bool force) {
|
| + PrefService* pref = GetPrefs();
|
| + SpellCheckProfile::ReinitializeResult result =
|
| + GetSpellCheckProfile()->ReinitializeHost(
|
| + force,
|
| + pref->GetBoolean(prefs::kEnableSpellCheck),
|
| + pref->GetString(prefs::kSpellCheckDictionary),
|
| + GetRequestContext());
|
| + if (result == SpellCheckProfile::REINITIALIZE_REMOVED_HOST) {
|
| // The spellchecker has been disabled.
|
| - SpellCheckHostInitialized();
|
| for (RenderProcessHost::iterator
|
| i(RenderProcessHost::AllHostsIterator());
|
| !i.IsAtEnd(); i.Advance()) {
|
| @@ -1386,13 +1363,6 @@ void ProfileImpl::ReinitializeSpellCheckHost(bool force) {
|
| }
|
| }
|
|
|
| -void ProfileImpl::SpellCheckHostInitialized() {
|
| - spellcheck_host_ready_ = spellcheck_host_ &&
|
| - (spellcheck_host_->GetDictionaryFile() !=
|
| - base::kInvalidPlatformFileValue ||
|
| - spellcheck_host_->IsUsingPlatformChecker());
|
| -}
|
| -
|
| ExtensionPrefValueMap* ProfileImpl::GetExtensionPrefValueMap() {
|
| if (!extension_pref_value_map_.get())
|
| extension_pref_value_map_.reset(new ExtensionPrefValueMap);
|
| @@ -1757,3 +1727,9 @@ prerender::PrerenderManager* ProfileImpl::GetPrerenderManager() {
|
| }
|
| return prerender_manager_.get();
|
| }
|
| +
|
| +SpellCheckProfile* ProfileImpl::GetSpellCheckProfile() {
|
| + if (!spellcheck_profile_.get())
|
| + spellcheck_profile_.reset(new SpellCheckProfile());
|
| + return spellcheck_profile_.get();
|
| +}
|
|
|