| Index: chrome/browser/extensions/api/language_settings_private/language_settings_private_delegate.h
|
| diff --git a/chrome/browser/extensions/api/language_settings_private/language_settings_private_delegate.h b/chrome/browser/extensions/api/language_settings_private/language_settings_private_delegate.h
|
| index 5fec75339f48ae22f30571cf856766c7d802e2bf..e40918096cdf7e1bac92c9d7cc1c056d7351f040 100644
|
| --- a/chrome/browser/extensions/api/language_settings_private/language_settings_private_delegate.h
|
| +++ b/chrome/browser/extensions/api/language_settings_private/language_settings_private_delegate.h
|
| @@ -5,8 +5,14 @@
|
| #ifndef CHROME_BROWSER_EXTENSIONS_API_LANGUAGE_SETTINGS_PRIVATE_LANGUAGE_SETTINGS_PRIVATE_DELEGATE_H_
|
| #define CHROME_BROWSER_EXTENSIONS_API_LANGUAGE_SETTINGS_PRIVATE_LANGUAGE_SETTINGS_PRIVATE_DELEGATE_H_
|
|
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "base/prefs/pref_change_registrar.h"
|
| +#include "chrome/browser/spellchecker/spellcheck_custom_dictionary.h"
|
| +#include "chrome/browser/spellchecker/spellcheck_hunspell_dictionary.h"
|
| #include "chrome/common/extensions/api/language_settings_private.h"
|
| #include "components/keyed_service/core/keyed_service.h"
|
| +#include "content/public/browser/notification_observer.h"
|
| +#include "content/public/browser/notification_registrar.h"
|
| #include "extensions/browser/event_router.h"
|
|
|
| namespace content {
|
| @@ -19,12 +25,19 @@ namespace extensions {
|
| // languageSettingsPrivate API.
|
| class LanguageSettingsPrivateDelegate
|
| : public KeyedService,
|
| - public EventRouter::Observer {
|
| + public EventRouter::Observer,
|
| + public content::NotificationObserver,
|
| + public SpellcheckHunspellDictionary::Observer,
|
| + public SpellcheckCustomDictionary::Observer {
|
| public:
|
| static LanguageSettingsPrivateDelegate* Create(
|
| content::BrowserContext* browser_context);
|
| ~LanguageSettingsPrivateDelegate() override;
|
|
|
| + // Returns the languages and statuses of the enabled spellcheck dictionaries.
|
| + ScopedVector<api::language_settings_private::SpellcheckDictionaryStatus>
|
| + GetHunspellDictionaryStatuses();
|
| +
|
| protected:
|
| explicit LanguageSettingsPrivateDelegate(content::BrowserContext* context);
|
|
|
| @@ -35,17 +48,65 @@ class LanguageSettingsPrivateDelegate
|
| void OnListenerAdded(const EventListenerInfo& details) override;
|
| void OnListenerRemoved(const EventListenerInfo& details) override;
|
|
|
| + // content::NotificationObserver implementation.
|
| + void Observe(int type,
|
| + const content::NotificationSource& source,
|
| + const content::NotificationDetails& details) override;
|
| +
|
| + // SpellcheckHunspellDictionary::Observer implementation.
|
| + void OnHunspellDictionaryInitialized() override;
|
| + void OnHunspellDictionaryDownloadBegin() override;
|
| + void OnHunspellDictionaryDownloadSuccess() override;
|
| + void OnHunspellDictionaryDownloadFailure() override;
|
| +
|
| + // SpellcheckCustomDictionary::Observer implementation.
|
| + void OnCustomDictionaryLoaded() override;
|
| + void OnCustomDictionaryChanged(
|
| + const SpellcheckCustomDictionary::Change& dictionary_change) override;
|
| +
|
| private:
|
| + typedef std::vector<base::WeakPtr<SpellcheckHunspellDictionary>>
|
| + WeakDictionaries;
|
| +
|
| + // Updates the dictionaries that are used for spellchecking.
|
| + void RefreshDictionaries(bool was_listening, bool should_listen);
|
| +
|
| + // Returns the hunspell dictionaries that are used for spellchecking.
|
| + const WeakDictionaries& GetHunspellDictionaries();
|
| +
|
| // If there are any JavaScript listeners registered for spellcheck events,
|
| // ensures we are registered for change notifications. Otherwise, unregisters
|
| // any observers.
|
| void StartOrStopListeningForSpellcheckChanges();
|
|
|
| + // Handles the preference for which languages should be used for spellcheck
|
| + // by resetting the dictionaries and broadcasting an event.
|
| + void OnSpellcheckDictionariesChanged();
|
| +
|
| + // Broadcasts an event with the list of spellcheck dictionary statuses.
|
| + void BroadcastDictionariesChangedEvent();
|
| +
|
| + // Removes observers from hunspell_dictionaries_.
|
| + void RemoveDictionaryObservers();
|
| +
|
| + // The hunspell dictionaries that are used for spellchecking.
|
| + WeakDictionaries hunspell_dictionaries_;
|
| +
|
| + // The custom dictionary that is used for spellchecking.
|
| + SpellcheckCustomDictionary* custom_dictionary_;
|
| +
|
| content::BrowserContext* context_;
|
|
|
| // True if there are observers listening for spellcheck events.
|
| bool listening_spellcheck_;
|
|
|
| + // True if the profile has finished initializing.
|
| + bool profile_added_;
|
| +
|
| + content::NotificationRegistrar notification_registrar_;
|
| +
|
| + PrefChangeRegistrar pref_change_registrar_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(LanguageSettingsPrivateDelegate);
|
| };
|
|
|
|
|