// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. module ash.mojom; // There is another copy of the VoiceInteractionState definition in // //components/arc/common/voice_interaction_framework.mojom // Please also update the other one if you change it. // The duplicate definition is because we do not use extensible widely // (crbug.com/731893). // The initial state is NOT_READY, then it will either becomes STOPPED or // RUNNING. If the mojo connection is lost, the state will be set back to // NOT_READY. enum VoiceInteractionState { // Voice interaction service is not ready yet, request sent will be waiting. NOT_READY = 0, // Voice interaction session is stopped. STOPPED, // Voice interaction session is currently running. RUNNING }; enum AssistantAllowedState { // Assistant feature is allowed. ALLOWED = 0, // Disallowed because ARC++ is disallowed. There could be many specific // reasones why ARC++ is disallowed. This enum is a catch all. Some enums // below will show specific reasons. DISALLOWED_BY_ARC_DISALLOWED, // Disallowed because ARC++ is disabled by policy. DISALLOWED_BY_ARC_POLICY, // Disallowed because user's locale is not compatible. DISALLOWED_BY_LOCALE, // Disallowed because the feature flag is off. DISALLOWED_BY_FLAG, // Disallowed because current user is not primary user. DISALLOWED_BY_NONPRIMARY_USER, // Disallowed because current user is supervised user. DISALLOWED_BY_SUPERVISED_USER, // Disallowed because incognito mode. DISALLOWED_BY_INCOGNITO }; // Allows observing changes to voice interaction status and settings. interface VoiceInteractionObserver { // Called when voice interaction session state changes. OnVoiceInteractionStatusChanged(VoiceInteractionState state); // Called when voice interaction is enabled/disabled in settings. OnVoiceInteractionSettingsEnabled(bool enabled); // Called when voice interaction service is allowed/disallowed to access // the "context" (text and graphic content that is currently on screen). OnVoiceInteractionContextEnabled(bool enabled); // Called when hotword listening is enabled/disabled. OnVoiceInteractionHotwordEnabled(bool enabled); // Called when voice interaction setup flow completed. OnVoiceInteractionSetupCompleted(bool completed); // Called when assistant feature allowed state has changed. OnAssistantFeatureAllowedChanged(AssistantAllowedState state); }; // Interface for ash client (Chrome) to connect to the voice interaction // controller, which notifies changes of voice interaction related flags. interface VoiceInteractionController { // Called when the voice interaction state is changed. NotifyStatusChanged(VoiceInteractionState state); // Called when the voice interaction settings is enabled/disabled. NotifySettingsEnabled(bool enabled); // Called when the voice interaction context is enabled/disabled. // If context is enabled the screenshot will be passed in voice // interaction session. NotifyContextEnabled(bool enabled); // Called when the hotword listening is enabled/disabled. NotifyHotwordEnabled(bool enabled); // Called when the voice interaction setup complete status is changed. NotifySetupCompleted(bool completed); // Notify if voice interaction feature is allowed or not. e.g. not allowed // if disabled by policy. NotifyFeatureAllowed(AssistantAllowedState state); // Called when the notification is enabled/disabled. NotifyNotificationEnabled(bool enabled); // Return if the voice interaction setting is enabled/disabled. IsSettingEnabled() => (bool enabled); // Return the voice interaction setup complete status. IsSetupCompleted() => (bool completed); // Return if the user has granted permission to access screen "context", the // text and graphics content that is currently on screen. IsContextEnabled() => (bool enabled); // Return the voice interaction hotword listening status. IsHotwordEnabled() => (bool enabled); // Add an observer. AddObserver(VoiceInteractionObserver observer); };