EARC: Add Policy for EArc Service
Test: atest vts_treble_vintf_framework_test
atest vts_treble_vintf_vendor_test
Bug: 240388105
Change-Id: I561f647a68553fa0134f2e1bd65b0f18dd1785f1
diff --git a/build/soong/service_fuzzer_bindings.go b/build/soong/service_fuzzer_bindings.go
index 59e9018..b89e1c3 100644
--- a/build/soong/service_fuzzer_bindings.go
+++ b/build/soong/service_fuzzer_bindings.go
@@ -114,6 +114,7 @@
"android.hardware.soundtrigger3.ISoundTriggerHw/default": EXCEPTION_NO_FUZZER,
"android.hardware.thermal.IThermal/default": EXCEPTION_NO_FUZZER,
"android.hardware.tv.cec.IHdmiCec/default": EXCEPTION_NO_FUZZER,
+ "android.hardware.tv.earc.IEArc/default": EXCEPTION_NO_FUZZER,
"android.hardware.tv.hdmi.IHdmi/default": EXCEPTION_NO_FUZZER,
"android.hardware.tv.input.ITvInput/default": EXCEPTION_NO_FUZZER,
"android.hardware.tv.tuner.ITuner/default": EXCEPTION_NO_FUZZER,
diff --git a/private/compat/33.0/33.0.ignore.cil b/private/compat/33.0/33.0.ignore.cil
index 819a61b..2e776db 100644
--- a/private/compat/33.0/33.0.ignore.cil
+++ b/private/compat/33.0/33.0.ignore.cil
@@ -22,6 +22,7 @@
hal_thermal_service
hal_usb_gadget_service
hal_tv_input_service
+ hal_tv_earc_service
hal_tv_hdmi_service
hal_tv_hdmi_cec_service
hal_wifi_service
diff --git a/private/service_contexts b/private/service_contexts
index 6e4cfe8..49912ac 100644
--- a/private/service_contexts
+++ b/private/service_contexts
@@ -88,6 +88,7 @@
android.hardware.soundtrigger3.ISoundTriggerHw/default u:object_r:hal_audio_service:s0
android.hardware.thermal.IThermal/default u:object_r:hal_thermal_service:s0
android.hardware.tv.cec.IHdmiCec/default u:object_r:hal_tv_hdmi_cec_service:s0
+android.hardware.tv.earc.IEArc/default u:object_r:hal_tv_earc_service:s0
android.hardware.tv.hdmi.IHdmi/default u:object_r:hal_tv_hdmi_service:s0
android.hardware.tv.tuner.ITuner/default u:object_r:hal_tv_tuner_service:s0
android.hardware.tv.input.ITvInput/default u:object_r:hal_tv_input_service:s0
diff --git a/private/system_server.te b/private/system_server.te
index 54ad242..83531ad 100644
--- a/private/system_server.te
+++ b/private/system_server.te
@@ -331,6 +331,7 @@
hal_client_domain(system_server, hal_tetheroffload)
hal_client_domain(system_server, hal_thermal)
hal_client_domain(system_server, hal_tv_cec)
+hal_client_domain(system_server, hal_tv_earc)
hal_client_domain(system_server, hal_tv_hdmi)
hal_client_domain(system_server, hal_tv_hdmi_cec)
hal_client_domain(system_server, hal_tv_input)
diff --git a/public/attributes b/public/attributes
index 0478874..ebc199c 100644
--- a/public/attributes
+++ b/public/attributes
@@ -370,6 +370,7 @@
hal_attribute(tetheroffload);
hal_attribute(thermal);
hal_attribute(tv_cec);
+hal_attribute(tv_earc);
hal_attribute(tv_hdmi);
hal_attribute(tv_hdmi_cec);
hal_attribute(tv_input);
diff --git a/public/hal_tv_earc.te b/public/hal_tv_earc.te
new file mode 100644
index 0000000..419d16e
--- /dev/null
+++ b/public/hal_tv_earc.te
@@ -0,0 +1,7 @@
+# Binder IPC from clients into server, and callbacks
+binder_call(hal_tv_earc_client, hal_tv_earc_server)
+binder_call(hal_tv_earc_server, hal_tv_earc_client)
+binder_use(hal_tv_earc_client)
+binder_use(hal_tv_earc_server)
+
+hal_attribute_service(hal_tv_earc, hal_tv_earc_service)
diff --git a/public/service.te b/public/service.te
index 5a71575..58d8a15 100644
--- a/public/service.te
+++ b/public/service.te
@@ -313,6 +313,7 @@
type hal_sharedsecret_service, protected_service, hal_service_type, service_manager_type;
type hal_system_suspend_service, protected_service, hal_service_type, service_manager_type;
type hal_thermal_service, protected_service, hal_service_type, service_manager_type;
+type hal_tv_earc_service, protected_service, hal_service_type, service_manager_type;
type hal_tv_hdmi_service, protected_service, hal_service_type, service_manager_type;
type hal_tv_hdmi_cec_service, protected_service, hal_service_type, service_manager_type;
type hal_tv_input_service, protected_service, hal_service_type, service_manager_type;
diff --git a/public/su.te b/public/su.te
index 730c1e0..60d0230 100644
--- a/public/su.te
+++ b/public/su.te
@@ -97,6 +97,7 @@
typeattribute su hal_tetheroffload_client;
typeattribute su hal_thermal_client;
typeattribute su hal_tv_cec_client;
+ typeattribute su hal_tv_earc_client;
typeattribute su hal_tv_hdmi_client;
typeattribute su hal_tv_hdmi_cec_client;
typeattribute su hal_tv_input_client;
diff --git a/vendor/file_contexts b/vendor/file_contexts
index a8655b0..c5f0d45 100644
--- a/vendor/file_contexts
+++ b/vendor/file_contexts
@@ -100,6 +100,7 @@
/(vendor|system/vendor)/bin/hw/android\.hardware\.thermal-service\.example u:object_r:hal_thermal_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.tv\.cec@1\.[01]-service u:object_r:hal_tv_cec_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.tv\.cec-service u:object_r:hal_tv_hdmi_cec_default_exec:s0
+/(vendor|system/vendor)/bin/hw/android\.hardware\.tv\.earc-service u:object_r:hal_tv_earc_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.tv\.hdmi-service u:object_r:hal_tv_hdmi_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.tv\.input@1\.0-service u:object_r:hal_tv_input_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.tv\.input-service\.example u:object_r:hal_tv_input_default_exec:s0
diff --git a/vendor/hal_tv_earc_default.te b/vendor/hal_tv_earc_default.te
new file mode 100644
index 0000000..0f5814a
--- /dev/null
+++ b/vendor/hal_tv_earc_default.te
@@ -0,0 +1,5 @@
+type hal_tv_earc_default, domain;
+hal_server_domain(hal_tv_earc_default, hal_tv_earc)
+
+type hal_tv_earc_default_exec, exec_type, vendor_file_type, file_type;
+init_daemon_domain(hal_tv_earc_default)