Merge tag 'android-security-10.0.0_r53' into int/10/fp2

Android security 10.0.0 release 53

* tag 'android-security-10.0.0_r53':

Change-Id: I2a9ee5e1b36a54743d9301e8ff04e2d6db5f85ba
diff --git a/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest.py b/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest.py
index 823bd12..9a294ab 100644
--- a/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest.py
+++ b/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest.py
@@ -20,7 +20,6 @@
 
 from vts.runners.host import asserts
 from vts.runners.host import const
-from vts.runners.host import keys
 from vts.runners.host import test_runner
 from vts.testcases.template.hal_hidl_host_test import hal_hidl_host_test
 
@@ -33,14 +32,15 @@
     Attributes:
         _arrived: boolean, the flag of onPropertyEvent received.
         onPropertyEventCalled: integer, the number of onPropertyEvent received.
-        onPropertySetCalled: integer, the number of onPropertySet received.
         onPropertySetErrorCalled: integer, the number of onPropertySetError
         received.
+        DEVICE_TMP_DIR: string, target device's tmp directory path.
     """
 
     TEST_HAL_SERVICES = {
         VEHICLE_V2_0_HAL,
     }
+    DEVICE_TMP_DIR = "/data/local/tmp"
 
     def setUpClass(self):
         """Creates a mirror and init vehicle hal."""
@@ -66,13 +66,19 @@
         asserts.assertEqual(0x00ff0000, self.vtypes.VehiclePropertyType.MASK)
         asserts.assertEqual(0x0f000000, self.vtypes.VehicleArea.MASK)
 
-    def setUp(self):
-        super(VtsHalAutomotiveVehicleV2_0HostTest, self).setUp()
         self.propToConfig = {}
         for config in self.vehicle.getAllPropConfigs():
             self.propToConfig[config['prop']] = config
         self.configList = self.propToConfig.values()
 
+    def tearDownClass(self):
+        """Performs clean-up pushed file"""
+
+        cmd_results = self.shell.Execute("rm -rf %s" % self.DEVICE_TMP_DIR)
+        if not cmd_results or any(cmd_results[const.EXIT_CODE]):
+            logging.info("Failed to remove: %s", cmd_results)
+        super(VtsHalAutomotiveVehicleV2_0HostTest, self).tearDownClass()
+
     def testListProperties(self):
         """Checks whether some PropConfigs are returned.
 
@@ -314,6 +320,12 @@
                                  vehiclePropValues)
                     self._arrived = True
 
+        def onPropertySetError(errorCode, propId, areaId):
+            logging.info(
+                "onPropertySetError, error: %d, prop: 0x%x, area: 0x%x",
+                errorCode, propId, areaId)
+            self._arrived = True
+
         for c in self.configList:
             if (c["access"] != self.vtypes.VehiclePropertyAccess.READ_WRITE or
             c["changeMode"] != self.vtypes.VehiclePropertyChangeMode.ON_CHANGE or
@@ -328,6 +340,7 @@
             callback = self.vehicle.GetHidlCallbackInterface(
                 "IVehicleCallback",
                 onPropertyEvent=onPropertyEvent,
+                onPropertySetError=onPropertySetError
             )
             subscribeOption = {
                 "propId": prop,
@@ -336,7 +349,9 @@
             }
             pbSubscribeOption = self.vtypes.Py2Pb("SubscribeOptions",
                                                   subscribeOption)
-            self.vehicle.subscribe(callback, [pbSubscribeOption])
+            statusCode = self.vehicle.subscribe(callback, [pbSubscribeOption])
+            asserts.assertEqual(statusCode, 0,
+                "Must successfully subscribe to property 0x%x" % prop)
 
             # Change value of properties
             for area in c["areaConfigs"]:
@@ -355,20 +370,20 @@
                     logging.warning("Set value failed for Property 0x%x" % prop)
                     continue
 
-                # Check PropertyEvent is received in 250ms
-                waitingTime = 0.25
+                # Check callback is received in 5 second
+                waitingTime = 5
                 checkTimes = 5
                 for _ in xrange(checkTimes):
                     if self._arrived:
                         logging.info(
-                            "PropertyEvent for Property: 0x%x is received" %
+                            "callback for Property: 0x%x is received" %
                             prop)
                         break
                     time.sleep(waitingTime/checkTimes)
 
                 if not self._arrived:
                     asserts.fail(
-                        "PropertyEvent is not received in 250ms for Property: 0x%x"
+                        "callback is not received in 5 seconds for Property: 0x%x"
                         % prop)
                 self.vehicle.unsubscribe(callback, prop)
 
@@ -441,9 +456,9 @@
         for c in self.configList:
             # Continuous properties need to have a sampling frequency.
             if c["changeMode"] == self.vtypes.VehiclePropertyChangeMode.CONTINUOUS:
-                asserts.assertLess(
-                    0.0, c["minSampleRate"],
-                    "minSampleRate should be > 0. Config list: %s" % c)
+                asserts.assertTrue(
+                     c["minSampleRate"] >= 0.0 ,
+                    "minSampleRate should be >= 0. Config list: %s" % c)
                 asserts.assertLess(
                     0.0, c["maxSampleRate"],
                     "maxSampleRate should be > 0. Config list: %s" % c)
@@ -455,6 +470,11 @@
                 # Boolean types don't have ranges
                 continue
 
+            if (c["access"] != self.vtypes.VehiclePropertyAccess.READ_WRITE and
+                c["access"] != self.vtypes.VehiclePropertyAccess.READ):
+                # Skip the test if properties are not readable.
+                continue
+
             if c["prop"] in enumProperties:
                 # This property does not use traditional min/max ranges
                 continue
@@ -530,7 +550,7 @@
             supported, val = self.getValueIfPropSupported(prop)
             if supported:
                 asserts.assertEqual(str, type(val), "prop: 0x%x" % prop)
-                asserts.assertLess(0, (len(val)), "prop: 0x%x" % prop)
+                asserts.assertTrue(0 <= (len(val)), "prop: 0x%x" % prop)
 
     def testGlobalFloatProperties(self):
         """Verifies that values of global float properties are in the correct range"""
@@ -544,7 +564,6 @@
             self.vtypes.VehicleProperty.PERF_STEERING_ANGLE : (-180, 180),  # degrees
             self.vtypes.VehicleProperty.PERF_ODOMETER : (0, 1000000),  # km
             self.vtypes.VehicleProperty.INFO_FUEL_CAPACITY : (0, 1000000),  # milliliter
-            self.vtypes.VehicleProperty.INFO_MODEL_YEAR : (1901, 2101),  # year
         }
 
         for prop, validRange in floatProperties.iteritems():
