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

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

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

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

    // 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;
  }
}