// 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_INPUT_METHOD_SETTINGS_H_
#define CHROME_BROWSER_ASH_INPUT_METHOD_INPUT_METHOD_SETTINGS_H_
#include "chromeos/ash/services/ime/public/mojom/input_method.mojom.h"
#include "components/prefs/pref_service.h"
namespace ash {
namespace input_method {
ime::mojom::InputMethodSettingsPtr CreateSettingsFromPrefs(
const PrefService& prefs,
const std::string& engine_id);
// Adds or replaces the settings in the values map while notifying the
// PrefService of changes.
void SetLanguageInputMethodSpecificSetting(PrefService& prefs,
const std::string& engine_id,
const base::Value::Dict& values);
// Gets a specific settings value that is held under a key for an engine id if
// it exists.
// Will return nullptr if it does not exist.
const base::Value* GetLanguageInputMethodSpecificSetting(
PrefService& prefs,
const std::string& engine_id,
const std::string& preference_name);
// Returns true if Autocorrect is supported for a given engine id.
bool IsAutocorrectSupported(const std::string& engine_id);
// Is the physical keyboard autocorrect feature allowed for this device (if the
// device is managed).
bool IsPhysicalKeyboardAutocorrectAllowed(const PrefService& prefs);
// Is the physical keyboard predictive writing feature allowed for this device
// (if the device is managed).
bool IsPhysicalKeyboardPredictiveWritingAllowed(const PrefService& prefs);
} // namespace input_method
} // namespace ash
#endif // CHROME_BROWSER_ASH_INPUT_METHOD_INPUT_METHOD_SETTINGS_H_