@@ -653,7 +672,8 @@
         self.assertLessOrEqual(value, rangeEnd, msg)
 
     def getPropConfig(self, propertyId):
-        return self.propToConfig[propertyId]
+        return self.propToConfig.get(propertyId)
+
 
     def isPropSupported(self, propertyId):
         return self.getPropConfig(propertyId) is not None
@@ -664,18 +684,12 @@
         This also tests an HIDL async callback.
         """
         self.onPropertyEventCalled = 0
-        self.onPropertySetCalled = 0
         self.onPropertySetErrorCalled = 0
 
         def onPropertyEvent(vehiclePropValues):
             logging.info("onPropertyEvent received: %s", vehiclePropValues)
             self.onPropertyEventCalled += 1
 
-        def onPropertySet(vehiclePropValue):
-            logging.info("onPropertySet notification received: %s",
-                         vehiclePropValue)
-            self.onPropertySetCalled += 1
-
         def onPropertySetError(erroCode, propId, areaId):
             logging.info(
                 "onPropertySetError, error: %d, prop: 0x%x, area: 0x%x",
@@ -703,28 +717,27 @@
             callback = self.vehicle.GetHidlCallbackInterface(
                 "IVehicleCallback",
                 onPropertyEvent=onPropertyEvent,
-                onPropertySet=onPropertySet,
                 onPropertySetError=onPropertySetError)
 
             subscribeOptions = {
                 "propId": self.vtypes.VehicleProperty.ENGINE_OIL_TEMP,
-                "sampleRate": 10.0,  # Hz
+                "sampleRate": 1.0,  # Hz
                 "flags": self.vtypes.SubscribeFlags.EVENTS_FROM_CAR,
             }
             pbSubscribeOptions = self.vtypes.Py2Pb("SubscribeOptions",
                                                    subscribeOptions)
 
-            self.vehicle.subscribe(callback, [pbSubscribeOptions])
+            statusCode = self.vehicle.subscribe(callback, [pbSubscribeOptions])
+            if statusCode != 0:
+                asserts.fail("Can not register ENGINE_OIL_TEMP")
+
             for _ in range(5):
                 if (self.onPropertyEventCalled > 0
-                        or self.onPropertySetCalled > 0
                         or self.onPropertySetErrorCalled > 0):
                     self.vehicle.unsubscribe(
                         callback, self.vtypes.VehicleProperty.ENGINE_OIL_TEMP)
                     return
                 time.sleep(1)
-            self.vehicle.unsubscribe(
-                callback, self.vtypes.VehicleProperty.ENGINE_OIL_TEMP)
             asserts.fail("Callback not called in 5 seconds.")
 
     def getDiagnosticSupportInfo(self):
diff --git a/biometrics/face/V1_0/target/AndroidTest.xml b/biometrics/face/V1_0/target/AndroidTest.xml
index 3776998..5f6a0cd 100644
--- a/biometrics/face/V1_0/target/AndroidTest.xml
+++ b/biometrics/face/V1_0/target/AndroidTest.xml
@@ -24,7 +24,7 @@
         <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalBiometricsFaceV1_0TargetTest/VtsHalBiometricsFaceV1_0TargetTest"/>
         <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalBiometricsFaceV1_0TargetTest/VtsHalBiometricsFaceV1_0TargetTest"/>
         <option name="binary-test-type" value="hal_hidl_gtest"/>
-        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-disable-framework" value="false"/>
         <option name="test-timeout" value="15m"/>
     </test>
 </configuration>
diff --git a/media/c2/V1_0/host/AndroidTest.xml b/media/c2/V1_0/host/AndroidTest.xml
index d1b75e2..d14f061 100644
--- a/media/c2/V1_0/host/AndroidTest.xml
+++ b/media/c2/V1_0/host/AndroidTest.xml
@@ -71,64 +71,64 @@
         <option name="push" value="DATA/lib/android.hardware.media.c2@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.media.c2@1.0-vts.driver.so"/>
         <option name="push" value="DATA/lib64/android.hardware.media.c2@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.media.c2@1.0-vts.driver.so"/>
 
-        <option name="push" value="DATA/media/c2/res/bbb_352x288_420p_30fps_32frames.yuv->/sdcard/media/bbb_352x288_420p_30fps_32frames.yuv"/>
-        <option name="push" value="DATA/media/c2/res/bbb_aac_stereo_128kbps_48000hz.aac->/sdcard/media/bbb_aac_stereo_128kbps_48000hz.aac"/>
-        <option name="push" value="DATA/media/c2/res/bbb_aac_stereo_128kbps_48000hz.info->/sdcard/media/bbb_aac_stereo_128kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_aac_stereo_128kbps_48000hz_multi_frame.info->/sdcard/media/bbb_aac_stereo_128kbps_48000hz_multi_frame.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_amrwb_1ch_14kbps_16000hz.amrwb->/sdcard/media/bbb_amrwb_1ch_14kbps_16000hz.amrwb"/>
-        <option name="push" value="DATA/media/c2/res/bbb_amrwb_1ch_14kbps_16000hz.info->/sdcard/media/bbb_amrwb_1ch_14kbps_16000hz.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_amrwb_1ch_14kbps_16000hz_multi_frame.info->/sdcard/media/bbb_amrwb_1ch_14kbps_16000hz_multi_frame.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_av1_176_144.av1->/sdcard/media/bbb_av1_176_144.av1"/>
-        <option name="push" value="DATA/media/c2/res/bbb_av1_176_144.info->/sdcard/media/bbb_av1_176_144.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_av1_640_360.av1->/sdcard/media/bbb_av1_640_360.av1"/>
-        <option name="push" value="DATA/media/c2/res/bbb_av1_640_360.info->/sdcard/media/bbb_av1_640_360.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_avc_176x144_300kbps_60fps.h264->/sdcard/media/bbb_avc_176x144_300kbps_60fps.h264"/>
-        <option name="push" value="DATA/media/c2/res/bbb_avc_176x144_300kbps_60fps.info->/sdcard/media/bbb_avc_176x144_300kbps_60fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_avc_640x360_768kbps_30fps.h264->/sdcard/media/bbb_avc_640x360_768kbps_30fps.h264"/>
-        <option name="push" value="DATA/media/c2/res/bbb_avc_640x360_768kbps_30fps.info->/sdcard/media/bbb_avc_640x360_768kbps_30fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_flac_stereo_680kbps_48000hz.flac->/sdcard/media/bbb_flac_stereo_680kbps_48000hz.flac"/>
-        <option name="push" value="DATA/media/c2/res/bbb_flac_stereo_680kbps_48000hz.info->/sdcard/media/bbb_flac_stereo_680kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_g711alaw_1ch_8khz.info->/sdcard/media/bbb_g711alaw_1ch_8khz.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_g711alaw_1ch_8khz.raw->/sdcard/media/bbb_g711alaw_1ch_8khz.raw"/>
-        <option name="push" value="DATA/media/c2/res/bbb_g711mulaw_1ch_8khz.info->/sdcard/media/bbb_g711mulaw_1ch_8khz.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_g711mulaw_1ch_8khz.raw->/sdcard/media/bbb_g711mulaw_1ch_8khz.raw"/>
-        <option name="push" value="DATA/media/c2/res/bbb_gsm_1ch_8khz_13kbps.info->/sdcard/media/bbb_gsm_1ch_8khz_13kbps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_gsm_1ch_8khz_13kbps.raw->/sdcard/media/bbb_gsm_1ch_8khz_13kbps.raw"/>
-        <option name="push" value="DATA/media/c2/res/bbb_h263_352x288_300kbps_12fps.h263->/sdcard/media/bbb_h263_352x288_300kbps_12fps.h263"/>
-        <option name="push" value="DATA/media/c2/res/bbb_h263_352x288_300kbps_12fps.info->/sdcard/media/bbb_h263_352x288_300kbps_12fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_hevc_176x144_176kbps_60fps.hevc->/sdcard/media/bbb_hevc_176x144_176kbps_60fps.hevc"/>
-        <option name="push" value="DATA/media/c2/res/bbb_hevc_176x144_176kbps_60fps.info->/sdcard/media/bbb_hevc_176x144_176kbps_60fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_hevc_640x360_1600kbps_30fps.hevc->/sdcard/media/bbb_hevc_640x360_1600kbps_30fps.hevc"/>
-        <option name="push" value="DATA/media/c2/res/bbb_hevc_640x360_1600kbps_30fps.info->/sdcard/media/bbb_hevc_640x360_1600kbps_30fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mp3_stereo_192kbps_48000hz.info->/sdcard/media/bbb_mp3_stereo_192kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mp3_stereo_192kbps_48000hz.mp3->/sdcard/media/bbb_mp3_stereo_192kbps_48000hz.mp3"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mp3_stereo_192kbps_48000hz_multi_frame.info->/sdcard/media/bbb_mp3_stereo_192kbps_48000hz_multi_frame.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mpeg2_176x144_105kbps_25fps.info->/sdcard/media/bbb_mpeg2_176x144_105kbps_25fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mpeg2_176x144_105kbps_25fps.m2v->/sdcard/media/bbb_mpeg2_176x144_105kbps_25fps.m2v"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mpeg2_352x288_1mbps_60fps.info->/sdcard/media/bbb_mpeg2_352x288_1mbps_60fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mpeg2_352x288_1mbps_60fps.m2v->/sdcard/media/bbb_mpeg2_352x288_1mbps_60fps.m2v"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mpeg4_352x288_512kbps_30fps.info->/sdcard/media/bbb_mpeg4_352x288_512kbps_30fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_mpeg4_352x288_512kbps_30fps.m4v->/sdcard/media/bbb_mpeg4_352x288_512kbps_30fps.m4v"/>
-        <option name="push" value="DATA/media/c2/res/bbb_opus_stereo_128kbps_48000hz.info->/sdcard/media/bbb_opus_stereo_128kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_opus_stereo_128kbps_48000hz.opus->/sdcard/media/bbb_opus_stereo_128kbps_48000hz.opus"/>
-        <option name="push" value="DATA/media/c2/res/bbb_raw_1ch_16khz_s16le.raw->/sdcard/media/bbb_raw_1ch_16khz_s16le.raw"/>
-        <option name="push" value="DATA/media/c2/res/bbb_raw_1ch_8khz_s16le.raw->/sdcard/media/bbb_raw_1ch_8khz_s16le.raw"/>
-        <option name="push" value="DATA/media/c2/res/bbb_raw_1ch_8khz_s32le.info->/sdcard/media/bbb_raw_1ch_8khz_s32le.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_raw_1ch_8khz_s32le.raw->/sdcard/media/bbb_raw_1ch_8khz_s32le.raw"/>
-        <option name="push" value="DATA/media/c2/res/bbb_raw_2ch_48khz_s16le.raw->/sdcard/media/bbb_raw_2ch_48khz_s16le.raw"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vorbis_stereo_128kbps_48000hz.info->/sdcard/media/bbb_vorbis_stereo_128kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vorbis_stereo_128kbps_48000hz.vorbis->/sdcard/media/bbb_vorbis_stereo_128kbps_48000hz.vorbis"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vp8_176x144_240kbps_60fps.info->/sdcard/media/bbb_vp8_176x144_240kbps_60fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vp8_176x144_240kbps_60fps.vp8->/sdcard/media/bbb_vp8_176x144_240kbps_60fps.vp8"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vp8_640x360_2mbps_30fps.info->/sdcard/media/bbb_vp8_640x360_2mbps_30fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vp8_640x360_2mbps_30fps.vp8->/sdcard/media/bbb_vp8_640x360_2mbps_30fps.vp8"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vp9_176x144_285kbps_60fps.info->/sdcard/media/bbb_vp9_176x144_285kbps_60fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vp9_176x144_285kbps_60fps.vp9->/sdcard/media/bbb_vp9_176x144_285kbps_60fps.vp9"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vp9_640x360_1600kbps_30fps.info->/sdcard/media/bbb_vp9_640x360_1600kbps_30fps.info"/>
-        <option name="push" value="DATA/media/c2/res/bbb_vp9_640x360_1600kbps_30fps.vp9->/sdcard/media/bbb_vp9_640x360_1600kbps_30fps.vp9"/>
-        <option name="push" value="DATA/media/c2/res/sine_amrnb_1ch_12kbps_8000hz.amrnb->/sdcard/media/sine_amrnb_1ch_12kbps_8000hz.amrnb"/>
-        <option name="push" value="DATA/media/c2/res/sine_amrnb_1ch_12kbps_8000hz.info->/sdcard/media/sine_amrnb_1ch_12kbps_8000hz.info"/>
-        <option name="push" value="DATA/media/c2/res/sine_amrnb_1ch_12kbps_8000hz_multi_frame.info->/sdcard/media/sine_amrnb_1ch_12kbps_8000hz_multi_frame.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_352x288_420p_30fps_32frames.yuv->/data/local/tmp/media/bbb_352x288_420p_30fps_32frames.yuv"/>
+        <option name="push" value="DATA/media/c2/res/bbb_aac_stereo_128kbps_48000hz.aac->/data/local/tmp/media/bbb_aac_stereo_128kbps_48000hz.aac"/>
+        <option name="push" value="DATA/media/c2/res/bbb_aac_stereo_128kbps_48000hz.info->/data/local/tmp/media/bbb_aac_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_aac_stereo_128kbps_48000hz_multi_frame.info->/data/local/tmp/media/bbb_aac_stereo_128kbps_48000hz_multi_frame.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_amrwb_1ch_14kbps_16000hz.amrwb->/data/local/tmp/media/bbb_amrwb_1ch_14kbps_16000hz.amrwb"/>
+        <option name="push" value="DATA/media/c2/res/bbb_amrwb_1ch_14kbps_16000hz.info->/data/local/tmp/media/bbb_amrwb_1ch_14kbps_16000hz.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_amrwb_1ch_14kbps_16000hz_multi_frame.info->/data/local/tmp/media/bbb_amrwb_1ch_14kbps_16000hz_multi_frame.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_av1_176_144.av1->/data/local/tmp/media/bbb_av1_176_144.av1"/>
+        <option name="push" value="DATA/media/c2/res/bbb_av1_176_144.info->/data/local/tmp/media/bbb_av1_176_144.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_av1_640_360.av1->/data/local/tmp/media/bbb_av1_640_360.av1"/>
+        <option name="push" value="DATA/media/c2/res/bbb_av1_640_360.info->/data/local/tmp/media/bbb_av1_640_360.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_avc_176x144_300kbps_60fps.h264->/data/local/tmp/media/bbb_avc_176x144_300kbps_60fps.h264"/>
+        <option name="push" value="DATA/media/c2/res/bbb_avc_176x144_300kbps_60fps.info->/data/local/tmp/media/bbb_avc_176x144_300kbps_60fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_avc_640x360_768kbps_30fps.h264->/data/local/tmp/media/bbb_avc_640x360_768kbps_30fps.h264"/>
+        <option name="push" value="DATA/media/c2/res/bbb_avc_640x360_768kbps_30fps.info->/data/local/tmp/media/bbb_avc_640x360_768kbps_30fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_flac_stereo_680kbps_48000hz.flac->/data/local/tmp/media/bbb_flac_stereo_680kbps_48000hz.flac"/>
+        <option name="push" value="DATA/media/c2/res/bbb_flac_stereo_680kbps_48000hz.info->/data/local/tmp/media/bbb_flac_stereo_680kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_g711alaw_1ch_8khz.info->/data/local/tmp/media/bbb_g711alaw_1ch_8khz.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_g711alaw_1ch_8khz.raw->/data/local/tmp/media/bbb_g711alaw_1ch_8khz.raw"/>
+        <option name="push" value="DATA/media/c2/res/bbb_g711mulaw_1ch_8khz.info->/data/local/tmp/media/bbb_g711mulaw_1ch_8khz.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_g711mulaw_1ch_8khz.raw->/data/local/tmp/media/bbb_g711mulaw_1ch_8khz.raw"/>
+        <option name="push" value="DATA/media/c2/res/bbb_gsm_1ch_8khz_13kbps.info->/data/local/tmp/media/bbb_gsm_1ch_8khz_13kbps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_gsm_1ch_8khz_13kbps.raw->/data/local/tmp/media/bbb_gsm_1ch_8khz_13kbps.raw"/>
+        <option name="push" value="DATA/media/c2/res/bbb_h263_352x288_300kbps_12fps.h263->/data/local/tmp/media/bbb_h263_352x288_300kbps_12fps.h263"/>
+        <option name="push" value="DATA/media/c2/res/bbb_h263_352x288_300kbps_12fps.info->/data/local/tmp/media/bbb_h263_352x288_300kbps_12fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_hevc_176x144_176kbps_60fps.hevc->/data/local/tmp/media/bbb_hevc_176x144_176kbps_60fps.hevc"/>
+        <option name="push" value="DATA/media/c2/res/bbb_hevc_176x144_176kbps_60fps.info->/data/local/tmp/media/bbb_hevc_176x144_176kbps_60fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_hevc_640x360_1600kbps_30fps.hevc->/data/local/tmp/media/bbb_hevc_640x360_1600kbps_30fps.hevc"/>
+        <option name="push" value="DATA/media/c2/res/bbb_hevc_640x360_1600kbps_30fps.info->/data/local/tmp/media/bbb_hevc_640x360_1600kbps_30fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mp3_stereo_192kbps_48000hz.info->/data/local/tmp/media/bbb_mp3_stereo_192kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mp3_stereo_192kbps_48000hz.mp3->/data/local/tmp/media/bbb_mp3_stereo_192kbps_48000hz.mp3"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mp3_stereo_192kbps_48000hz_multi_frame.info->/data/local/tmp/media/bbb_mp3_stereo_192kbps_48000hz_multi_frame.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mpeg2_176x144_105kbps_25fps.info->/data/local/tmp/media/bbb_mpeg2_176x144_105kbps_25fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mpeg2_176x144_105kbps_25fps.m2v->/data/local/tmp/media/bbb_mpeg2_176x144_105kbps_25fps.m2v"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mpeg2_352x288_1mbps_60fps.info->/data/local/tmp/media/bbb_mpeg2_352x288_1mbps_60fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mpeg2_352x288_1mbps_60fps.m2v->/data/local/tmp/media/bbb_mpeg2_352x288_1mbps_60fps.m2v"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mpeg4_352x288_512kbps_30fps.info->/data/local/tmp/media/bbb_mpeg4_352x288_512kbps_30fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_mpeg4_352x288_512kbps_30fps.m4v->/data/local/tmp/media/bbb_mpeg4_352x288_512kbps_30fps.m4v"/>
+        <option name="push" value="DATA/media/c2/res/bbb_opus_stereo_128kbps_48000hz.info->/data/local/tmp/media/bbb_opus_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_opus_stereo_128kbps_48000hz.opus->/data/local/tmp/media/bbb_opus_stereo_128kbps_48000hz.opus"/>
+        <option name="push" value="DATA/media/c2/res/bbb_raw_1ch_16khz_s16le.raw->/data/local/tmp/media/bbb_raw_1ch_16khz_s16le.raw"/>
+        <option name="push" value="DATA/media/c2/res/bbb_raw_1ch_8khz_s16le.raw->/data/local/tmp/media/bbb_raw_1ch_8khz_s16le.raw"/>
+        <option name="push" value="DATA/media/c2/res/bbb_raw_1ch_8khz_s32le.info->/data/local/tmp/media/bbb_raw_1ch_8khz_s32le.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_raw_1ch_8khz_s32le.raw->/data/local/tmp/media/bbb_raw_1ch_8khz_s32le.raw"/>
+        <option name="push" value="DATA/media/c2/res/bbb_raw_2ch_48khz_s16le.raw->/data/local/tmp/media/bbb_raw_2ch_48khz_s16le.raw"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vorbis_stereo_128kbps_48000hz.info->/data/local/tmp/media/bbb_vorbis_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vorbis_stereo_128kbps_48000hz.vorbis->/data/local/tmp/media/bbb_vorbis_stereo_128kbps_48000hz.vorbis"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vp8_176x144_240kbps_60fps.info->/data/local/tmp/media/bbb_vp8_176x144_240kbps_60fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vp8_176x144_240kbps_60fps.vp8->/data/local/tmp/media/bbb_vp8_176x144_240kbps_60fps.vp8"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vp8_640x360_2mbps_30fps.info->/data/local/tmp/media/bbb_vp8_640x360_2mbps_30fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vp8_640x360_2mbps_30fps.vp8->/data/local/tmp/media/bbb_vp8_640x360_2mbps_30fps.vp8"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vp9_176x144_285kbps_60fps.info->/data/local/tmp/media/bbb_vp9_176x144_285kbps_60fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vp9_176x144_285kbps_60fps.vp9->/data/local/tmp/media/bbb_vp9_176x144_285kbps_60fps.vp9"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vp9_640x360_1600kbps_30fps.info->/data/local/tmp/media/bbb_vp9_640x360_1600kbps_30fps.info"/>
+        <option name="push" value="DATA/media/c2/res/bbb_vp9_640x360_1600kbps_30fps.vp9->/data/local/tmp/media/bbb_vp9_640x360_1600kbps_30fps.vp9"/>
+        <option name="push" value="DATA/media/c2/res/sine_amrnb_1ch_12kbps_8000hz.amrnb->/data/local/tmp/media/sine_amrnb_1ch_12kbps_8000hz.amrnb"/>
+        <option name="push" value="DATA/media/c2/res/sine_amrnb_1ch_12kbps_8000hz.info->/data/local/tmp/media/sine_amrnb_1ch_12kbps_8000hz.info"/>
+        <option name="push" value="DATA/media/c2/res/sine_amrnb_1ch_12kbps_8000hz_multi_frame.info->/data/local/tmp/media/sine_amrnb_1ch_12kbps_8000hz_multi_frame.info"/>
 
     </target_preparer>
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
diff --git a/media/c2/V1_0/host/VtsHalMediaC2V1_0HostTest.py b/media/c2/V1_0/host/VtsHalMediaC2V1_0HostTest.py
index d2c1ff5..22620d7 100644
--- a/media/c2/V1_0/host/VtsHalMediaC2V1_0HostTest.py
+++ b/media/c2/V1_0/host/VtsHalMediaC2V1_0HostTest.py
@@ -18,6 +18,7 @@
 import copy
 import logging
 import time
+import argparse
 
 from vts.runners.host import asserts
 from vts.runners.host import keys
@@ -91,9 +92,19 @@
                                                                         tag)
         test_cases = []
 
+        instance_parser = argparse.ArgumentParser()
+        instance_parser.add_argument('--hal_service_instance', type=str)
+
         for gtest_case in gtest_cases:
             test_suite = gtest_case.full_name
+            args = instance_parser.parse_args(gtest_case.args.split())
+            if args.hal_service_instance:
+                instance_name = args.hal_service_instance[args.hal_service_instance.rfind('/')+1:]
+            else:
+                continue
             for component in self.components:
+                if instance_name != component['owner']:
+                    continue
                 if self.AUDIO_ENC_TEST in test_suite and \
                     (component['domain'] != 2 or component['kind'] != 2):
                     continue
diff --git a/media/omx/V1_0/host/AndroidTest.xml b/media/omx/V1_0/host/AndroidTest.xml
index bdc9096..f6e9084 100644
--- a/media/omx/V1_0/host/AndroidTest.xml
+++ b/media/omx/V1_0/host/AndroidTest.xml
@@ -36,56 +36,56 @@
         <option name="push" value="DATA/lib64/android.hardware.media@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.media@1.0-vts.driver.so"/>
         <option name="push" value="DATA/lib/android.hardware.media.omx@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.media.omx@1.0-vts.driver.so"/>
         <option name="push" value="DATA/lib64/android.hardware.media.omx@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.media.omx@1.0-vts.driver.so"/>
-        <option name="push" value="DATA/media/res/bbb_352x288_420p_30fps_32frames.yuv->/sdcard/media/bbb_352x288_420p_30fps_32frames.yuv"/>
-        <option name="push" value="DATA/media/res/bbb_avc_176x144_300kbps_60fps.h264->/sdcard/media/bbb_avc_176x144_300kbps_60fps.h264"/>
-        <option name="push" value="DATA/media/res/bbb_avc_176x144_300kbps_60fps.info->/sdcard/media/bbb_avc_176x144_300kbps_60fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_avc_640x360_768kbps_30fps.h264->/sdcard/media/bbb_avc_640x360_768kbps_30fps.h264"/>
-        <option name="push" value="DATA/media/res/bbb_avc_640x360_768kbps_30fps.info->/sdcard/media/bbb_avc_640x360_768kbps_30fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_mp3_stereo_192kbps_48000hz.info->/sdcard/media/bbb_mp3_stereo_192kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/res/bbb_mp3_stereo_192kbps_48000hz.mp3->/sdcard/media/bbb_mp3_stereo_192kbps_48000hz.mp3"/>
-        <option name="push" value="DATA/media/res/bbb_flac_stereo_680kbps_48000hz.flac->/sdcard/media/bbb_flac_stereo_680kbps_48000hz.flac"/>
-        <option name="push" value="DATA/media/res/bbb_flac_stereo_680kbps_48000hz.info->/sdcard/media/bbb_flac_stereo_680kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/res/bbb_raw_1ch_16khz_s16le.raw->/sdcard/media/bbb_raw_1ch_16khz_s16le.raw"/>
-        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s16le.raw->/sdcard/media/bbb_raw_1ch_8khz_s16le.raw"/>
-        <option name="push" value="DATA/media/res/bbb_raw_2ch_48khz_s16le.raw->/sdcard/media/bbb_raw_2ch_48khz_s16le.raw"/>
-        <option name="push" value="DATA/media/res/sine_amrnb_1ch_12kbps_8000hz.amrnb->/sdcard/media/sine_amrnb_1ch_12kbps_8000hz.amrnb"/>
-        <option name="push" value="DATA/media/res/sine_amrnb_1ch_12kbps_8000hz.info->/sdcard/media/sine_amrnb_1ch_12kbps_8000hz.info"/>
-        <option name="push" value="DATA/media/res/bbb_h263_352x288_300kbps_12fps.h263->/sdcard/media/bbb_h263_352x288_300kbps_12fps.h263"/>
-        <option name="push" value="DATA/media/res/bbb_h263_352x288_300kbps_12fps.info->/sdcard/media/bbb_h263_352x288_300kbps_12fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_hevc_176x144_176kbps_60fps.hevc->/sdcard/media/bbb_hevc_176x144_176kbps_60fps.hevc"/>
-        <option name="push" value="DATA/media/res/bbb_hevc_176x144_176kbps_60fps.info->/sdcard/media/bbb_hevc_176x144_176kbps_60fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_hevc_640x360_1600kbps_30fps.hevc->/sdcard/media/bbb_hevc_640x360_1600kbps_30fps.hevc"/>
-        <option name="push" value="DATA/media/res/bbb_hevc_640x360_1600kbps_30fps.info->/sdcard/media/bbb_hevc_640x360_1600kbps_30fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_mpeg2_176x144_105kbps_25fps.m2v->/sdcard/media/bbb_mpeg2_176x144_105kbps_25fps.m2v"/>
-        <option name="push" value="DATA/media/res/bbb_mpeg2_176x144_105kbps_25fps.info->/sdcard/media/bbb_mpeg2_176x144_105kbps_25fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_mpeg2_352x288_1mbps_60fps.m2v->/sdcard/media/bbb_mpeg2_352x288_1mbps_60fps.m2v"/>
-        <option name="push" value="DATA/media/res/bbb_mpeg2_352x288_1mbps_60fps.info->/sdcard/media/bbb_mpeg2_352x288_1mbps_60fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_mpeg4_352x288_512kbps_30fps.m4v->/sdcard/media/bbb_mpeg4_352x288_512kbps_30fps.m4v"/>
-        <option name="push" value="DATA/media/res/bbb_mpeg4_352x288_512kbps_30fps.info->/sdcard/media/bbb_mpeg4_352x288_512kbps_30fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_vp8_176x144_240kbps_60fps.vp8->/sdcard/media/bbb_vp8_176x144_240kbps_60fps.vp8"/>
-        <option name="push" value="DATA/media/res/bbb_vp8_176x144_240kbps_60fps.info->/sdcard/media/bbb_vp8_176x144_240kbps_60fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_vp8_640x360_2mbps_30fps.vp8->/sdcard/media/bbb_vp8_640x360_2mbps_30fps.vp8"/>
-        <option name="push" value="DATA/media/res/bbb_vp8_640x360_2mbps_30fps.info->/sdcard/media/bbb_vp8_640x360_2mbps_30fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_vp9_176x144_285kbps_60fps.vp9->/sdcard/media/bbb_vp9_176x144_285kbps_60fps.vp9"/>
-        <option name="push" value="DATA/media/res/bbb_vp9_176x144_285kbps_60fps.info->/sdcard/media/bbb_vp9_176x144_285kbps_60fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_vp9_640x360_1600kbps_30fps.vp9->/sdcard/media/bbb_vp9_640x360_1600kbps_30fps.vp9"/>
-        <option name="push" value="DATA/media/res/bbb_vp9_640x360_1600kbps_30fps.info->/sdcard/media/bbb_vp9_640x360_1600kbps_30fps.info"/>
-        <option name="push" value="DATA/media/res/bbb_aac_stereo_128kbps_48000hz.aac->/sdcard/media/bbb_aac_stereo_128kbps_48000hz.aac"/>
-        <option name="push" value="DATA/media/res/bbb_aac_stereo_128kbps_48000hz.info->/sdcard/media/bbb_aac_stereo_128kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/res/bbb_amrwb_1ch_14kbps_16000hz.amrwb->/sdcard/media/bbb_amrwb_1ch_14kbps_16000hz.amrwb"/>
-        <option name="push" value="DATA/media/res/bbb_amrwb_1ch_14kbps_16000hz.info->/sdcard/media/bbb_amrwb_1ch_14kbps_16000hz.info"/>
-        <option name="push" value="DATA/media/res/bbb_opus_stereo_128kbps_48000hz.opus->/sdcard/media/bbb_opus_stereo_128kbps_48000hz.opus"/>
-        <option name="push" value="DATA/media/res/bbb_opus_stereo_128kbps_48000hz.info->/sdcard/media/bbb_opus_stereo_128kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/res/bbb_vorbis_stereo_128kbps_48000hz.vorbis->/sdcard/media/bbb_vorbis_stereo_128kbps_48000hz.vorbis"/>
-        <option name="push" value="DATA/media/res/bbb_vorbis_stereo_128kbps_48000hz.info->/sdcard/media/bbb_vorbis_stereo_128kbps_48000hz.info"/>
-        <option name="push" value="DATA/media/res/bbb_g711alaw_1ch_8khz.raw->/sdcard/media/bbb_g711alaw_1ch_8khz.raw"/>
-        <option name="push" value="DATA/media/res/bbb_g711alaw_1ch_8khz.info->/sdcard/media/bbb_g711alaw_1ch_8khz.info"/>
-        <option name="push" value="DATA/media/res/bbb_g711mulaw_1ch_8khz.raw->/sdcard/media/bbb_g711mulaw_1ch_8khz.raw"/>
-        <option name="push" value="DATA/media/res/bbb_g711mulaw_1ch_8khz.info->/sdcard/media/bbb_g711mulaw_1ch_8khz.info"/>
-        <option name="push" value="DATA/media/res/bbb_gsm_1ch_8khz_13kbps.raw->/sdcard/media/bbb_gsm_1ch_8khz_13kbps.raw"/>
-        <option name="push" value="DATA/media/res/bbb_gsm_1ch_8khz_13kbps.info->/sdcard/media/bbb_gsm_1ch_8khz_13kbps.info"/>
-        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s32le.raw->/sdcard/media/bbb_raw_1ch_8khz_s32le.raw"/>
-        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s32le.info->/sdcard/media/bbb_raw_1ch_8khz_s32le.info"/>
+        <option name="push" value="DATA/media/res/bbb_352x288_420p_30fps_32frames.yuv->/data/local/tmp/media/bbb_352x288_420p_30fps_32frames.yuv"/>
+        <option name="push" value="DATA/media/res/bbb_avc_176x144_300kbps_60fps.h264->/data/local/tmp/media/bbb_avc_176x144_300kbps_60fps.h264"/>
+        <option name="push" value="DATA/media/res/bbb_avc_176x144_300kbps_60fps.info->/data/local/tmp/media/bbb_avc_176x144_300kbps_60fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_avc_640x360_768kbps_30fps.h264->/data/local/tmp/media/bbb_avc_640x360_768kbps_30fps.h264"/>
+        <option name="push" value="DATA/media/res/bbb_avc_640x360_768kbps_30fps.info->/data/local/tmp/media/bbb_avc_640x360_768kbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_mp3_stereo_192kbps_48000hz.info->/data/local/tmp/media/bbb_mp3_stereo_192kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_mp3_stereo_192kbps_48000hz.mp3->/data/local/tmp/media/bbb_mp3_stereo_192kbps_48000hz.mp3"/>
+        <option name="push" value="DATA/media/res/bbb_flac_stereo_680kbps_48000hz.flac->/data/local/tmp/media/bbb_flac_stereo_680kbps_48000hz.flac"/>
+        <option name="push" value="DATA/media/res/bbb_flac_stereo_680kbps_48000hz.info->/data/local/tmp/media/bbb_flac_stereo_680kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_raw_1ch_16khz_s16le.raw->/data/local/tmp/media/bbb_raw_1ch_16khz_s16le.raw"/>
+        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s16le.raw->/data/local/tmp/media/bbb_raw_1ch_8khz_s16le.raw"/>
+        <option name="push" value="DATA/media/res/bbb_raw_2ch_48khz_s16le.raw->/data/local/tmp/media/bbb_raw_2ch_48khz_s16le.raw"/>
+        <option name="push" value="DATA/media/res/sine_amrnb_1ch_12kbps_8000hz.amrnb->/data/local/tmp/media/sine_amrnb_1ch_12kbps_8000hz.amrnb"/>
+        <option name="push" value="DATA/media/res/sine_amrnb_1ch_12kbps_8000hz.info->/data/local/tmp/media/sine_amrnb_1ch_12kbps_8000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_h263_352x288_300kbps_12fps.h263->/data/local/tmp/media/bbb_h263_352x288_300kbps_12fps.h263"/>
+        <option name="push" value="DATA/media/res/bbb_h263_352x288_300kbps_12fps.info->/data/local/tmp/media/bbb_h263_352x288_300kbps_12fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_hevc_176x144_176kbps_60fps.hevc->/data/local/tmp/media/bbb_hevc_176x144_176kbps_60fps.hevc"/>
+        <option name="push" value="DATA/media/res/bbb_hevc_176x144_176kbps_60fps.info->/data/local/tmp/media/bbb_hevc_176x144_176kbps_60fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_hevc_640x360_1600kbps_30fps.hevc->/data/local/tmp/media/bbb_hevc_640x360_1600kbps_30fps.hevc"/>
+        <option name="push" value="DATA/media/res/bbb_hevc_640x360_1600kbps_30fps.info->/data/local/tmp/media/bbb_hevc_640x360_1600kbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg2_176x144_105kbps_25fps.m2v->/data/local/tmp/media/bbb_mpeg2_176x144_105kbps_25fps.m2v"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg2_176x144_105kbps_25fps.info->/data/local/tmp/media/bbb_mpeg2_176x144_105kbps_25fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg2_352x288_1mbps_60fps.m2v->/data/local/tmp/media/bbb_mpeg2_352x288_1mbps_60fps.m2v"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg2_352x288_1mbps_60fps.info->/data/local/tmp/media/bbb_mpeg2_352x288_1mbps_60fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg4_352x288_512kbps_30fps.m4v->/data/local/tmp/media/bbb_mpeg4_352x288_512kbps_30fps.m4v"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg4_352x288_512kbps_30fps.info->/data/local/tmp/media/bbb_mpeg4_352x288_512kbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_vp8_176x144_240kbps_60fps.vp8->/data/local/tmp/media/bbb_vp8_176x144_240kbps_60fps.vp8"/>
+        <option name="push" value="DATA/media/res/bbb_vp8_176x144_240kbps_60fps.info->/data/local/tmp/media/bbb_vp8_176x144_240kbps_60fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_vp8_640x360_2mbps_30fps.vp8->/data/local/tmp/media/bbb_vp8_640x360_2mbps_30fps.vp8"/>
+        <option name="push" value="DATA/media/res/bbb_vp8_640x360_2mbps_30fps.info->/data/local/tmp/media/bbb_vp8_640x360_2mbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_vp9_176x144_285kbps_60fps.vp9->/data/local/tmp/media/bbb_vp9_176x144_285kbps_60fps.vp9"/>
+        <option name="push" value="DATA/media/res/bbb_vp9_176x144_285kbps_60fps.info->/data/local/tmp/media/bbb_vp9_176x144_285kbps_60fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_vp9_640x360_1600kbps_30fps.vp9->/data/local/tmp/media/bbb_vp9_640x360_1600kbps_30fps.vp9"/>
+        <option name="push" value="DATA/media/res/bbb_vp9_640x360_1600kbps_30fps.info->/data/local/tmp/media/bbb_vp9_640x360_1600kbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_aac_stereo_128kbps_48000hz.aac->/data/local/tmp/media/bbb_aac_stereo_128kbps_48000hz.aac"/>
+        <option name="push" value="DATA/media/res/bbb_aac_stereo_128kbps_48000hz.info->/data/local/tmp/media/bbb_aac_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_amrwb_1ch_14kbps_16000hz.amrwb->/data/local/tmp/media/bbb_amrwb_1ch_14kbps_16000hz.amrwb"/>
+        <option name="push" value="DATA/media/res/bbb_amrwb_1ch_14kbps_16000hz.info->/data/local/tmp/media/bbb_amrwb_1ch_14kbps_16000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_opus_stereo_128kbps_48000hz.opus->/data/local/tmp/media/bbb_opus_stereo_128kbps_48000hz.opus"/>
+        <option name="push" value="DATA/media/res/bbb_opus_stereo_128kbps_48000hz.info->/data/local/tmp/media/bbb_opus_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_vorbis_stereo_128kbps_48000hz.vorbis->/data/local/tmp/media/bbb_vorbis_stereo_128kbps_48000hz.vorbis"/>
+        <option name="push" value="DATA/media/res/bbb_vorbis_stereo_128kbps_48000hz.info->/data/local/tmp/media/bbb_vorbis_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_g711alaw_1ch_8khz.raw->/data/local/tmp/media/bbb_g711alaw_1ch_8khz.raw"/>
+        <option name="push" value="DATA/media/res/bbb_g711alaw_1ch_8khz.info->/data/local/tmp/media/bbb_g711alaw_1ch_8khz.info"/>
+        <option name="push" value="DATA/media/res/bbb_g711mulaw_1ch_8khz.raw->/data/local/tmp/media/bbb_g711mulaw_1ch_8khz.raw"/>
+        <option name="push" value="DATA/media/res/bbb_g711mulaw_1ch_8khz.info->/data/local/tmp/media/bbb_g711mulaw_1ch_8khz.info"/>
+        <option name="push" value="DATA/media/res/bbb_gsm_1ch_8khz_13kbps.raw->/data/local/tmp/media/bbb_gsm_1ch_8khz_13kbps.raw"/>
+        <option name="push" value="DATA/media/res/bbb_gsm_1ch_8khz_13kbps.info->/data/local/tmp/media/bbb_gsm_1ch_8khz_13kbps.info"/>
+        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s32le.raw->/data/local/tmp/media/bbb_raw_1ch_8khz_s32le.raw"/>
+        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s32le.info->/data/local/tmp/media/bbb_raw_1ch_8khz_s32le.info"/>
     </target_preparer>
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
         <option name="test-module-name" value="VtsHalMediaOmxV1_0Host"/>
diff --git a/neuralnetworks/V1_2/target/AndroidTest.xml b/neuralnetworks/V1_2/target/AndroidTest.xml
index 18063fb..fea25d2 100644
--- a/neuralnetworks/V1_2/target/AndroidTest.xml
+++ b/neuralnetworks/V1_2/target/AndroidTest.xml
@@ -25,7 +25,7 @@
         <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalNeuralnetworksV1_2TargetTest/VtsHalNeuralnetworksV1_2TargetTest"/>
         <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalNeuralnetworksV1_2TargetTest/VtsHalNeuralnetworksV1_2TargetTest"/>
         <option name="binary-test-type" value="hal_hidl_gtest"/>
-        <option name="test-timeout" value="1h"/>
+        <option name="test-timeout" value="10h"/>
         <option name="gtest-batch-mode" value="true"/>
     </test>
 </configuration>
diff --git a/treble/vintf/SingleManifestTest.cpp b/treble/vintf/SingleManifestTest.cpp
index 17ae647..c97d240 100644
--- a/treble/vintf/SingleManifestTest.cpp
+++ b/treble/vintf/SingleManifestTest.cpp
@@ -52,13 +52,19 @@
   }
 }
 
-void FailureHashMissing(const FQName &fq_name) {
+void FailureHashMissing(const FQName &fq_name,
+                        bool vehicle_hal_in_automotive_device) {
   if (LegacyAndExempt(fq_name)) {
     cout << "[  WARNING ] " << fq_name.string()
          << " has an empty hash but is exempted because it is legacy. It is "
             "still recommended to fix this. This is because it was compiled "
             "without being frozen in a corresponding current.txt file."
          << endl;
+  } else if (vehicle_hal_in_automotive_device) {
+    cout << "[  WARNING ] " << fq_name.string()
+         << " has an empty hash but is exempted because it is IVehicle in an"
+            "automotive device."
+         << endl;
   } else {
     ADD_FAILURE()
         << fq_name.string()
@@ -395,6 +401,9 @@
 
 // Tests that HAL interfaces are officially released.
 TEST_P(SingleManifestTest, InterfacesAreReleased) {
+  // Device support automotive features.
+  const static bool automotive_device =
+      DeviceSupportsFeature("android.hardware.type.automotive");
   // Verifies that HAL are released by fetching the hash of the interface and
   // comparing it to the set of known hashes of released interfaces.
   HalVerifyFn is_released = [](const FQName &fq_name,
@@ -438,11 +447,16 @@
       }
       string hash = hash_chain[i];
 
+      bool vehicle_hal_in_automotive_device =
+          automotive_device &&
+          fq_iface_name.string() ==
+              "android.hardware.automotive.vehicle@2.0::IVehicle";
       if (hash == Hash::hexString(Hash::kEmptyHash)) {
-        FailureHashMissing(fq_iface_name);
+        FailureHashMissing(fq_iface_name, vehicle_hal_in_automotive_device);
       }
 
-      if (IsAndroidPlatformInterface(fq_iface_name)) {
+      if (IsAndroidPlatformInterface(fq_iface_name) &&
+          !vehicle_hal_in_automotive_device) {
         set<string> released_hashes = ReleasedHashes(fq_iface_name);
         EXPECT_NE(released_hashes.find(hash), released_hashes.end())
             << "Hash not found. This interface was not released." << endl
diff --git a/treble/vintf/utils.cpp b/treble/vintf/utils.cpp
index d1d53b3..66ec01b 100644
--- a/treble/vintf/utils.cpp
+++ b/treble/vintf/utils.cpp
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (C) 2018 The Android Open Source Project
  *
@@ -105,6 +106,24 @@
   return !PackageRoot(fq_iface_name).empty();
 }
 
+// Returns true iff the device has the specified feature.
+bool DeviceSupportsFeature(const char *feature) {
+  bool device_supports_feature = false;
+  FILE *p = popen("pm list features", "re");
+  if (p) {
+    char *line = NULL;
+    size_t len = 0;
+    while (getline(&line, &len, p) > 0) {
+      if (strstr(line, feature)) {
+        device_supports_feature = true;
+        break;
+      }
+    }
+    pclose(p);
+  }
+  return device_supports_feature;
+}
+
 // Returns the set of released hashes for a given HAL interface.
 set<string> ReleasedHashes(const FQName &fq_iface_name) {
   set<string> released_hashes{};
diff --git a/treble/vintf/utils.h b/treble/vintf/utils.h
index 024ca22..48bd889 100644
--- a/treble/vintf/utils.h
+++ b/treble/vintf/utils.h
@@ -92,6 +92,9 @@
 // Returns true iff HAL interface is Android platform.
 bool IsAndroidPlatformInterface(const FQName& fq_iface_name);
 
+// Returns true iff the device has the specified feature.
+bool DeviceSupportsFeature(const char* feature);
+
 // Returns the set of released hashes for a given HAL interface.
 set<string> ReleasedHashes(const FQName& fq_iface_name);