// Copyright 2015 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 arc; // Describes the current process state, as defined by AOSP in // android.app.ActivityManager. enum ProcessState { // Process does not exist. NONEXISTENT = -1, // Process is a persistent system process. PERSISTENT = 0, // Process is a persistent system process and is doing UI. PERSISTENT_UI = 1, // Process is hosting the current top activities. Note that this covers // all activities that are visible to the user. TOP = 2, // Process is hosting a foreground service due to a system binding. BOUND_FOREGROUND_SERVICE = 3, // Process is hosting a foreground service. FOREGROUND_SERVICE = 4, // Same as PROCESS_STATE_TOP but while device is sleeping. TOP_SLEEPING = 5, // Process is important to the user, and something they are aware of. IMPORTANT_FOREGROUND = 6, // Process is important to the user, but not something they are aware of. IMPORTANT_BACKGROUND = 7, // Process is in the background running a backup/restore operation. BACKUP = 8, // Process is in the background, but it can't restore its state so we want // to try to avoid killing it. HEAVY_WEIGHT = 9, // Process is in the background running a service. Unlike oom_adj, this level // is used for both the normal running in background state and the executing // operations state. SERVICE = 10, // Process is in the background running a receiver. Note that from the // perspective of oom_adj receivers run at a higher foreground level, but for // our prioritization here that is not necessary and putting them below // services means many fewer changes in some process states as they receive // broadcasts. RECEIVER = 11, // Process is in the background but hosts the home activity. HOME = 12, // Process is in the background but hosts the last shown activity. LAST_ACTIVITY = 13, // Process is being cached for later use and contains activities. CACHED_ACTIVITY = 14, // Process is being cached for later use and is a client of another cached // process that contains activities. CACHED_ACTIVITY_CLIENT = 15, // Process is being cached for later use and is empty. CACHED_EMPTY = 16, }; // Describes a running ARC process. // This struct is a subset of android.app.ActivityManager.RunningAppProcessInfo. struct RunningAppProcessInfo { // Name of the process. string process_name; // PID (within ARC's PID namespace) of the process. uint32 pid; // Current process state. ProcessState process_state; }; interface ProcessInstance { // Requests ARC instance to return the current process list. RequestProcessList() => (array processes); // Requests ARC instance to kill a process. [MinVersion=1] KillProcess(uint32 pid, string reason); };