// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto2";

option java_package = "com.android.internal.messages";
option java_outer_classname = "SystemMessageProto";

package com_android_notifications;

// Descriptors for system messages: notifications, dialogs, toasts, etc.
message SystemMessage {

  // System message IDs
  // These are non-consecutive in order to preserve some existing, ad hoc IDs.
  // It is OK to use skipped IDs.
  // Prefer to add new IDs consecutively from zero, search for ADD_NEW_IDS_ABOVE_THIS_LINE.
  // Most of these IDs only became meaningful with the O release.
  enum ID {
    // Unknown
    NOTE_UNKNOWN = 0;

    // Notify the user that a screenshot was captured.
    // Package: com.android.systemui
    NOTE_GLOBAL_SCREENSHOT = 1;

    // Warn the user about an invalid charger.
    // Package: com.android.systemui
    NOTE_BAD_CHARGER = 2;

    // Warn the user about low battery.
    // Package: com.android.systemui
    NOTE_POWER_LOW = 3;

    // Warn the user that the device has gotten warm.
    // Package: com.android.systemui
    NOTE_HIGH_TEMP = 4;

    // Warn the user that some notifications are hidden.
    // Package: com.android.systemui
    NOTE_HIDDEN_NOTIFICATIONS = 5;

    // Notify the user of a problem with a plugin (dev devices only).
    // Package: com.android.systemui
    NOTE_PLUGIN = 6;

    // Notify the user that instant app is running.
    // Package: com.android.systemui
    NOTE_INSTANT_APPS = 7;

    // Notify the user that they should select an input method
    // Package: android
    NOTE_SELECT_INPUT_METHOD = 8 [deprecated = true];

    // Notify the user about limited functionality before decryption
    // Package: android
    NOTE_FBE_ENCRYPTED_NOTIFICATION = 9;

    // Give the user a way out of car mode
    // Package: android
    NOTE_CAR_MODE_DISABLE = 10;

    // Notification to tell the user that a heavy-weight application is running.
    // Package: android
    NOTE_HEAVY_WEIGHT_NOTIFICATION = 11;

    // Notification to tell the user that a process has exceeded its memory limit.
    // Package: android
    NOTE_DUMP_HEAP_NOTIFICATION = 12;

    // Notification that is shown when finishing a system upgrade
    // Package: android
    NOTE_SYSTEM_UPGRADING = 13;

    // Notify the user that tethering is active.
    // Package: android
    NOTE_TETHER_GENERAL = 14;
    NOTE_TETHER_USB = 15;
    NOTE_TETHER_BLUETOOTH = 16;

    // Notify the user that always-on VPN has disconnected.
    // Package: android
    NOTE_VPN_DISCONNECTED = 17;

    // Notify the user about a sync error.
    // Package: android
    NOTE_SYNC_ERROR = 18;

    // Ask the user to select a keyboard language and layout
    // Package: android
    NOTE_SELECT_KEYBOARD_LAYOUT = 19;

    // Update the user about the status of the VPN
    // Package: android
    NOTE_VPN_STATUS = 20;

    // Package manager either installed or deleted a package
    // Package: android
    NOTE_PACKAGE_STATE = 21;

    // Tell the user that storage space is low
    // Package: android
    NOTE_LOW_STORAGE = 23;

    // Confirm that the user wants to reset out of retail demo mode
    // Package: android
    NOTE_RETAIL_RESET = 24;

    // Entice the use to tap to share files
    // Package: android
    NOTE_USB_MTP_TAP = 25;

    // Display the Android Debug Protocol status
    // Package: android
    NOTE_ADB_ACTIVE = 26;

    // Inform that USB is configured for Media Transfer Protocol
    // Package: android
    NOTE_USB_MTP = 27;

    // Inform that USB is configured for Picture Transfer Protocol
    // Package: android
    NOTE_USB_PTP = 28;

    // Inform that USB is configured as a Musical Instrument Digital Interface
    // Package: android
    NOTE_USB_MIDI = 29;

    // Inform that USB is configured in host mode
    // Package: android
    NOTE_USB_ACCESSORY = 30;

    // Inform the user that the device is supplying power to another device.
    // Package: android
    NOTE_USB_SUPPLYING = 31;

    // Inform the user that the device is consuming power from another device.
    // Package: android
    NOTE_USB_CHARGING = 32;

    // Inform the user that a certificate authority is managing SSL
    // Package: android
    NOTE_SSL_CERT_INFO = 33;

    // Warn the user they are approaching their data limit.
    // Package: android
    NOTE_NET_WARNING = 34;

    // Warn the user they have reached their data limit.
    // Package: android
    NOTE_NET_LIMIT = 35;

    // Warn the user they have exceeded their data limit.
    // Package: android
    NOTE_NET_LIMIT_SNOOZED = 36;

    // Inform the user they need to sign in to an account
    // Package: android, and others
    NOTE_ACCOUNT_REQUIRE_SIGNIN = 37;

    // Inform the user that there has been a permission request for an account
    // Package: android
    NOTE_ACCOUNT_CREDENTIAL_PERMISSION = 38;

    // Inform the user their phone recently shut down due to high temperature
    NOTE_THERMAL_SHUTDOWN = 39;

    // Tell the user about currently running foreground services
    // Package: android
    NOTE_FOREGROUND_SERVICES = 40;

    // Inform the user that the connected audio accessory is not supported
    NOTE_USB_AUDIO_ACCESSORY_NOT_SUPPORTED = 41;

    // Inform the user that a wrong password was detected while attempting to connect
    // to a wifi network
    NOTE_WIFI_WRONG_PASSWORD = 42;

    // Inform the user that Wifi Wake will re-enable wifi when possible
    NOTE_WIFI_WAKE_ONBOARD = 43;

    // Inform the user that Wifi Wake has automatically re-enabled wifi
    NOTE_WIFI_WAKE_TURNED_BACK_ON = 44;

    // Inform the user that unexpectedly rapid network usage is happening
    NOTE_NET_RAPID = 45;

    // Notify the user that carrier wifi networks are available.
    // Package: android
    NOTE_CARRIER_NETWORK_AVAILABLE = 46;

    // Inform that USB is configured for Tethering
    // Package: android
    NOTE_USB_TETHER = 47;

    // Inform that DND settings have changed on OS upgrade
    // Package: android
    NOTE_ZEN_UPGRADE = 48  [deprecated = true];

    // Notification to suggest automatic battery saver.
    // Package: android
    NOTE_AUTO_SAVER_SUGGESTION = 49;

    // Notify the user that their softap config preference has changed.
    // Package: android
    NOTE_SOFTAP_CONFIG_CHANGED = 50;

    // Notify the user that an app suggested network is available for connection.
    // Package: android
    NOTE_NETWORK_SUGGESTION_AVAILABLE = 51;

    // Inform the user that the contaminant is detected on the USB port
    NOTE_USB_CONTAMINANT_DETECTED = 52;

    // Inform that user that the USB port is free of contaminants.
    NOTE_USB_CONTAMINANT_NOT_DETECTED = 53;

    // Inform the user that Test Harness Mode is active.
    // Package: android
    NOTE_TEST_HARNESS_MODE_ENABLED = 54;

    // Inform the user that Serial Console is active.
    // Package: android
    NOTE_SERIAL_CONSOLE_ENABLED = 55;

    // Inform the user that the current network may not support using a randomized MAC address.
    NOTE_NETWORK_NO_MAC_RANDOMIZATION_SUPPORT = 56;

    // Inform the user that EAP failure occurs
    NOTE_WIFI_EAP_FAILURE = 57;

    // Notify the user that their softap disabled because auto shutdown timeout expired.
    // Package: android
    NOTE_SOFTAP_AUTO_DISABLED = 58;

    // Notify the user that their admin has changed location settings.
    // Package: android
    NOTE_LOCATION_CHANGED = 59;

    // Notify user that a SIM is required to connect to Wifi network
    // Package: android
    NOTE_ID_WIFI_SIM_REQUIRED = 60;

    // TODO: remove this notification after feature development is done
    // Inform the user a foreground service is restricted from BG-launch.
    NOTE_FOREGROUND_SERVICE_BG_LAUNCH = 61;

    // Display the Android Debug Protocol status
    // Package: android
    NOTE_ADB_WIFI_ACTIVE = 62;

    // Notify the user a carrier suggestion is available to get IMSI exemption.
    // Package: android
    NOTE_CARRIER_SUGGESTION_AVAILABLE = 63;

    // Inform that NAS settings have changed on OS upgrade
    // Package: android
    NOTE_NAS_UPGRADE = 64;

    // Notify the user to unblock the microphone global toggle
    // Package: android
    NOTE_UNBLOCK_MIC_TOGGLE = 65;

    // Notify the user to unblock the camera global toggle
    // Package: android
    NOTE_UNBLOCK_CAM_TOGGLE = 66;

    // Notify the user that a CA certificate is pending for the wifi connection.
    NOTE_SERVER_CA_CERTIFICATE = 67;

    // Notify the user to set up dream
    NOTE_SETUP_DREAM = 68;

    // Inform the user that MTE override is active.
    // Package: android
    NOTE_MTE_OVERRIDE_ENABLED = 69;

    // Notify the user that this is a guest session with information
    // about first login and ephemeral state
    // Package: android
    NOTE_GUEST_SESSION = 70;

    // Inform the user of notification permissions changes.
    // Package: android
    NOTE_REVIEW_NOTIFICATION_PERMISSIONS = 71;

    // Notify the user to setup their dock
    NOTE_SETUP_DOCK = 72;

    // Inform the user of wifi apm state changes.
    // Package: android
    NOTE_WIFI_APM_NOTIFICATION = 73;

    // Inform the user of bluetooth apm state changes.
    // Package: android
    NOTE_BT_APM_NOTIFICATION = 74;

    // Inform that USB is configured as a Universal Video Class gadget
    // Package: android
    NOTE_USB_UVC = 75;

    // Inform the user about adaptive notifications
    // Package: com.android.systemui
    NOTE_ADAPTIVE_NOTIFICATIONS = 76;

    // Warn the user that the device's Headless System User Mode status doesn't match the build's.
    // Package: android
    NOTE_WRONG_HSUM_STATUS = 77;

    // Inform the user that the device appears to be a prototype.
    // Package: android
    NOTE_PROTOTYPE_DETECTED = 400;

    // See com.android.server.ext.MissingSpecialRuntimePermissionNotification
    // Package: android
    NOTE_MISSING_PERMISSION_OTHER_SENSORS = 500;
    NOTE_BACKGROUND_DEXOPT = 501;

    // ADD_NEW_IDS_ABOVE_THIS_LINE
    // Legacy IDs with arbitrary values appear below
    // Legacy IDs existed as stable non-conflicting constants prior to the O release

    // Network status notes, previously decleared in metrics_constants with these values
    // Package: android
    //
    // A captive portal was detected during network validation
    NOTE_NETWORK_SIGN_IN = 740;
    // An unvalidated network without Internet was selected by the user
    NOTE_NETWORK_NO_INTERNET = 741;
    // A validated network failed revalidation and lost Internet access
    NOTE_NETWORK_LOST_INTERNET = 742;
    // The system default network switched to a different network
    NOTE_NETWORK_SWITCH = 743;
    // Device logged-in captive portal network successfully
    NOTE_NETWORK_LOGGED_IN = 744;
    // A partial connectivity network was detected during network validation
    NOTE_NETWORK_PARTIAL_CONNECTIVITY = 745;
    // Private DNS is broken in strict mode
    NOTE_NETWORK_PRIVATE_DNS_BROKEN = 746;

    // Notify the user that their work profile has been deleted
    // Package: android
    NOTE_PROFILE_WIPED = 1001;

    // Warn the user that their org can monitor the network
    // Package: android
    NOTE_NETWORK_LOGGING = 1002;

    // Confirm that the user wants to remove the guest account.
    // Package: com.android.systemui
    NOTE_REMOVE_GUEST = 1010;

    // Confirm that the user wants to log out of the device.
    // Package: com.android.systemui
    NOTE_LOGOUT_USER = 1011;

    // Notify the user that a TV PIP is running.
    // Package: com.android.systemui
    NOTE_TV_PIP = 1100;

    // Extreme battery saver notification.
    NOTE_BATTERY_SAVER_WARNING = 1200;

    // Notify the user that open wifi networks are available.
    // Package: android
    NOTE_NETWORK_AVAILABLE = 17303299;

    // Communicate to the user about remote bugreports.
    // Package: android
    NOTE_REMOTE_BUGREPORT = 678432343;

    // Notify the user about public volume state changes..
    // Package: com.android.systemui
    NOTE_STORAGE_PUBLIC = 0x53505542;  // 1397773634

    // Notify the user about private volume state changes.
    // Package: com.android.systemui
    NOTE_STORAGE_PRIVATE = 0x53505256;

    // Notify the user about an unsupported storage device..
    // Package: com.android.systemui
    NOTE_STORAGE_DISK = 0x5344534b;

    // Notify the user that data or apps are being moved to external storage.
    // Package: com.android.systemui
    NOTE_STORAGE_MOVE = 0x534d4f56;

    // Notify the user that the admin suspended personal apps on the device.
    // Package: android
    NOTE_PERSONAL_APPS_SUSPENDED = 1003;

    // Notify the user that window magnification is available.
    // package: android
    NOTE_A11Y_WINDOW_MAGNIFICATION_FEATURE = 1004;

    // Notify the user that some accessibility service has view and control permissions.
    // package: android
    NOTE_A11Y_VIEW_AND_CONTROL_ACCESS = 1005;

    // Notify the user an abusive background app has been detected.
    // Package: android
    // Note: this is a base ID, multiple notifications will be posted for each
    // abusive apps, with notification ID based off this ID.
    NOTE_ABUSIVE_BG_APPS_BASE = 0xc1b2508; // 203105544

    NOTE_APP_SWITCH_BASE = 0xf000000;
    NOTE_APP_SWITCH_MAX =  0xf00ffff;
    NOTE_SYSTEM_JOURNAL_BASE = 0xf010000;
    NOTE_SYSTEM_JOURNAL_MAX =  0xf01ffff;

    // Notify the user that dialer and sms functionality are unavailable whilst the apps are
    // paused in the work profile.
    // Package: android
    NOTE_ALL_MANAGED_SUBSCRIPTIONS_AND_MANAGED_PROFILE_OFF = 1006;

    // Notify the user that audio was lowered based on Calculated Sound Dose (CSD)
    NOTE_CSD_LOWER_AUDIO = 1007;

    // Notify the user about external display events related to screenshot.
    // Package: com.android.systemui
    NOTE_GLOBAL_SCREENSHOT_EXTERNAL_DISPLAY = 1008;

    // Notify the user that accessibility floating menu is hidden.
    // Package: com.android.systemui
    NOTE_A11Y_FLOATING_MENU_HIDDEN = 1009;

    // Notify the hearing aid user that input device can be changed to builtin device or hearing device.
    // Package: android
    NOTE_HEARING_DEVICE_INPUT_SWITCH = 1012;

    // Notify the user that USB is disabled when a USB device is connected.
    // Package: android
    NOTE_USB_DATA_PROTECTION_REMINDER = 1013;
  }
}
