Merge "Add KitchenSink entry for window insets" into rvc-qpr-dev
diff --git a/car_product/build/car_base.mk b/car_product/build/car_base.mk
index d6b62bc..6fdd02a 100644
--- a/car_product/build/car_base.mk
+++ b/car_product/build/car_base.mk
@@ -17,7 +17,13 @@
# Base platform for car builds
# car packages should be added to car.mk instead of here
+ifeq ($(DISABLE_CAR_PRODUCT_CONFIG_OVERLAY),)
PRODUCT_PACKAGE_OVERLAYS += packages/services/Car/car_product/overlay
+endif
+
+ifeq ($(DISABLE_CAR_PRODUCT_VISUAL_OVERLAY),)
+PRODUCT_PACKAGE_OVERLAYS += packages/services/Car/car_product/overlay-visual
+endif
PRODUCT_COPY_FILES += \
packages/services/Car/car_product/build/component-overrides.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sysconfig/component-overrides.xml \
diff --git a/car_product/overlay/frameworks/base/core/res/res/anim/fade_in.xml b/car_product/overlay-visual/frameworks/base/core/res/res/anim/fade_in.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/anim/fade_in.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/anim/fade_in.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/anim/fade_out.xml b/car_product/overlay-visual/frameworks/base/core/res/res/anim/fade_out.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/anim/fade_out.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/anim/fade_out.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable-night-nodpi/default_wallpaper.png b/car_product/overlay-visual/frameworks/base/core/res/res/drawable-night-nodpi/default_wallpaper.png
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable-night-nodpi/default_wallpaper.png
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable-night-nodpi/default_wallpaper.png
Binary files differ
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png b/car_product/overlay-visual/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png
Binary files differ
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable-sw600dp-night/default_wallpaper.png b/car_product/overlay-visual/frameworks/base/core/res/res/drawable-sw600dp-night/default_wallpaper.png
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable-sw600dp-night/default_wallpaper.png
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable-sw600dp-night/default_wallpaper.png
Binary files differ
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png b/car_product/overlay-visual/frameworks/base/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png
Binary files differ
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable-sw720dp-night/default_wallpaper.png b/car_product/overlay-visual/frameworks/base/core/res/res/drawable-sw720dp-night/default_wallpaper.png
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable-sw720dp-night/default_wallpaper.png
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable-sw720dp-night/default_wallpaper.png
Binary files differ
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png b/car_product/overlay-visual/frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png
Binary files differ
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/ic_account_circle.xml b/car_product/overlay-visual/frameworks/base/core/res/res/drawable/ic_account_circle.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable/ic_account_circle.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable/ic_account_circle.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/ic_collapse_notification.xml b/car_product/overlay-visual/frameworks/base/core/res/res/drawable/ic_collapse_notification.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable/ic_collapse_notification.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable/ic_collapse_notification.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/ic_expand_notification.xml b/car_product/overlay-visual/frameworks/base/core/res/res/drawable/ic_expand_notification.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable/ic_expand_notification.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable/ic_expand_notification.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/item_background.xml b/car_product/overlay-visual/frameworks/base/core/res/res/drawable/item_background.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable/item_background.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable/item_background.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/toast_frame.xml b/car_product/overlay-visual/frameworks/base/core/res/res/drawable/toast_frame.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/drawable/toast_frame.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/drawable/toast_frame.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/notification_template_right_icon.xml b/car_product/overlay-visual/frameworks/base/core/res/res/layout/notification_template_right_icon.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/layout/notification_template_right_icon.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/layout/notification_template_right_icon.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/resolve_list_item.xml b/car_product/overlay-visual/frameworks/base/core/res/res/layout/resolve_list_item.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/layout/resolve_list_item.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/layout/resolve_list_item.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/resolver_different_item_header.xml b/car_product/overlay-visual/frameworks/base/core/res/res/layout/resolver_different_item_header.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/layout/resolver_different_item_header.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/layout/resolver_different_item_header.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/resolver_list.xml b/car_product/overlay-visual/frameworks/base/core/res/res/layout/resolver_list.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/layout/resolver_list.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/layout/resolver_list.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/resolver_list_with_default.xml b/car_product/overlay-visual/frameworks/base/core/res/res/layout/resolver_list_with_default.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/layout/resolver_list_with_default.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/layout/resolver_list_with_default.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/transient_notification.xml b/car_product/overlay-visual/frameworks/base/core/res/res/layout/transient_notification.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/layout/transient_notification.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/layout/transient_notification.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-h1752dp/dimens.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values-h1752dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values-h1752dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values-h1752dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-h600dp/dimens.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values-h600dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values-h600dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values-h600dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-night/colors_car.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values-night/colors_car.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values-night/colors_car.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values-night/colors_car.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-night/colors_device_defaults.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values-night/colors_device_defaults.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values-night/colors_device_defaults.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values-night/colors_device_defaults.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-w1280dp/dimens.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values-w1280dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values-w1280dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values-w1280dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-w1920dp/dimens.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values-w1920dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values-w1920dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values-w1920dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-w690dp/dimens.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values-w690dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values-w690dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values-w690dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-w840dp/dimens.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values-w840dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values-w840dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values-w840dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/colors.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values/colors.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values/colors.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values/colors.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/colors_device_defaults.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values/colors_device_defaults.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values/colors_device_defaults.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values/colors_device_defaults.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/dimens.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values/dimens.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values/dimens.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/styles.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values/styles.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values/styles.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values/styles.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/styles_device_default.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values/styles_device_default.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values/styles_device_default.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values/styles_device_default.xml
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/themes_device_defaults.xml b/car_product/overlay-visual/frameworks/base/core/res/res/values/themes_device_defaults.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/core/res/res/values/themes_device_defaults.xml
rename to car_product/overlay-visual/frameworks/base/core/res/res/values/themes_device_defaults.xml
diff --git a/car_product/overlay/frameworks/base/packages/CarSystemUI/res/values-h600dp/dimens.xml b/car_product/overlay-visual/frameworks/base/packages/CarSystemUI/res/values-h600dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/packages/CarSystemUI/res/values-h600dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/packages/CarSystemUI/res/values-h600dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/packages/CarSystemUI/res/values-sw600dp/dimens.xml b/car_product/overlay-visual/frameworks/base/packages/CarSystemUI/res/values-sw600dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/packages/CarSystemUI/res/values-sw600dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/packages/CarSystemUI/res/values-sw600dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/packages/CarSystemUI/res/values-w1024dp/dimens.xml b/car_product/overlay-visual/frameworks/base/packages/CarSystemUI/res/values-w1024dp/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/packages/CarSystemUI/res/values-w1024dp/dimens.xml
rename to car_product/overlay-visual/frameworks/base/packages/CarSystemUI/res/values-w1024dp/dimens.xml
diff --git a/car_product/overlay/frameworks/base/packages/CarSystemUI/res/values-w550dp-land/dimens.xml b/car_product/overlay-visual/frameworks/base/packages/CarSystemUI/res/values-w550dp-land/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/packages/CarSystemUI/res/values-w550dp-land/dimens.xml
rename to car_product/overlay-visual/frameworks/base/packages/CarSystemUI/res/values-w550dp-land/dimens.xml
diff --git a/car_product/overlay/frameworks/base/packages/SettingsLib/res/values/dimens.xml b/car_product/overlay-visual/frameworks/base/packages/SettingsLib/res/values/dimens.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/packages/SettingsLib/res/values/dimens.xml
rename to car_product/overlay-visual/frameworks/base/packages/SettingsLib/res/values/dimens.xml
diff --git a/car_product/overlay/frameworks/base/packages/SettingsLib/res/values/styles.xml b/car_product/overlay-visual/frameworks/base/packages/SettingsLib/res/values/styles.xml
similarity index 100%
rename from car_product/overlay/frameworks/base/packages/SettingsLib/res/values/styles.xml
rename to car_product/overlay-visual/frameworks/base/packages/SettingsLib/res/values/styles.xml
diff --git a/evs/manager/1.1/Android.bp b/evs/manager/1.1/Android.bp
index 891d615..d9c7d33 100644
--- a/evs/manager/1.1/Android.bp
+++ b/evs/manager/1.1/Android.bp
@@ -14,6 +14,65 @@
//
//
+cc_library {
+ name: "android.automotive.evs.manager.fuzzlib",
+
+ srcs: [
+ "Enumerator.cpp",
+ "HalCamera.cpp",
+ "HalDisplay.cpp",
+ "VirtualCamera.cpp",
+ "stats/CameraUsageStats.cpp",
+ "stats/LooperWrapper.cpp",
+ "stats/StatsCollector.cpp",
+ "sync/unique_fd.cpp",
+ "sync/unique_fence.cpp",
+ "sync/unique_timeline.cpp",
+ ],
+
+ shared_libs: [
+ "android.hardware.automotive.evs@1.0",
+ "android.hardware.automotive.evs@1.1",
+ "libbase",
+ "libcamera_metadata",
+ "libcutils",
+ "libhardware",
+ "libhidlbase",
+ "libprocessgroup",
+ "libstatslog",
+ "libsync",
+ "libui",
+ "libutils",
+ ],
+
+ cflags: ["-DLOG_TAG=\"EvsManagerFuzzlibV1_1\""] + [
+ "-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS",
+ "-Wall",
+ "-Werror",
+ "-Wunused",
+ "-Wunreachable-code",
+ "-Wthread-safety",
+ ],
+
+ include_dirs: [
+ "system/core/libsync",
+ ],
+
+ export_include_dirs: [
+ "./",
+ "stats/",
+ "sync/",
+ ],
+
+ product_variables: {
+ debuggable: {
+ cflags: [
+ "-DEVS_DEBUG",
+ ]
+ }
+ },
+}
+
//#################################
cc_binary {
diff --git a/evs/manager/1.1/test/fuzzer/Android.bp b/evs/manager/1.1/test/fuzzer/Android.bp
new file mode 100644
index 0000000..dfe0203
--- /dev/null
+++ b/evs/manager/1.1/test/fuzzer/Android.bp
@@ -0,0 +1,61 @@
+// Copyright 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_defaults {
+ name: "evs_fuzz_default",
+ static_libs: [
+ "libgmock",
+ "libgtest",
+ ],
+
+ shared_libs: [
+ "android.automotive.evs.manager.fuzzlib",
+ "android.hardware.automotive.evs@1.0",
+ "android.hardware.automotive.evs@1.1",
+ "libbase",
+ "libcamera_metadata",
+ "libcutils",
+ "libhardware",
+ "libhidlbase",
+ "libprocessgroup",
+ "libstatslog",
+ "libsync",
+ "libui",
+ "libutils",
+ ],
+
+ cflags: [
+ "-Wno-unused-parameter",
+ ],
+
+ include_dirs: [
+ "system/core/libsync",
+ ],
+}
+
+cc_fuzz {
+ name: "evs_halcamera_fuzzer",
+ srcs: [
+ "HalCameraFuzzer.cpp",
+ ],
+ defaults: ["evs_fuzz_default"],
+}
+
+cc_fuzz {
+ name: "evs_virtual_camera_fuzzer",
+ srcs: [
+ "VirtualCameraFuzzer.cpp",
+ ],
+ defaults: ["evs_fuzz_default"],
+}
\ No newline at end of file
diff --git a/evs/manager/1.1/test/fuzzer/Common.h b/evs/manager/1.1/test/fuzzer/Common.h
new file mode 100644
index 0000000..b3b53a6
--- /dev/null
+++ b/evs/manager/1.1/test/fuzzer/Common.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef EVS_MANAGER_1_1_TEST_FUZZER_COMMON_H_
+#define EVS_MANAGER_1_1_TEST_FUZZER_COMMON_H_
+
+namespace android {
+namespace automotive {
+namespace evs {
+namespace V1_1 {
+namespace implementation {
+
+#define EVS_FUZZ_BASE_ENUM \
+ EVS_FUZZ_NOTIFY, /*verify notify*/ \
+ EVS_FUZZ_GET_HW_CAMERA, /*verify getHalCameras*/ \
+ EVS_FUZZ_DELIVER_FRAME, /* verify deliverFrame */ \
+ EVS_FUZZ_DONE_WITH_FRAME_1_0, /* verify doneWithFrame */ \
+ EVS_FUZZ_DONE_WITH_FRAME_1_1, /* verify doneWithFrame_1_1 */ \
+ EVS_FUZZ_SET_PRIMARY, /* verify setPrimary */ \
+ EVS_FUZZ_FORCE_PRIMARY, /* verify forcePrimary */ \
+ EVS_FUZZ_UNSET_PRIMARY, /* verify unsetPrimary */ \
+ EVS_FUZZ_SET_PARAMETER, /* verify setIntParameter */ \
+ EVS_FUZZ_GET_PARAMETER, /* verify getIntParameter */ \
+ EVS_FUZZ_API_SUM
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace evs
+} // namespace automotive
+} // namespace android
+
+#endif // EVS_MANAGER_1_1_TEST_FUZZER_COMMON_H_
diff --git a/evs/manager/1.1/test/fuzzer/HalCameraFuzzer.cpp b/evs/manager/1.1/test/fuzzer/HalCameraFuzzer.cpp
new file mode 100644
index 0000000..4660182
--- /dev/null
+++ b/evs/manager/1.1/test/fuzzer/HalCameraFuzzer.cpp
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <fuzzer/FuzzedDataProvider.h>
+#include <iostream>
+#include "Common.h"
+#include "Enumerator.h"
+#include "HalCamera.h"
+#include "MockHWCamera.h"
+
+namespace android {
+namespace automotive {
+namespace evs {
+namespace V1_1 {
+namespace implementation {
+
+namespace {
+
+enum EvsFuzzFuncs {
+ EVS_FUZZ_MAKE_VIRTUAL_CAMERA = 0, // verify makeVirtualCamera
+ EVS_FUZZ_OWN_VIRTUAL_CAMERA, // verify ownVirtualCamera
+ EVS_FUZZ_DISOWN_VIRTUAL_CAMERA, // verify disownVirtualCamera
+ EVS_FUZZ_GET_CLIENT_COUNT, // verify getClientCount
+ EVS_FUZZ_GET_ID, // verify getId
+ EVS_FUZZ_GET_STREAM_CONFIG, // verify getStreamConfig
+ EVS_FUZZ_CHANGE_FRAMES_IN_FLIGHT, // verify changeFramesInFlight
+ EVS_FUZZ_CHANGE_FRAMES_IN_FLIGHT_1, // verify overloaded changeFramesInFlight
+ EVS_FUZZ_REQUEST_NEW_FRAME, // verify requestNewFrame
+ EVS_FUZZ_CLIENT_STREAM_STARTING, // verify clientStreamStarting
+ EVS_FUZZ_CLIENT_STREAM_ENDING, // verify clientStreamEnding
+ EVS_FUZZ_GET_STATS, // verify getStats
+ EVS_FUZZ_GET_STREAM_CONFIGURATION, // verify getStreamConfiguration
+ EVS_FUZZ_DELIVER_FRAME_1_1, // verify deliverFrame_1_1
+ EVS_FUZZ_BASE_ENUM // verify common functions
+};
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ FuzzedDataProvider fdp(data, size);
+ sp<IEvsCamera_1_1> mockHWCamera = new MockHWCamera();
+ sp<HalCamera> halCamera = new HalCamera(mockHWCamera);
+ std::vector<sp<VirtualCamera>> virtualCameras;
+
+ while (fdp.remaining_bytes() > 4) {
+ switch (fdp.ConsumeIntegralInRange<uint32_t>(0, EVS_FUZZ_API_SUM)) {
+ case EVS_FUZZ_MAKE_VIRTUAL_CAMERA: {
+ sp<VirtualCamera> virtualCamera = halCamera->makeVirtualCamera();
+ virtualCameras.emplace_back(virtualCamera);
+ break;
+ }
+ case EVS_FUZZ_OWN_VIRTUAL_CAMERA: {
+ if (!virtualCameras.empty()) {
+ uint32_t whichCam =
+ fdp.ConsumeIntegralInRange<uint32_t>(0, virtualCameras.size() - 1);
+ halCamera->ownVirtualCamera(virtualCameras[whichCam]);
+ }
+ break;
+ }
+ case EVS_FUZZ_DISOWN_VIRTUAL_CAMERA: {
+ if (!virtualCameras.empty()) {
+ uint32_t whichCam =
+ fdp.ConsumeIntegralInRange<uint32_t>(0, virtualCameras.size() - 1);
+ halCamera->disownVirtualCamera(virtualCameras[whichCam]);
+ }
+ break;
+ }
+ case EVS_FUZZ_GET_HW_CAMERA: {
+ halCamera->getHwCamera();
+ break;
+ }
+ case EVS_FUZZ_GET_CLIENT_COUNT: {
+ halCamera->getClientCount();
+ break;
+ }
+ case EVS_FUZZ_GET_ID: {
+ halCamera->getId();
+ break;
+ }
+ case EVS_FUZZ_GET_STREAM_CONFIG: {
+ halCamera->getStreamConfig();
+ break;
+ }
+ case EVS_FUZZ_CHANGE_FRAMES_IN_FLIGHT: {
+ uint32_t delta = fdp.ConsumeIntegral<int32_t>();
+ halCamera->changeFramesInFlight(delta);
+ break;
+ }
+ default:
+ LOG(ERROR) << "Unexpected option, aborting...";
+ break;
+ }
+ }
+ return 0;
+}
+
+} // namespace
+} // namespace implementation
+} // namespace V1_1
+} // namespace evs
+} // namespace automotive
+} // namespace android
diff --git a/evs/manager/1.1/test/fuzzer/MockHWCamera.h b/evs/manager/1.1/test/fuzzer/MockHWCamera.h
new file mode 100644
index 0000000..a4e0638
--- /dev/null
+++ b/evs/manager/1.1/test/fuzzer/MockHWCamera.h
@@ -0,0 +1,109 @@
+// Copyright 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef EVS_MANAGER_1_1_TEST_FUZZER_MOCKHWCAMERA_H_
+#define EVS_MANAGER_1_1_TEST_FUZZER_MOCKHWCAMERA_H_
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+namespace android {
+namespace automotive {
+namespace evs {
+namespace V1_1 {
+namespace implementation {
+
+class MockHWCamera : public IEvsCamera_1_1 {
+public:
+ MockHWCamera() = default;
+
+ // v1.0 methods
+ Return<void> getCameraInfo(getCameraInfo_cb _hidl_cb) override { return {}; }
+ Return<EvsResult> setMaxFramesInFlight(uint32_t bufferCount) override {
+ if (bufferCount > 1024) {
+ return EvsResult::INVALID_ARG;
+ }
+ return EvsResult::OK;
+ }
+ Return<EvsResult> startVideoStream(const ::android::sp<IEvsCameraStream_1_0>& stream) override {
+ return EvsResult::OK;
+ }
+ Return<void> doneWithFrame(const BufferDesc_1_0& buffer) override { return {}; }
+ Return<void> stopVideoStream() override { return {}; }
+ Return<int32_t> getExtendedInfo(uint32_t opaqueIdentifier) override {
+ if (mExtendedInfo.find(opaqueIdentifier) != mExtendedInfo.end()) {
+ return mExtendedInfo[opaqueIdentifier];
+ }
+ return 0;
+ }
+ Return<EvsResult> setExtendedInfo(uint32_t opaqueIdentifier, int32_t opaqueValue) override {
+ mExtendedInfo[opaqueIdentifier] = opaqueValue;
+ return EvsResult::OK;
+ }
+
+ // v1.1 methods
+ Return<void> getCameraInfo_1_1(getCameraInfo_1_1_cb _hidl_cb) override { return {}; }
+ MOCK_METHOD(Return<void>, getPhysicalCameraInfo,
+ (const hidl_string& deviceId, getPhysicalCameraInfo_cb _hidl_cb), (override));
+ MOCK_METHOD(Return<EvsResult>, pauseVideoStream, (), (override));
+ MOCK_METHOD(Return<EvsResult>, resumeVideoStream, (), (override));
+ MOCK_METHOD(Return<EvsResult>, doneWithFrame_1_1,
+ (const hardware::hidl_vec<BufferDesc_1_1>& buffer), (override));
+ MOCK_METHOD(Return<EvsResult>, setMaster, (), (override));
+ MOCK_METHOD(Return<EvsResult>, forceMaster, (const sp<IEvsDisplay_1_0>& display), (override));
+ MOCK_METHOD(Return<EvsResult>, unsetMaster, (), (override));
+ Return<void> getParameterList(getParameterList_cb _hidl_cb) override { return {}; }
+ Return<void> getIntParameterRange(CameraParam id, getIntParameterRange_cb _hidl_cb) override {
+ return {};
+ }
+ Return<void> setIntParameter(CameraParam id, int32_t value,
+ setIntParameter_cb _hidl_cb) override {
+ // FIXME in default implementation, it's _hidl_cb(EvsResult::INVALID_ARG, 0); which will
+ // always cause a segfault what's the predefined behavior of _hidl_cb?
+ std::vector<int32_t> vec;
+ vec.push_back(0);
+ _hidl_cb(EvsResult::INVALID_ARG, vec);
+ return {};
+ }
+
+ Return<void> getIntParameter(CameraParam id, getIntParameter_cb _hidl_cb) {
+ _hidl_cb(EvsResult::INVALID_ARG, 0);
+ return {};
+ }
+
+ Return<void> getExtendedInfo_1_1(uint32_t opaqueIdentifier,
+ getExtendedInfo_1_1_cb _hidl_cb) override {
+ return {};
+ }
+ Return<EvsResult> setExtendedInfo_1_1(uint32_t opaqueIdentifier,
+ const hidl_vec<uint8_t>& opaqueValue) override {
+ return EvsResult::OK;
+ }
+ Return<void> importExternalBuffers(const hidl_vec<BufferDesc_1_1>& buffers,
+ importExternalBuffers_cb _hidl_cb) override {
+ return {};
+ }
+
+private:
+ std::map<uint32_t, int32_t> mExtendedInfo;
+ std::map<uint32_t, int32_t> mExtendedInfo_1_1;
+};
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace evs
+} // namespace automotive
+} // namespace android
+
+#endif // EVS_MANAGER_1_1_TEST_FUZZER_MOCKHWCAMERA_H_
diff --git a/evs/manager/1.1/test/fuzzer/VirtualCameraFuzzer.cpp b/evs/manager/1.1/test/fuzzer/VirtualCameraFuzzer.cpp
new file mode 100644
index 0000000..3776f4b
--- /dev/null
+++ b/evs/manager/1.1/test/fuzzer/VirtualCameraFuzzer.cpp
@@ -0,0 +1,262 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <fuzzer/FuzzedDataProvider.h>
+#include <iostream>
+#include "Common.h"
+#include "Enumerator.h"
+#include "MockHWCamera.h"
+#include "VirtualCamera.h"
+
+namespace android {
+namespace automotive {
+namespace evs {
+namespace V1_1 {
+namespace implementation {
+
+namespace {
+
+using CameraDesc_1_0 = ::android::hardware::automotive::evs::V1_0::CameraDesc;
+
+enum EvsFuzzFuncs {
+ EVS_FUZZ_GET_ALLOWED_BUFFERS, // verify getAllowedBuffers
+ EVS_FUZZ_IS_STREAMING, // verify isStreaming
+ EVS_FUZZ_GET_VERSION, // verify getVersion
+ EVS_FUZZ_SET_DESCRIPTOR, // verify setDescriptor
+ EVS_FUZZ_GET_CAMERA_INFO, // verify getCameraInfo
+ EVS_FUZZ_SETMAX_FRAMES_IN_FLIGHT, // verify setMaxFramesInFlight
+ EVS_FUZZ_START_VIDEO_STREAM, // verify startVideoStream
+ EVS_FUZZ_STOP_VIDEO_STREAM, // verify stopVideoStream
+ EVS_FUZZ_GET_EXTENDED_INFO, // verify getExtendedInfo
+ EVS_FUZZ_SET_EXTENDED_INFO, // verify setExtendedInfo
+ EVS_FUZZ_GET_CAMERA_INFO_1_1, // verify getCameraInfo_1_1
+ EVS_FUZZ_GET_PHYSICAL_CAMERA_INFO, // verify getPhysicalCameraInfo
+ EVS_FUZZ_PAUSE_VIDEO_STREAM, // verify pauseVideoStream
+ EVS_FUZZ_RESUME_VIDEO_STREAM, // verify resumeVideoStream
+ EVS_FUZZ_GET_PARAMETER_LIST, // verify getParameterList
+ EVS_FUZZ_GET_INT_PARAMETER_RANGE, // verify getIntParameterRange
+ EVS_FUZZ_SET_EXTENDED_INFO_1_1, // verify setExtendedInfo_1_1
+ EVS_FUZZ_GET_EXTENDED_INFO_1_1, // verify getExtendedInfo_1_1
+ EVS_FUZZ_IMPORT_EXTERNAL_BUFFERS, // verify importExternalBuffers
+ EVS_FUZZ_BASE_ENUM // verify common functions
+};
+
+const int kMaxFuzzerConsumedBytes = 12;
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ FuzzedDataProvider fdp(data, size);
+ sp<IEvsCamera_1_1> mockHWCamera = new MockHWCamera();
+ sp<HalCamera> halCamera = new HalCamera(mockHWCamera);
+ sp<VirtualCamera> virtualCamera = halCamera->makeVirtualCamera();
+
+ std::vector<BufferDesc_1_0> vBufferDesc_1_0;
+ std::vector<BufferDesc_1_1> vBufferDesc_1_1;
+
+ bool videoStarted = false;
+
+ while (fdp.remaining_bytes() > kMaxFuzzerConsumedBytes) {
+ switch (fdp.ConsumeIntegralInRange<uint32_t>(0, EVS_FUZZ_API_SUM)) {
+ case EVS_FUZZ_GET_ALLOWED_BUFFERS: {
+ virtualCamera->getAllowedBuffers();
+ break;
+ }
+ case EVS_FUZZ_IS_STREAMING: {
+ virtualCamera->isStreaming();
+ break;
+ }
+ case EVS_FUZZ_GET_VERSION: {
+ virtualCamera->getVersion();
+ break;
+ }
+ case EVS_FUZZ_GET_HW_CAMERA: {
+ virtualCamera->getHalCameras();
+ break;
+ }
+ case EVS_FUZZ_SET_DESCRIPTOR: {
+ CameraDesc* desc = new CameraDesc();
+ virtualCamera->setDescriptor(desc);
+ break;
+ }
+ case EVS_FUZZ_NOTIFY: {
+ if (videoStarted) {
+ EvsEventDesc event;
+ uint32_t type = fdp.ConsumeIntegralInRange<
+ uint32_t>(0, static_cast<uint32_t>(EvsEventType::STREAM_ERROR));
+ event.aType = static_cast<EvsEventType>(type);
+ virtualCamera->notify(event);
+ }
+ break;
+ }
+ case EVS_FUZZ_DELIVER_FRAME: {
+ BufferDesc buffer;
+ buffer.bufferId = fdp.ConsumeIntegral<int32_t>();
+ virtualCamera->deliverFrame(buffer);
+ vBufferDesc_1_1.emplace_back(buffer);
+ break;
+ }
+ case EVS_FUZZ_GET_CAMERA_INFO: {
+ virtualCamera->getCameraInfo([](CameraDesc_1_0 desc) {});
+ break;
+ }
+ case EVS_FUZZ_SETMAX_FRAMES_IN_FLIGHT: {
+ uint32_t delta = fdp.ConsumeIntegral<uint32_t>();
+ virtualCamera->setMaxFramesInFlight(delta);
+ break;
+ }
+ case EVS_FUZZ_START_VIDEO_STREAM: {
+ if (!videoStarted) {
+ sp<IEvsCamera_1_1> mockHWCamera1 = new MockHWCamera();
+ sp<HalCamera> halCamera1 = new HalCamera(mockHWCamera1);
+ virtualCamera->startVideoStream(halCamera1);
+ videoStarted = true;
+ }
+ break;
+ }
+ case EVS_FUZZ_DONE_WITH_FRAME_1_0: {
+ if (!vBufferDesc_1_0.empty()) {
+ uint32_t whichBuffer =
+ fdp.ConsumeIntegralInRange<uint32_t>(0, vBufferDesc_1_0.size() - 1);
+ virtualCamera->doneWithFrame(vBufferDesc_1_0[whichBuffer]);
+ }
+ break;
+ }
+ case EVS_FUZZ_STOP_VIDEO_STREAM: {
+ virtualCamera->stopVideoStream();
+ videoStarted = false;
+ break;
+ }
+ case EVS_FUZZ_GET_EXTENDED_INFO: {
+ uint32_t opaqueIdentifier = fdp.ConsumeIntegral<uint32_t>();
+ virtualCamera->getExtendedInfo(opaqueIdentifier);
+ break;
+ }
+ case EVS_FUZZ_SET_EXTENDED_INFO: {
+ uint32_t opaqueIdentifier = fdp.ConsumeIntegral<uint32_t>();
+ int32_t opaqueValue = fdp.ConsumeIntegral<int32_t>();
+ virtualCamera->setExtendedInfo(opaqueIdentifier, opaqueValue);
+ break;
+ }
+ case EVS_FUZZ_GET_CAMERA_INFO_1_1: {
+ virtualCamera->getCameraInfo_1_1([](CameraDesc desc) {});
+ break;
+ }
+ case EVS_FUZZ_GET_PHYSICAL_CAMERA_INFO: {
+ hidl_string deviceId("");
+ virtualCamera->getPhysicalCameraInfo(deviceId, [](const CameraDesc& info) {});
+ break;
+ }
+ case EVS_FUZZ_DONE_WITH_FRAME_1_1: {
+ if (!vBufferDesc_1_1.empty()) {
+ hidl_vec<BufferDesc_1_1> buffers(vBufferDesc_1_1);
+ virtualCamera->doneWithFrame_1_1(buffers);
+ }
+ break;
+ }
+ case EVS_FUZZ_PAUSE_VIDEO_STREAM: {
+ virtualCamera->pauseVideoStream();
+ break;
+ }
+ case EVS_FUZZ_RESUME_VIDEO_STREAM: {
+ virtualCamera->resumeVideoStream();
+ break;
+ }
+ case EVS_FUZZ_SET_PRIMARY: {
+ virtualCamera->setMaster();
+ break;
+ }
+ case EVS_FUZZ_FORCE_PRIMARY: {
+ // TODO(161388489) skip this until we finished fuzzing evs display
+ break;
+ }
+ case EVS_FUZZ_UNSET_PRIMARY: {
+ virtualCamera->unsetMaster();
+ break;
+ }
+ case EVS_FUZZ_GET_PARAMETER_LIST: {
+ virtualCamera->getParameterList([](hidl_vec<CameraParam> cmdList) {});
+ break;
+ }
+ case EVS_FUZZ_GET_INT_PARAMETER_RANGE: {
+ uint32_t whichParam =
+ fdp.ConsumeIntegralInRange<uint32_t>(0,
+ static_cast<uint32_t>(
+ CameraParam::ABSOLUTE_ZOOM));
+ virtualCamera->getIntParameterRange(static_cast<CameraParam>(whichParam),
+ [](int32_t val0, int32_t val1, int32_t val2) {
+ });
+ break;
+ }
+ case EVS_FUZZ_SET_PARAMETER: {
+ uint32_t whichParam =
+ fdp.ConsumeIntegralInRange<uint32_t>(0,
+ static_cast<uint32_t>(
+ CameraParam::ABSOLUTE_ZOOM));
+ int32_t val = fdp.ConsumeIntegral<int32_t>();
+ virtualCamera->setIntParameter(static_cast<CameraParam>(whichParam), val,
+ [](auto status, auto effectiveValues) {});
+ break;
+ }
+ case EVS_FUZZ_GET_PARAMETER: {
+ uint32_t whichParam =
+ fdp.ConsumeIntegralInRange<uint32_t>(0,
+ static_cast<uint32_t>(
+ CameraParam::ABSOLUTE_ZOOM));
+ virtualCamera->getIntParameter(static_cast<CameraParam>(whichParam),
+ [](auto status, auto effectiveValues) {});
+ break;
+ }
+ case EVS_FUZZ_SET_EXTENDED_INFO_1_1: {
+ uint32_t opaqueIdentifier = fdp.ConsumeIntegral<uint32_t>();
+ uint8_t opaqueValue = fdp.ConsumeIntegral<uint8_t>();
+ vector<uint8_t> v;
+ v.push_back(opaqueValue);
+ hidl_vec<uint8_t> vec(v);
+ virtualCamera->setExtendedInfo_1_1(opaqueIdentifier, vec);
+ break;
+ }
+ case EVS_FUZZ_GET_EXTENDED_INFO_1_1: {
+ uint32_t opaqueIdentifier = fdp.ConsumeIntegral<uint32_t>();
+ virtualCamera->getExtendedInfo_1_1(opaqueIdentifier,
+ [](const auto& result, const auto& data) {});
+ break;
+ }
+ case EVS_FUZZ_IMPORT_EXTERNAL_BUFFERS: {
+ if (!vBufferDesc_1_1.empty()) {
+ hidl_vec<BufferDesc_1_1> buffers(vBufferDesc_1_1);
+ virtualCamera->importExternalBuffers(buffers, [](auto _result, auto _delta) {});
+ }
+ break;
+ }
+ default:
+ LOG(ERROR) << "Unexpected option, aborting...";
+ break;
+ }
+ }
+
+ if (videoStarted) {
+ // TODO(b/161762538) if we do not stop video stream manually here,
+ // there will be crash at VirtualCamera.cpp::pHwCamera->unsetMaster(this);
+ virtualCamera->stopVideoStream();
+ }
+ return 0;
+}
+
+} // namespace
+} // namespace implementation
+} // namespace V1_1
+} // namespace evs
+} // namespace automotive
+} // namespace android
diff --git a/service/src/com/android/car/audio/CarAudioService.java b/service/src/com/android/car/audio/CarAudioService.java
index db081eb..bc67085 100644
--- a/service/src/com/android/car/audio/CarAudioService.java
+++ b/service/src/com/android/car/audio/CarAudioService.java
@@ -892,6 +892,10 @@
*
* @param zoneId The audio zone id
* @param uid The uid to map
+ *
+ * <p><b>Note:</b> Will throw if occupant zone mapping exist, as uid and occupant zone mapping
+ * do not work in conjunction.
+ *
* @return true if the device affinities, for devices in zone, are successfully set
*/
@Override
@@ -905,6 +909,9 @@
+ uid + " mapped to : "
+ zoneId);
+ // If occupant mapping exist uid routing can not be used
+ requiredOccupantZoneMappingDisabledLocked();
+
// Figure out if anything is currently holding focus,
// This will change the focus to transient loss while we are switching zones
Integer currentZoneId = mUidToZoneMap.get(uid);
@@ -985,6 +992,10 @@
/**
* Removes the current mapping of the uid, focus will be lost in zone
* @param uid The uid to remove
+ *
+ * <p><b>Note:</b> Will throw if occupant zone mapping exist, as uid and occupant zone mapping
+ * do not work in conjunction.
+ *
* return true if all the devices affinities currently
* mapped to uid are successfully removed
*/
@@ -993,6 +1004,10 @@
enforcePermission(Car.PERMISSION_CAR_CONTROL_AUDIO_SETTINGS);
requireDynamicRouting();
synchronized (mImplLock) {
+ // Throw so as to not set the wrong expectation,
+ // that routing will be changed if clearZoneIdForUid is called.
+ requiredOccupantZoneMappingDisabledLocked();
+
return checkAndRemoveUidLocked(uid);
}
}
@@ -1083,6 +1098,13 @@
Preconditions.checkState(mUseDynamicRouting, "Dynamic routing is required");
}
+ private void requiredOccupantZoneMappingDisabledLocked() {
+ if (isOccupantZoneMappingAvailableLocked()) {
+ throw new IllegalStateException(
+ "UID based routing is not supported while using occupant zone mapping");
+ }
+ }
+
/**
* @return {@link AudioDevicePort} that handles the given car audio usage.
* Multiple usages may share one {@link AudioDevicePort}
@@ -1123,7 +1145,7 @@
private void handleOccupantZoneUserChanged() {
int driverUserId = mOccupantZoneService.getDriverUserId();
synchronized (mImplLock) {
- if (!isOccupantZoneMappingAvailable()) {
+ if (!isOccupantZoneMappingAvailableLocked()) {
//No occupant zone to audio zone mapping, re-adjust to settings driver.
for (int index = 0; index < mCarAudioZones.length; index++) {
CarAudioZone zone = mCarAudioZones[index];
@@ -1142,7 +1164,7 @@
}
}
- private boolean isOccupantZoneMappingAvailable() {
+ private boolean isOccupantZoneMappingAvailableLocked() {
return mAudioZoneIdToOccupantZoneIdMapping.size() > 0;
}
diff --git a/tests/CarSecurityPermissionTest/Android.bp b/tests/CarSecurityPermissionTest/Android.bp
index 066ecc8..7be1d0b 100644
--- a/tests/CarSecurityPermissionTest/Android.bp
+++ b/tests/CarSecurityPermissionTest/Android.bp
@@ -21,6 +21,7 @@
libs: [
"android.car",
+ "android.hardware.automotive.vehicle-V2.0-java",
"android.test.runner",
"android.test.base",
"android.test.mock",
diff --git a/user/car-user-lib/Android.bp b/user/car-user-lib/Android.bp
index 12bc950..940751a 100644
--- a/user/car-user-lib/Android.bp
+++ b/user/car-user-lib/Android.bp
@@ -17,9 +17,11 @@
srcs: [
"src/**/*.java",
],
+ libs: [
+ "android.hardware.automotive.vehicle-V2.0-java",
+ ],
static_libs: [
"android.car.settings",
- "android.hardware.automotive.vehicle-V2.0-java",
],
product_variables: {
pdk: {