Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1591)

Unified Diff: chrome/browser/extensions/api/language_settings_private/language_settings_private_delegate.h

Issue 1283603002: Implement langageSettingsPrivate API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@LanguageSettingsAPIIDLChanges
Patch Set: Fix const error in l10n_util_collator Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698