// Copyright 2021 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_ASSISTIVE_SUGGESTER_SWITCH_H_
#define CHROME_BROWSER_ASH_INPUT_METHOD_ASSISTIVE_SUGGESTER_SWITCH_H_
#include "base/functional/callback.h"
#include "ui/base/ime/ash/text_input_method.h"
namespace ash {
namespace input_method {
class AssistiveSuggesterSwitch {
public:
// Specifies the suggestions that are current enabled given the user's
// context.
struct EnabledSuggestions {
bool emoji_suggestions = false;
bool multi_word_suggestions = false;
bool personal_info_suggestions = false;
bool diacritic_suggestions = false;
bool operator==(const EnabledSuggestions& rhs) const {
return emoji_suggestions == rhs.emoji_suggestions &&
multi_word_suggestions == rhs.multi_word_suggestions &&
personal_info_suggestions == rhs.personal_info_suggestions &&
diacritic_suggestions == rhs.diacritic_suggestions;
}
};
AssistiveSuggesterSwitch() = default;
virtual ~AssistiveSuggesterSwitch() = default;
using FetchEnabledSuggestionsCallback =
base::OnceCallback<void(const EnabledSuggestions&)>;
// Gets the currently enabled suggestions given the current user context.
virtual void FetchEnabledSuggestionsThen(
FetchEnabledSuggestionsCallback callback,
const TextInputMethod::InputContext& context) = 0;
};
} // namespace input_method
} // namespace ash
#endif // CHROME_BROWSER_ASH_INPUT_METHOD_ASSISTIVE_SUGGESTER_SWITCH_H_