// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_ANDROID_TASK_SCHEDULER_TASK_TRAITS_ANDROID_H_ #define BASE_ANDROID_TASK_SCHEDULER_TASK_TRAITS_ANDROID_H_ // Enum for the TaskTraits types exposed to Java. // // A Java counterpart will be generated for this enum. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.base.task enum TaskTraits { THREAD_POOL_TRAITS_START = 0, // This task will only be scheduled when machine resources are available. Once // running, it may be descheduled if higher priority work arrives (in this // process or another) and its running on a non-critical thread. This is the // lowest possible priority. BEST_EFFORT = THREAD_POOL_TRAITS_START, // This is a lowest-priority task which may block, for example non-urgent // logging or deletion of temporary files as clean-up. BEST_EFFORT_MAY_BLOCK = THREAD_POOL_TRAITS_START + 1, // This task affects UI or responsiveness of future user interactions. It is // not an immediate response to a user interaction. Most tasks are likely to // have this priority. // Examples: // - Updating the UI to reflect progress on a long task. // - Loading data that might be shown in the UI after a future user // interaction. USER_VISIBLE = THREAD_POOL_TRAITS_START + 2, // USER_VISIBLE + may block. USER_VISIBLE_MAY_BLOCK = THREAD_POOL_TRAITS_START + 3, // This task affects UI immediately after a user interaction. // Example: Generating data shown in the UI immediately after a click. USER_BLOCKING = THREAD_POOL_TRAITS_START + 4, // USER_BLOCKING + may block. USER_BLOCKING_MAY_BLOCK = THREAD_POOL_TRAITS_START + 5, THREAD_POOL_TRAITS_END = USER_BLOCKING_MAY_BLOCK, UI_TRAITS_START = THREAD_POOL_TRAITS_END + 1, UI_BEST_EFFORT = UI_TRAITS_START, UI_USER_VISIBLE = UI_TRAITS_START + 1, UI_USER_BLOCKING = UI_TRAITS_START + 2, UI_DEFAULT = UI_USER_VISIBLE, UI_TRAITS_END = UI_USER_BLOCKING }; #endif // BASE_ANDROID_TASK_SCHEDULER_TASK_TRAITS_ANDROID_H_