Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f523f150 authored by Karishma Vakil's avatar Karishma Vakil
Browse files

[SafetyCenter] Add broadcast action and extra constants for data refreshes

Test: Will add when the constants are used in b/208624002.
Bug: 208623999
Bug: 210423417
Change-Id: I16482a7101c0f2429b79bac92e5b463f47b13a2d
parent 8704be36
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -2656,6 +2656,7 @@ package android.content {
    field public static final String ACTION_PENDING_INCIDENT_REPORTS_CHANGED = "android.intent.action.PENDING_INCIDENT_REPORTS_CHANGED";
    field public static final String ACTION_PRE_BOOT_COMPLETED = "android.intent.action.PRE_BOOT_COMPLETED";
    field public static final String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
    field public static final String ACTION_REFRESH_SAFETY_SOURCES = "android.intent.action.REFRESH_SAFETY_SOURCES";
    field public static final String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE";
    field @RequiresPermission(android.Manifest.permission.REVIEW_ACCESSIBILITY_SERVICES) public static final String ACTION_REVIEW_ACCESSIBILITY_SERVICES = "android.intent.action.REVIEW_ACCESSIBILITY_SERVICES";
    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_REVIEW_ONGOING_PERMISSION_USAGE = "android.intent.action.REVIEW_ONGOING_PERMISSION_USAGE";
@@ -2686,6 +2687,10 @@ package android.content {
    field public static final String EXTRA_PACKAGES = "android.intent.extra.PACKAGES";
    field public static final String EXTRA_PERMISSION_NAME = "android.intent.extra.PERMISSION_NAME";
    field public static final String EXTRA_REASON = "android.intent.extra.REASON";
    field public static final int EXTRA_REFRESH_REQUEST_TYPE_FETCH_FRESH_DATA = 0; // 0x0
    field public static final int EXTRA_REFRESH_REQUEST_TYPE_GET_DATA = 1; // 0x1
    field public static final String EXTRA_REFRESH_SAFETY_SOURCES_REQUEST_TYPE = "android.intent.extra.REFRESH_SAFETY_SOURCES_REQUEST_TYPE";
    field public static final String EXTRA_REFRESH_SAFETY_SOURCE_IDS = "android.intent.extra.REFRESH_SAFETY_SOURCE_IDS";
    field public static final String EXTRA_REMOTE_CALLBACK = "android.intent.extra.REMOTE_CALLBACK";
    field public static final String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED";
    field public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME";
+112 −0
Original line number Diff line number Diff line
@@ -3793,6 +3793,47 @@ public class Intent implements Parcelable, Cloneable {
    public static final String ACTION_IDLE_MAINTENANCE_END =
            "android.intent.action.ACTION_IDLE_MAINTENANCE_END";

    /**
     * Broadcast Action: A broadcast sent by the system to indicate that
     * {@link android.safetycenter.SafetyCenterManager} is requesting data from safety sources
     * regarding their safety state.
     *
     * This broadcast is sent when a user triggers a data refresh from the Safety Center UI or when
     * Safety Center detects that its stored safety information is stale and needs to be updated.
     *
     * This broadcast is sent explicitly to safety sources by targeting intents to a specified set
     * of components provided by the safety sources in the safety source configuration.
     * The receiving components should be manifest-declared receivers so that safety sources can be
     * requested to send data even if they are not running.
     *
     * On receiving this broadcast, safety sources should determine their safety state
     * according to the parameters specified in the intent extras (see below) and send Safety Center
     * data about their safety state using
     * {@link android.safetycenter.SafetyCenterManager#sendSafetyCenterUpdate(android.safetycenter.SafetySourceData)}.
     *
     * <p class="note">This is a protected intent that can only be sent by the system.
     *
     * <p>Includes the following extras:
     * <ul>
     * <li>{@link #EXTRA_REFRESH_SAFETY_SOURCES_REQUEST_TYPE}: An int representing the type of data
     * being requested. Possible values are all values in {@link RefreshRequestType}.
     * <li>{@link #EXTRA_REFRESH_SAFETY_SOURCE_IDS}: A {@code String[]} of ids
     * representing the safety sources being requested for data. This extra exists for
     * disambiguation in the case that a single component is responsible for receiving refresh
     * requests for multiple safety sources.
     * </ul>
     *
     * @hide
     */
    // TODO(b/210805082): Define the term "safety sources" more concretely here once safety sources
    //  are configured in xml config.
    // TODO(b/210979035): Determine recommendation for sources if they are requested for fresh data
    //  but cannot provide it.
    @SystemApi
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_REFRESH_SAFETY_SOURCES =
            "android.intent.action.REFRESH_SAFETY_SOURCES";

    /**
     * Broadcast Action: a remote intent is to be broadcasted.
     *
@@ -6386,6 +6427,77 @@ public class Intent implements Parcelable, Cloneable {
    public static final String EXTRA_VISIBILITY_ALLOW_LIST =
            "android.intent.extra.VISIBILITY_ALLOW_LIST";


    /**
     * Used as a {@code String[]} extra field in
     * {@link android.content.Intent#ACTION_REFRESH_SAFETY_SOURCES} intents to specify the safety
     * source ids of the safety sources being requested for data by Safety Center.
     *
     * When this extra field is not specified in the intent, it is assumed that Safety Center is
     * requesting data from all safety sources supported by the component receiving the broadcast.
     * @hide
     */
    @SystemApi
    public static final String EXTRA_REFRESH_SAFETY_SOURCE_IDS =
            "android.intent.extra.REFRESH_SAFETY_SOURCE_IDS";

    /**
     * Used as an {@code int} extra field in
     * {@link android.content.Intent#ACTION_REFRESH_SAFETY_SOURCES} intents to specify the type of
     * data request from Safety Center.
     *
     * Possible values are all values in {@link RefreshRequestType}.
     *
     * @hide
     */
    @SystemApi
    public static final String EXTRA_REFRESH_SAFETY_SOURCES_REQUEST_TYPE =
            "android.intent.extra.REFRESH_SAFETY_SOURCES_REQUEST_TYPE";

    /**
     * All possible types of data refresh requests in broadcasts with intent action
     * {@link android.content.Intent#ACTION_REFRESH_SAFETY_SOURCES}.
     *
     * @hide
     */
    @IntDef(prefix = { "EXTRA_REFRESH_REQUEST_TYPE_" }, value = {
            EXTRA_REFRESH_REQUEST_TYPE_FETCH_FRESH_DATA,
            EXTRA_REFRESH_REQUEST_TYPE_GET_DATA,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface RefreshRequestType {}

    /**
     * Used as an int value for
     * {@link android.content.Intent#EXTRA_REFRESH_SAFETY_SOURCES_REQUEST_TYPE}
     * to indicate that the safety source should fetch fresh data relating to their safety state
     * upon receiving a broadcast with intent action
     * {@link android.content.Intent#ACTION_REFRESH_SAFETY_SOURCES} and provide it to Safety Center.
     *
     * The term "fresh" here means that the sources should ensure that the safety data is accurate
     * as possible at the time of providing it to Safety Center, even if it involves performing an
     * expensive and/or slow process.
     *
     * @hide
     */
    @SystemApi
    public static final int EXTRA_REFRESH_REQUEST_TYPE_FETCH_FRESH_DATA = 0;

    /**
     * Used as an int value for
     * {@link android.content.Intent#EXTRA_REFRESH_SAFETY_SOURCES_REQUEST_TYPE}
     * to indicate that upon receiving a broadcasts with intent action
     * {@link android.content.Intent#ACTION_REFRESH_SAFETY_SOURCES}, the safety source should
     * provide data relating to their safety state to Safety Center.
     *
     * If the source already has its safety data cached, it may provide it without triggering a
     * process to fetch state which may be expensive and/or slow.
     *
     * @hide
     */
    @SystemApi
    public static final int EXTRA_REFRESH_REQUEST_TYPE_GET_DATA = 1;

    // ---------------------------------------------------------------------
    // ---------------------------------------------------------------------
    // Intent flags (see mFlags variable).
+3 −0
Original line number Diff line number Diff line
@@ -714,6 +714,9 @@
    <protected-broadcast android:name="android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED" />
    <protected-broadcast android:name="android.app.action.SHOW_NEW_USER_DISCLAIMER" />

    <!-- Added in T -->
    <protected-broadcast android:name="android.intent.action.REFRESH_SAFETY_SOURCES" />

    <!-- ====================================================================== -->
    <!--                          RUNTIME PERMISSIONS                           -->
    <!-- ====================================================================== -->