| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_ASH_INPUT_METHOD_INPUT_METHOD_OPTIONS_OBSERVER_H_ |
| #define CHROME_BROWSER_ASH_INPUT_METHOD_INPUT_METHOD_OPTIONS_OBSERVER_H_ |
| |
| #include <string> |
| |
| #include "base/functional/callback.h" |
| #include "components/prefs/pref_change_registrar.h" |
| #include "components/prefs/pref_service.h" |
| |
| namespace ash::input_method { |
| |
| // Used to observe any changes to the values found in the input method specific |
| // options page. The callback given in the ctor will be invoked whenever there |
| // is a change to an input method options preference. |
| class InputMethodOptionsObserver { |
| public: |
| using OnInputMethodOptionsChanged = |
| base::RepeatingCallback<void(const std::string&)>; |
| |
| // PrefService must outlive the lifetime of this instance. |
| explicit InputMethodOptionsObserver(PrefService* prefs); |
| |
| // Start observing for any changes in the input method options page. |
| void Observe(OnInputMethodOptionsChanged callback); |
| |
| private: |
| // Used to listen for changes on a slice of pref values. |
| PrefChangeRegistrar pref_change_registrar_; |
| }; |
| |
| } // namespace ash::input_method |
| |
| #endif // CHROME_BROWSER_ASH_INPUT_METHOD_INPUT_METHOD_OPTIONS_OBSERVER_H_ |