Merge "Updating Routing and subscription state to support subscription to layer from specific publisher"
diff --git a/car-lib/src/android/car/media/CarAudioManager.java b/car-lib/src/android/car/media/CarAudioManager.java
index cf7ce1f..1c1d718 100644
--- a/car-lib/src/android/car/media/CarAudioManager.java
+++ b/car-lib/src/android/car/media/CarAudioManager.java
@@ -36,7 +36,7 @@
 import java.lang.ref.WeakReference;
 
 /**
- * APIs for handling car specific audio stuffs.
+ * APIs for handling car specific audio stuff.
  */
 public final class CarAudioManager implements CarManagerBase {
 
diff --git a/car-lib/src/android/car/media/ICarAudio.aidl b/car-lib/src/android/car/media/ICarAudio.aidl
index f43a378..6d9b3ce 100644
--- a/car-lib/src/android/car/media/ICarAudio.aidl
+++ b/car-lib/src/android/car/media/ICarAudio.aidl
@@ -22,7 +22,7 @@
 
 /**
  * Binder interface for {@link android.car.media.CarAudioManager}.
- * Check {@link android.car.media.CarAudioManager} APIs for expected behavior of each calls.
+ * Check {@link android.car.media.CarAudioManager} APIs for expected behavior of each call.
  *
  * @hide
  */
diff --git a/car-support-lib/Android.mk b/car-support-lib/Android.mk
index d0052e4..76f2587 100644
--- a/car-support-lib/Android.mk
+++ b/car-support-lib/Android.mk
@@ -19,7 +19,8 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-#Build prebuilt android.support.car library
+# Build prebuilt android.support.car library
+# ---------------------------------------------
 include $(CLEAR_VARS)
 
 LOCAL_AAPT_FLAGS := --auto-add-overlay
@@ -47,7 +48,36 @@
 include $(BUILD_STATIC_JAVA_LIBRARY)
 
 ifeq ($(BOARD_IS_AUTOMOTIVE), true)
- $(call dist-for-goals,dist_files,$(built_aar):android.support.car.aar)
+    $(call dist-for-goals, dist_files, $(built_aar):android.support.car.aar)
+endif
+
+# Same as above, except without proguard.
+# ---------------------------------------------
+include $(CLEAR_VARS)
+
+LOCAL_AAPT_FLAGS := --auto-add-overlay
+LOCAL_MODULE := android.support.car-1p-prebuilt
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+# Build against the current public APIs of the SDK
+LOCAL_SDK_VERSION := current
+
+LOCAL_MANIFEST_FILE := AndroidManifest.xml
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
+LOCAL_JAVA_LIBRARIES += android.car\
+                        android-support-annotations
+# Specify 1.7 for backwards compatibility.
+# Otherwise the lib won't be usable on pre-N devices
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+
+LOCAL_PROGUARD_ENABLED := disabled
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+ifeq ($(BOARD_IS_AUTOMOTIVE), true)
+    $(call dist-for-goals, dist_files, $(built_aar):android.support.car-1p.aar)
 endif
 
 # Build support library.
diff --git a/car_product/sepolicy/evs_app.te b/car_product/sepolicy/evs_app.te
deleted file mode 100644
index 0e8881e..0000000
--- a/car_product/sepolicy/evs_app.te
+++ /dev/null
@@ -1,14 +0,0 @@
-# evs app
-type evs_app, domain;
-type evs_app_exec, exec_type, file_type;
-
-allow evs_app evs_app_exec:dir search;
-allow evs_app evs_driver:binder call;
-allow evs_app evs_mock:binder call;
-allow evs_app gpu_device:chr_file ioctl;
-allow evs_app hal_graphics_allocator_default:fd use;
-allow evs_app hal_vehicle_default:binder call;
-
-init_daemon_domain(evs_app)
-
-binder_use(evs_app);
diff --git a/car_product/sepolicy/evs_driver.te b/car_product/sepolicy/evs_driver.te
deleted file mode 100644
index 1307616..0000000
--- a/car_product/sepolicy/evs_driver.te
+++ /dev/null
@@ -1,12 +0,0 @@
-# evs_driver mock hardware driver service
-type evs_driver, domain;
-type evs_driver_exec, exec_type, file_type;
-
-allow evs_driver hwservicemanager:binder { call transfer };
-allow evs_driver hwservicemanager_prop:file { getattr open read };
-allow evs_driver device:dir { open read };
-allow evs_driver surfaceflinger:binder call;
-
-init_daemon_domain(evs_driver)
-
-binder_use(evs_driver);
diff --git a/car_product/sepolicy/evs_manager.te b/car_product/sepolicy/evs_manager.te
deleted file mode 100644
index f5c4ba8..0000000
--- a/car_product/sepolicy/evs_manager.te
+++ /dev/null
@@ -1,11 +0,0 @@
-# evs manager
-type evs_manager, domain;
-type evs_manager_exec, exec_type, file_type;
-
-allow evs_manager hwservicemanager:binder { call transfer };
-allow evs_manager hwservicemanager_prop:file { getattr open read };
-allow evs_manager evs_driver:binder call;
-
-init_daemon_domain(evs_manager)
-
-binder_use(evs_manager);
diff --git a/car_product/sepolicy/evs_mock.te b/car_product/sepolicy/evs_mock.te
deleted file mode 100644
index b89b1ba..0000000
--- a/car_product/sepolicy/evs_mock.te
+++ /dev/null
@@ -1,11 +0,0 @@
-# evs_mock mock hardware driver service
-type evs_mock, domain;
-type evs_mock_exec, exec_type, file_type;
-
-allow evs_mock hwservicemanager:binder { call transfer };
-allow evs_mock hwservicemanager_prop:file { getattr open read };
-allow evs_mock hal_graphics_allocator_default:fd use;
-
-init_daemon_domain(evs_mock)
-
-binder_use(evs_mock);
diff --git a/car_product/sepolicy/file_contexts b/car_product/sepolicy/file_contexts
index 53759c7..3705765 100644
--- a/car_product/sepolicy/file_contexts
+++ b/car_product/sepolicy/file_contexts
@@ -7,10 +7,4 @@
 /(vendor|system/vendor)/bin/hw/android\.hardware\.automotive\.vehicle@2\.0-service  u:object_r:hal_vehicle_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.automotive\.vehicle@2\.1-service  u:object_r:hal_vehicle_default_exec:s0
 
-/(vendor|system/vendor)/bin/hw/android\.hardware\.automotive\.evs@1\.0-service  u:object_r:evs_mock_exec:s0
-/system/bin/android\.hardware\.automotive\.evs@1\.0-sample   u:object_r:evs_driver_exec:s0
-/system/bin/android\.automotive\.evs\.manager@1\.0           u:object_r:evs_manager_exec:s0
-/system/bin/evs_app                                          u:object_r:evs_app_exec:s0
-/system/etc/automotive/evs(/.*)?                             u:object_r:evs_app_exec:s0
-
 ###################################
diff --git a/evs/sampleDriver/android.hardware.automotive.evs@1.0-sample.rc b/evs/sampleDriver/android.hardware.automotive.evs@1.0-sample.rc
index 81fe33a..7b11cf5 100644
--- a/evs/sampleDriver/android.hardware.automotive.evs@1.0-sample.rc
+++ b/evs/sampleDriver/android.hardware.automotive.evs@1.0-sample.rc
@@ -2,5 +2,5 @@
     class hal
     priority -20
     user graphics
-    group automotive_evs
+    group automotive_evs camera
     onrestart restart evs_manager
diff --git a/evs/sepolicy/attributes b/evs/sepolicy/attributes
new file mode 100644
index 0000000..d31005b
--- /dev/null
+++ b/evs/sepolicy/attributes
@@ -0,0 +1,4 @@
+# EVS specific attributes
+attribute hal_evs;
+attribute hal_evs_client;
+attribute hal_evs_server;
diff --git a/evs/sepolicy/evs_app.te b/evs/sepolicy/evs_app.te
new file mode 100644
index 0000000..28e71a9
--- /dev/null
+++ b/evs/sepolicy/evs_app.te
@@ -0,0 +1,22 @@
+# evs app
+type evs_app, domain;
+hal_client_domain(evs_app, hal_evs)
+hal_client_domain(evs_app, hal_vehicle)
+
+# allow init to launch processes in this context
+type evs_app_exec, exec_type, file_type;
+init_daemon_domain(evs_app)
+
+# gets access to its own files on disk
+type evs_app_files, file_type;
+allow evs_app evs_app_files:file { getattr open read };
+allow evs_app evs_app_files:dir search;
+
+# Allow use of gralloc buffers and EGL
+allow evs_app hal_graphics_allocator_default:fd use;
+allow evs_app gpu_device:chr_file ioctl;
+allow evs_app gpu_device:chr_file { getattr open read write };
+
+# Permit communication with the vehicle HAL
+# (Communcations with the rest of the EVS stack is allowed via hal_evs)
+binder_call(evs_app, hal_vehicle);
\ No newline at end of file
diff --git a/evs/sepolicy/evs_default.te b/evs/sepolicy/evs_default.te
new file mode 100644
index 0000000..c90e34b
--- /dev/null
+++ b/evs/sepolicy/evs_default.te
@@ -0,0 +1,7 @@
+# evs_mock mock hardware driver service
+type hal_evs_default, domain;
+hal_server_domain(hal_evs_default, hal_evs)
+
+# allow init to launch processes in this context
+type hal_evs_default_exec, exec_type, file_type;
+init_daemon_domain(hal_evs_default)
diff --git a/evs/sepolicy/evs_driver.te b/evs/sepolicy/evs_driver.te
new file mode 100644
index 0000000..2226dd6
--- /dev/null
+++ b/evs/sepolicy/evs_driver.te
@@ -0,0 +1,20 @@
+# evs_mock mock hardware driver service
+type hal_evs_driver, domain;
+hal_server_domain(hal_evs_driver, hal_evs)
+
+# allow init to launch processes in this context
+type hal_evs_driver_exec, exec_type, file_type;
+init_daemon_domain(hal_evs_driver)
+
+# Allow use of USB devices, gralloc buffers, and surface flinger
+allow hal_evs_driver device:dir { open read };
+allow hal_evs_driver video_device:chr_file { ioctl open read write };
+hal_client_domain(hal_evs_driver, hal_graphics_allocator);
+
+allow hal_evs_driver gpu_device:chr_file { getattr ioctl open read write };
+binder_call(hal_evs_driver, surfaceflinger);
+allow hal_evs_driver surfaceflinger_service:service_manager find;
+allow hal_evs_driver hal_graphics_composer_default:fd use;
+allow hal_evs_driver hal_graphics_allocator_default_tmpfs:file { read write };
+allow hal_evs_driver self:capability dac_override;
+allow hal_evs_driver servicemanager:binder call;
diff --git a/evs/sepolicy/evs_manager.te b/evs/sepolicy/evs_manager.te
new file mode 100644
index 0000000..70a2cda
--- /dev/null
+++ b/evs/sepolicy/evs_manager.te
@@ -0,0 +1,8 @@
+# evs manager
+type evs_manager, domain;
+hal_server_domain(evs_manager, hal_evs)
+hal_client_domain(evs_manager, hal_evs)
+
+# allow init to launch processes in this context
+type evs_manager_exec, exec_type, file_type;
+init_daemon_domain(evs_manager)
diff --git a/evs/sepolicy/file_contexts b/evs/sepolicy/file_contexts
new file mode 100644
index 0000000..097a588
--- /dev/null
+++ b/evs/sepolicy/file_contexts
@@ -0,0 +1,12 @@
+
+###################################
+# Binaries associated with the default EVS stack, plus
+# the directory which contains the configuration for the evs_app
+#
+/(vendor|system/vendor)/bin/hw/android\.hardware\.automotive\.evs@1\.0-service  u:object_r:hal_evs_default_exec:s0
+/system/bin/android\.hardware\.automotive\.evs@1\.0-sample   u:object_r:hal_evs_driver_exec:s0
+/system/bin/android\.automotive\.evs\.manager@1\.0           u:object_r:evs_manager_exec:s0
+/system/bin/evs_app                                          u:object_r:evs_app_exec:s0
+/system/etc/automotive/evs(/.*)?                             u:object_r:evs_app_files:s0
+
+###################################
diff --git a/evs/sepolicy/hal_evs.te b/evs/sepolicy/hal_evs.te
new file mode 100644
index 0000000..525f2be
--- /dev/null
+++ b/evs/sepolicy/hal_evs.te
@@ -0,0 +1,6 @@
+hwbinder_use(hal_evs_client)
+hwbinder_use(hal_evs_server)
+binder_call(hal_evs_client, hal_evs_server)
+binder_call(hal_evs_server, hal_evs_client)
+
+allow hal_evs_server hal_graphics_allocator_default:fd use;
\ No newline at end of file
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/radio/RadioTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/radio/RadioTestFragment.java
index 4198a56..912f983 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/radio/RadioTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/radio/RadioTestFragment.java
@@ -92,7 +92,7 @@
             }
             mArtist = metadata.getString(RadioMetadata.METADATA_KEY_ARTIST);
             mSong = metadata.getString(RadioMetadata.METADATA_KEY_TITLE);
-            mStation = metadata.getString(RadioMetadata.METADATA_KEY_RDS_PI);
+            mStation = metadata.getString(RadioMetadata.METADATA_KEY_RDS_PS);
             updateMessages();
         }