// Copyright 2018 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.

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_native_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_native_license"],
}

cc_test {
    name: "libsurfaceflinger_unittest",
    defaults: ["surfaceflinger_defaults"],
    test_suites: ["device-tests"],
    sanitize: {
        // Using the address sanitizer not only helps uncover issues in the code
        // covered by the tests, but also covers some of the tricky injection of
        // fakes the unit tests currently do.
        //
        // Note: If you get an runtime link error like:
        //
        //   CANNOT LINK EXECUTABLE "/data/local/tmp/libsurfaceflinger_unittest": library "libclang_rt.asan-aarch64-android.so" not found
        //
        // it is because the address sanitizer shared objects are not installed
        // by default in the system image.
        //
        // You can either "make dist tests" before flashing, or set this
        // option to false temporarily.
        address: true,
    },
    srcs: [
        ":libsurfaceflinger_sources",
        "libsurfaceflinger_unittest_main.cpp",
        "CachingTest.cpp",
        "CompositionTest.cpp",
        "DispSyncSourceTest.cpp",
        "DisplayIdentificationTest.cpp",
        "DisplayIdGeneratorTest.cpp",
        "DisplayTransactionTest.cpp",
        "DisplayDevice_GetBestColorModeTest.cpp",
        "DisplayDevice_SetProjectionTest.cpp",
        "EventThreadTest.cpp",
        "FpsReporterTest.cpp",
        "FpsTest.cpp",
        "FramebufferSurfaceTest.cpp",
        "FrameTimelineTest.cpp",
        "GameModeTest.cpp",
        "HWComposerTest.cpp",
        "OneShotTimerTest.cpp",
        "LayerHistoryTest.cpp",
        "LayerInfoTest.cpp",
        "LayerMetadataTest.cpp",
        "MessageQueueTest.cpp",
        "SurfaceFlinger_CreateDisplayTest.cpp",
        "SurfaceFlinger_DestroyDisplayTest.cpp",
        "SurfaceFlinger_GetDisplayNativePrimariesTest.cpp",
        "SurfaceFlinger_HandleTransactionLockedTest.cpp",
        "SurfaceFlinger_NotifyPowerBoostTest.cpp",
        "SurfaceFlinger_HotplugTest.cpp",
        "SurfaceFlinger_OnInitializeDisplaysTest.cpp",
        "SurfaceFlinger_SetDisplayStateTest.cpp",
        "SurfaceFlinger_SetPowerModeInternalTest.cpp",
        "SurfaceFlinger_SetupNewDisplayDeviceInternalTest.cpp",
        "SchedulerTest.cpp",
        "SchedulerUtilsTest.cpp",
        "SetFrameRateTest.cpp",
        "RefreshRateConfigsTest.cpp",
        "RefreshRateSelectionTest.cpp",
        "RefreshRateStatsTest.cpp",
        "RegionSamplingTest.cpp",
        "TimeStatsTest.cpp",
        "FrameTracerTest.cpp",
        "TimerTest.cpp",
        "TransactionApplicationTest.cpp",
        "TransactionFrameTracerTest.cpp",
        "TransactionSurfaceFrameTest.cpp",
        "TunnelModeEnabledReporterTest.cpp",
        "StrongTypingTest.cpp",
        "VSyncDispatchTimerQueueTest.cpp",
        "VSyncDispatchRealtimeTest.cpp",
        "VsyncModulatorTest.cpp",
        "VSyncPredictorTest.cpp",
        "VSyncReactorTest.cpp",
        "VsyncConfigurationTest.cpp",
        "mock/DisplayHardware/MockComposer.cpp",
        "mock/DisplayHardware/MockHWC2.cpp",
        "mock/DisplayHardware/MockPowerAdvisor.cpp",
        "mock/MockEventThread.cpp",
        "mock/MockFrameTimeline.cpp",
        "mock/MockFrameTracer.cpp",
        "mock/MockMessageQueue.cpp",
        "mock/MockNativeWindowSurface.cpp",
        "mock/MockSurfaceInterceptor.cpp",
        "mock/MockTimeStats.cpp",
        "mock/MockVsyncController.cpp",
        "mock/MockVSyncTracker.cpp",
        "mock/system/window/MockNativeWindow.cpp",
    ],
    static_libs: [
        "android.hardware.graphics.composer@2.1",
        "android.hardware.graphics.composer@2.2",
        "android.hardware.graphics.composer@2.3",
        "android.hardware.graphics.composer@2.4",
        "android.hardware.power@1.0",
        "android.hardware.power@1.1",
        "android.hardware.power@1.2",
        "android.hardware.power@1.3",
        "android.hardware.power-V1-cpp",
        "libcompositionengine_mocks",
        "libcompositionengine",
        "libframetimeline",
        "libgmock",
        "libgui_mocks",
        "liblayers_proto",
        "libperfetto_client_experimental",
        "librenderengine_mocks",
        "librenderengine",
        "libserviceutils",
        "libtimestats",
        "libtimestats_atoms_proto",
        "libtimestats_proto",
        "libtrace_proto",
        "perfetto_trace_protos",
    ],
    shared_libs: [
        "android.hardware.configstore-utils",
        "android.hardware.configstore@1.0",
        "android.hardware.configstore@1.1",
        "android.hardware.graphics.allocator@2.0",
        "android.hardware.graphics.allocator@3.0",
        "android.hardware.graphics.common@1.2",
        "libbase",
        "libbinder",
        "libcutils",
        "libEGL",
        "libfmq",
        "libGLESv1_CM",
        "libGLESv2",
        "libgui",
        "libhidlbase",
        "libinput",
        "liblog",
        "libnativewindow",
        "libprocessgroup",
        "libprotobuf-cpp-lite",
        "libSurfaceFlingerProp",
        "libsync",
        "libui",
        "libutils",
    ],
    header_libs: [
        "android.hardware.graphics.composer@2.1-command-buffer",
        "android.hardware.graphics.composer@2.2-command-buffer",
        "android.hardware.graphics.composer@2.3-command-buffer",
        "android.hardware.graphics.composer@2.4-command-buffer",
        "libsurfaceflinger_headers",
    ],
}
