blob: 0c3cc9742c0df1309c5de3b0a94acbb11d8c7744 [file] [log] [blame]
// 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,
// Disallowed because the device is in demo mode.
DISALLOWED_BY_DEMO_MODE,
// Disallowed because the device is in public session.
DISALLOWED_BY_PUBLIC_SESSION,
// Disallowed because the user's account type is currently not supported.
DISALLOWED_BY_ACCOUNT_TYPE
};
// 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 hotword is set to always on/only with power source.
OnVoiceInteractionHotwordAlwaysOn(bool always_on);
// Called when consent status is updated.
OnVoiceInteractionConsentStatusUpdated(ConsentStatus consent_status);
// Called when assistant feature allowed state has changed.
OnAssistantFeatureAllowedChanged(AssistantAllowedState state);
// Called when Google Play Store is enabled/disabled.
OnArcPlayStoreEnabledChanged(bool enabled);
// Called when locale is changed in pref. The locale is in the format can be
// "en-US" or simply "en". When locale is not set in pref, it returns empty
// string.
OnLocaleChanged(string locale);
};
// 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 hotword is set to always on/only with power source.
NotifyHotwordAlwaysOn(bool enabled);
// Called when the consent status is obtained from the server.
NotifyConsentStatus(ConsentStatus consent_status);
// 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);
// Called when the locale is changed.
NotifyLocaleChanged(string locale);
// Called when the launch with mic open state is changed.
NotifyLaunchWithMicOpen(bool launch_with_mic_open);
// Called when Google Play Store is enabled/disabled.
NotifyArcPlayStoreEnabledChanged(bool enabled);
// Add an observer.
AddObserver(VoiceInteractionObserver observer);
};
// The status of the user's consent. The enum values cannot be changed because
// they are persisted on disk.
enum ConsentStatus {
// The status is unknown.
kUnknown = 0,
// The user accepted activity control access.
kActivityControlAccepted = 1,
// The user is not authorized to give consent.
kUnauthorized = 2,
// The user's consent information is not found. This is typically the case
// when consent from the user has never been requested.
kNotFound = 3,
};