;; 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
    adbd_exec
    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
    bootloader_boot_reason_prop
    blank_screen
    blank_screen_exec
    blank_screen_tmpfs
    bluetooth_a2dp_offload_prop
    bpfloader
    bpfloader_exec
    broadcastradio_service
    cgroup_bpf
    charger_exec
    color_display_service
    content_capture_service
    crossprofileapps_service
    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
    e2fs
    e2fs_exec
    exfat
    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
    exported2_config_prop
    exported2_default_prop
    exported2_radio_prop
    exported2_system_prop
    exported2_vold_prop
    exported3_default_prop
    exported3_radio_prop
    exported3_system_prop
    fastbootd
    fingerprint_vendor_data_file
    flags_health_check
    flags_health_check_exec
    fs_bpf
    fwk_stats_hwservice
    hal_atrace_hwservice
    hal_audiocontrol_hwservice
    hal_authsecret_hwservice
    hal_broadcastradio_hwservice
    hal_cas_hwservice
    hal_codec2_hwservice
    hal_confirmationui_hwservice
    hal_evs_hwservice
    hal_health_storage_hwservice
    hal_lowpan_hwservice
    hal_neuralnetworks_hwservice
    hal_secure_element_hwservice
    hal_tetheroffload_hwservice
    hal_wifi_hostapd_hwservice
    hal_usb_gadget_hwservice
    hal_vehicle_hwservice
    hal_wifi_offload_hwservice
    heapprofd
    heapprofd_exec
    heapprofd_socket
    incident_helper
    incident_helper_exec
    iorapd
    iorapd_data_file
    iorapd_exec
    iorapd_service
    iorapd_tmpfs
    kmsg_debug_device
    last_boot_reason_prop
    llkd
    llkd_exec
    llkd_prop
    llkd_tmpfs
    looper_stats_service
    lowpan_device
    lowpan_prop
    lowpan_service
    mediaswcodec
    mediaswcodec_exec
    mediaswcodec_tmpfs
    mediaextractor_update_service
    mediaprovider_tmpfs
    metadata_file
    mnt_product_file
    mnt_vendor_file
    netd_stable_secret_prop
    network_stack
    network_stack_service
    network_watchlist_data_file
    network_watchlist_service
    overlayfs_file
    package_native_service
    perfetto
    perfetto_exec
    perfetto_tmpfs
    perfetto_traces_data_file
    perfprofd_service
    property_info
    recovery_socket
    role_service
    runas_app
    runtime_service
    secure_element
    secure_element_device
    secure_element_tmpfs
    secure_element_service
    server_configurable_flags_data_file
    simpleperf_app_runner
    simpleperf_app_runner_exec
    slice_service
    staging_data_file
    stats
    stats_data_file
    stats_exec
    stats_service
    statsd
    statsd_exec
    statsd_tmpfs
    statsdw
    statsdw_socket
    statscompanion_service
    storaged_data_file
    super_block_device
    sysfs_fs_ext4_features
    system_boot_reason_prop
    system_bootstrap_lib_file
    system_lmk_prop
    system_net_netd_hwservice
    system_update_service
    test_boot_reason_prop
    thermal_service
    thermalcallback_hwservice
    thermalserviced
    thermalserviced_exec
    thermalserviced_tmpfs
    time_prop
    timedetector_service
    timezone_service
    tombstoned_java_trace_socket
    tombstone_wifi_data_file
    trace_data_file
    traceur_app
    traceur_app_tmpfs
    traced
    traced_consumer_socket
    traced_enabled_prop
    traced_exec
    traced_probes
    traced_probes_exec
    traced_probes_tmpfs
    traced_producer_socket
    traced_tmpfs
    untrusted_app_all_devpts
    update_engine_log_data_file
    vendor_default_prop
    vendor_security_patch_level_prop
    uri_grants_service
    usbd
    usbd_exec
    usbd_tmpfs
    vendor_init
    vendor_shell
    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
    wpantund
    wpantund_exec
    wpantund_service
    wpantund_tmpfs
    wm_trace_data_file))

;; 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
    adbd_tmpfs
    untrusted_app_27_tmpfs))
