Revert "Revert "Adds a new prop context for choosing between mul..."

Revert "Revert "Adds multi_install_skip_symbol_files field (defa..."

Revert submission 1893459-revert-1869814-vapex-multi-config-VKODFOVCWY

Reason for revert: Fix-forward in https://r.android.com/1894088
Reverted Changes:
I087bfe0dc:Revert "Adds a new prop context for choosing betwe...
I27a498506:Revert "Load persist props before starting apexd."...
Ib5344edc0:Revert "Allow users to choose between multi-instal...
If09bf590e:Revert "Adds multi_install_skip_symbol_files field...
I905dac14c:Revert "Demonstrate multi-installed APEXes."

Change-Id: I03fb124d4e7044f236539a132816fd96cb814775
diff --git a/private/apexd.te b/private/apexd.te
index 50a7a72..4037936 100644
--- a/private/apexd.te
+++ b/private/apexd.te
@@ -154,6 +154,10 @@
 # Allow apexd to read per-device configuration properties.
 get_prop(apexd, apexd_config_prop)
 
+# Allow apexd to read apex selection properties.
+# These are used to choose between multi-installed APEXes at activation time.
+get_prop(apexd, apexd_select_prop)
+
 neverallow { domain -apexd -init } apex_data_file:dir no_w_dir_perms;
 neverallow { domain -apexd -init } apex_metadata_file:dir no_w_dir_perms;
 neverallow { domain -apexd -init -kernel } apex_data_file:file no_w_file_perms;
diff --git a/private/compat/31.0/31.0.ignore.cil b/private/compat/31.0/31.0.ignore.cil
index 7decba1..f8000bc 100644
--- a/private/compat/31.0/31.0.ignore.cil
+++ b/private/compat/31.0/31.0.ignore.cil
@@ -5,6 +5,7 @@
 (typeattribute new_objects)
 (typeattributeset new_objects
   ( new_objects
+    apexd_select_prop
     artd_service
     attestation_verification_service
     camera2_extensions_prop
diff --git a/private/property_contexts b/private/property_contexts
index 5d4c3b7..f8be8c2 100644
--- a/private/property_contexts
+++ b/private/property_contexts
@@ -263,6 +263,8 @@
 apexd.config.dm_delete.timeout           u:object_r:apexd_config_prop:s0 exact uint
 apexd.config.dm_create.timeout           u:object_r:apexd_config_prop:s0 exact uint
 persist.apexd.          u:object_r:apexd_prop:s0
+persist.vendor.apex.    u:object_r:apexd_select_prop:s0
+ro.boot.vendor.apex.    u:object_r:apexd_select_prop:s0
 
 bpf.progs_loaded        u:object_r:bpf_progs_loaded_prop:s0
 
diff --git a/public/property.te b/public/property.te
index de61748..4fa0b92 100644
--- a/public/property.te
+++ b/public/property.te
@@ -116,6 +116,7 @@
 
 # Properties which can be written only by vendor_init
 system_vendor_config_prop(apexd_config_prop)
+system_vendor_config_prop(apexd_select_prop)
 system_vendor_config_prop(aaudio_config_prop)
 system_vendor_config_prop(apk_verity_prop)
 system_vendor_config_prop(audio_config_prop)