chromium/chromeos/crosapi/mojom/virtual_keyboard.mojom

// 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.

module crosapi.mojom;

// The virtual keyboard features that RestrictFeatures API can control, this
// should align with the definition of FeatureRestrictions in
// extensions/common/api/virtual_keyboard.idl
[Stable, Extensible]
enum VirtualKeyboardFeature {
  [Default] NONE = 0, // invalid restriction type
  AUTOCOMPLETE = 1,
  AUTOCORRECT = 2,
  HANDWRITING = 3,
  SPELL_CHECK = 4,
  VOICE_INPUT = 5,
};

// A list of enabled features and a list of disabled features that users want to
// change. Ideally no feature should appear in both lists, but if it happens, it
// will be disabled. VirtualKeyboardFeature::NONE should not be in any of the
// lists.
[Stable]
struct VirtualKeyboardRestrictions {
  // A list of features we want to enable.
  array<VirtualKeyboardFeature> enabled_features;

  // A list of features we want to disable.
  array<VirtualKeyboardFeature> disabled_features;
};

// VirtualKeyboard is a service that allows trusted extensions in Lacros
// to control the virtual keyboard.
[Stable, Uuid="1236c20e-5ddd-4ecd-bacf-37c2f5d112fe"]
interface VirtualKeyboard {
  // Sets restrictions on features provided by the virtual keyboard.
  RestrictFeatures@0(VirtualKeyboardRestrictions restrictions) =>
      (VirtualKeyboardRestrictions updated);
};