;; new_objects - a collection of types that have been introduced that have no
;;   analogue in older policy.  Thus, we do not need to map these types to
;;   previous ones.  Add here to pass checkapi tests.
(type new_objects)
(typeattribute new_objects)
(typeattributeset new_objects
  ( new_objects
    activity_task_service
    adb_service
    app_binding_service
    apex_data_file
    apex_metadata_file
    apex_mnt_dir
    apex_service
    apexd
    apexd_exec
    apexd_prop
    apexd_tmpfs
    app_zygote
    atrace
    binder_calls_stats_service
    biometric_service
    blank_screen
    blank_screen_exec
    blank_screen_tmpfs
    bootloader_boot_reason_prop
    bluetooth_a2dp_offload_prop
    bpfloader
    bpfloader_exec
    cgroup_bpf
    charger_exec
    color_display_service
    content_capture_service
    crossprofileapps_service
    ctl_apexd_prop
    ctl_interface_restart_prop
    ctl_interface_start_prop
    ctl_interface_stop_prop
    ctl_sigstop_prop
    device_config_boot_count_prop
    device_config_reset_performed_prop
    device_config_netd_native_prop
    dnsresolver_service
    exfat
    exported2_config_prop
    exported2_default_prop
    exported2_radio_prop
    exported2_system_prop
    exported2_vold_prop
    exported3_default_prop
    exported3_radio_prop
    exported3_system_prop
    exported_audio_prop
    exported_bluetooth_prop
    exported_config_prop
    exported_dalvik_prop
    exported_default_prop
    exported_dumpstate_prop
    exported_ffs_prop
    exported_fingerprint_prop
    exported_overlay_prop
    exported_pm_prop
    exported_radio_prop
    exported_secure_prop
    exported_system_prop
    exported_system_radio_prop
    exported_vold_prop
    exported_wifi_prop
    fastbootd
    flags_health_check
    flags_health_check_exec
    fingerprint_vendor_data_file
    fs_bpf
    fwk_stats_hwservice
    hal_atrace_hwservice
    hal_audiocontrol_hwservice
    hal_authsecret_hwservice
    hal_codec2_hwservice
    hal_confirmationui_hwservice
    hal_evs_hwservice
    hal_health_storage_hwservice
    hal_lowpan_hwservice
    hal_secure_element_hwservice
    hal_usb_gadget_hwservice
    hal_vehicle_hwservice
    hal_wifi_hostapd_hwservice
    heapprofd
    heapprofd_exec
    heapprofd_socket
    incident_helper
    incident_helper_exec
    iorapd
    iorapd_data_file
    iorapd_exec
    iorapd_service
    iorapd_tmpfs
    last_boot_reason_prop
    llkd
    llkd_exec
    llkd_prop
    llkd_tmpfs
    looper_stats_service
    lowpan_device
    lowpan_prop
    lowpan_service
    mediaextractor_update_service
    mediaswcodec
    mediaswcodec_exec
    mediaswcodec_tmpfs
    metadata_bootstat_file
    metadata_file
    mnt_product_file
    mnt_vendor_file
    network_stack
    network_stack_service
    network_watchlist_data_file
    network_watchlist_service
    overlayfs_file
    perfetto
    perfetto_exec
    perfetto_tmpfs
    perfetto_traces_data_file
    property_info
    recovery_socket
    role_service
    runas_app
    art_apex_dir
    runtime_service
    secure_element
    secure_element_device
    secure_element_service
    secure_element_tmpfs
    server_configurable_flags_data_file
    simpleperf_app_runner
    simpleperf_app_runner_exec
    slice_service
    socket_hook_prop
    stats
    stats_data_file
    stats_exec
    stats_service
    statscompanion_service
    statsd
    statsd_exec
    statsd_tmpfs
    statsdw
    statsdw_socket
    storaged_data_file
    super_block_device
    staging_data_file
    system_boot_reason_prop
    system_bootstrap_lib_file
    system_lmk_prop
    system_update_service
    test_boot_reason_prop
    time_prop
    timedetector_service
    tombstone_wifi_data_file
    trace_data_file
    traced
    traced_consumer_socket
    traced_enabled_prop
    traced_exec
    traced_probes
    traced_probes_exec
    traced_probes_tmpfs
    traced_producer_socket
    traced_tmpfs
    traceur_app
    traceur_app_tmpfs
    untrusted_app_all_devpts
    update_engine_log_data_file
    uri_grants_service
    usbd
    usbd_exec
    usbd_tmpfs
    vendor_apex_file
    vendor_default_prop
    vendor_init
    vendor_security_patch_level_prop
    vendor_shell
    vendor_socket_hook_prop
    vndk_prop
    vold_metadata_file
    vold_prepare_subdirs
    vold_prepare_subdirs_exec
    vold_service
    vrflinger_vsync_service
    wait_for_keymaster
    wait_for_keymaster_exec
    wait_for_keymaster_tmpfs
    watchdogd_tmpfs
    wm_trace_data_file
    wpantund
    wpantund_exec
    wpantund_service
    wpantund_tmpfs))

;; private_objects - a collection of types that were labeled differently in
;;     older policy, but that should not remain accessible to vendor policy.
;;     Thus, these types are also not mapped, but recorded for checkapi tests
(type priv_objects)
(typeattribute priv_objects)
(typeattributeset priv_objects
  ( priv_objects
    untrusted_app_27_tmpfs))
