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

Commit 56c1563b authored by Elliot Sisteron's avatar Elliot Sisteron
Browse files

Adding SafetyCenter system service and permission.

This implements a basic version of go/angel-in-mainline-api, only
for the bits that are unlikely to change (i.e. introduce the ability
for safety sources to provide data to the safety center).

SELinux Policy changes in aosp/1897505 and aosp/1899011

Test: ag/16284943
Ignore-AOSP-First: Yes
Bug: 203098016
Bug: 203400898
Bug: 205111656
Change-Id: I5d139782decf5226f0c4a8dcaed7c5691a86fed4
parent c71f19f0
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -271,6 +271,7 @@ package android {
    field public static final String SECURE_ELEMENT_PRIVILEGED_OPERATION = "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION";
    field public static final String SEND_CATEGORY_CAR_NOTIFICATIONS = "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS";
    field public static final String SEND_DEVICE_CUSTOMIZATION_READY = "android.permission.SEND_DEVICE_CUSTOMIZATION_READY";
    field public static final String SEND_SAFETY_CENTER_UPDATE = "android.permission.SEND_SAFETY_CENTER_UPDATE";
    field public static final String SEND_SHOW_SUSPENDED_APP_DETAILS = "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS";
    field public static final String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
    field public static final String SERIAL_PORT = "android.permission.SERIAL_PORT";
@@ -2444,6 +2445,7 @@ package android.content {
    field public static final String PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block";
    field public static final String REBOOT_READINESS_SERVICE = "reboot_readiness";
    field public static final String ROLLBACK_SERVICE = "rollback";
    field public static final String SAFETY_CENTER_SERVICE = "safety_center";
    field public static final String SEARCH_UI_SERVICE = "search_ui";
    field public static final String SECURE_ELEMENT_SERVICE = "secure_element";
    field public static final String SMARTSPACE_SERVICE = "smartspace";
+2 −0
Original line number Diff line number Diff line
@@ -196,6 +196,7 @@ import android.permission.PermissionControllerManager;
import android.permission.PermissionManager;
import android.print.IPrintManager;
import android.print.PrintManager;
import android.safetycenter.SafetyCenterFrameworkInitializer;
import android.scheduling.SchedulingFrameworkInitializer;
import android.security.FileIntegrityManager;
import android.security.IFileIntegrityService;
@@ -1530,6 +1531,7 @@ public final class SystemServiceRegistry {
            SchedulingFrameworkInitializer.registerServiceWrappers();
            SupplementalProcessFrameworkInitializer.registerServiceWrappers();
            UwbFrameworkInitializer.registerServiceWrappers();
            SafetyCenterFrameworkInitializer.registerServiceWrappers();
        } finally {
            // If any of the above code throws, we're in a pretty bad shape and the process
            // will likely crash, but we'll reset it just in case there's an exception handler...
+12 −0
Original line number Diff line number Diff line
@@ -3842,6 +3842,7 @@ public abstract class Context {
            UWB_SERVICE,
            MEDIA_METRICS_SERVICE,
            SUPPLEMENTAL_PROCESS_SERVICE,
            //@hide: SAFETY_CENTER_SERVICE,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface ServiceName {}
@@ -5870,6 +5871,17 @@ public abstract class Context {
     */
    public static final String SUPPLEMENTAL_PROCESS_SERVICE = "supplemental_process";

    /**
     * Use with {@link #getSystemService(String)} to retrieve a {@link
     * android.safetycenter.SafetyCenterManager} instance for interacting with the safety center.
     *
     * @see #getSystemService(String)
     * @see android.safetycenter.SafetyCenterManager
     * @hide
     */
    @SystemApi
    public static final String SAFETY_CENTER_SERVICE = "safety_center";

    /**
     * Determine whether the given permission is allowed for a particular
     * process and user ID running in the system.
+8 −0
Original line number Diff line number Diff line
@@ -5963,6 +5963,14 @@
    <permission android:name="android.permission.CREATE_VIRTUAL_DEVICE"
                android:protectionLevel="internal|role" />

    <!-- @SystemApi Must be required by a safety source to send an update using the
             {@link android.safetycenter.SafetyCenterManager}.
             <p>Protection level: signature|privileged
             @hide
        -->
    <permission android:name="android.permission.SEND_SAFETY_CENTER_UPDATE"
                android:protectionLevel="signature|privileged" />

    <!-- Attribution for Geofencing service. -->
    <attribution android:tag="GeofencingService" android:label="@string/geofencing_service"/>
    <!-- Attribution for Country Detector. -->
+6 −0
Original line number Diff line number Diff line
@@ -398,6 +398,8 @@ public final class SystemServer implements Dumpable {
    private static final String UWB_APEX_SERVICE_JAR_PATH =
            "/apex/com.android.uwb/javalib/service-uwb.jar";
    private static final String UWB_SERVICE_CLASS = "com.android.server.uwb.UwbService";
    private static final String SAFETY_CENTER_SERVICE_CLASS =
            "com.android.safetycenter.SafetyCenterService";

    private static final String SUPPLEMENTALPROCESS_APEX_PATH =
            "/apex/com.android.supplementalprocess/javalib/service-supplementalprocess.jar";
@@ -2716,6 +2718,10 @@ public final class SystemServer implements Dumpable {
        mSystemServiceManager.startBootPhase(t, SystemService.PHASE_DEVICE_SPECIFIC_SERVICES_READY);
        t.traceEnd();

        t.traceBegin("StartSafetyCenterService");
        mSystemServiceManager.startService(SAFETY_CENTER_SERVICE_CLASS);
        t.traceEnd();

        t.traceBegin("AppSearchManagerService");
        mSystemServiceManager.startService(APP_SEARCH_MANAGER_SERVICE_CLASS);
        t.traceEnd();