1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #pragma once 18 19 #include <gmock/gmock.h> 20 21 #include "DisplayHardware/ComposerHal.h" 22 #include "DisplayHardware/HWC2.h" 23 24 namespace android { 25 26 class GraphicBuffer; 27 28 namespace Hwc2::mock { 29 30 using android::hardware::graphics::common::V1_0::ColorTransform; 31 using android::hardware::graphics::common::V1_0::Transform; 32 using android::hardware::graphics::common::V1_1::RenderIntent; 33 using android::hardware::graphics::common::V1_2::ColorMode; 34 using android::hardware::graphics::common::V1_2::Dataspace; 35 using android::hardware::graphics::common::V1_2::PixelFormat; 36 37 using android::hardware::graphics::composer::V2_1::Config; 38 using android::hardware::graphics::composer::V2_1::Display; 39 using android::hardware::graphics::composer::V2_1::Error; 40 using android::hardware::graphics::composer::V2_1::IComposer; 41 using android::hardware::graphics::composer::V2_1::Layer; 42 using android::hardware::graphics::composer::V2_4::IComposerCallback; 43 using android::hardware::graphics::composer::V2_4::IComposerClient; 44 45 using aidl::android::hardware::graphics::common::DisplayDecorationSupport; 46 47 class Composer : public Hwc2::Composer { 48 public: 49 using Display = android::hardware::graphics::composer::V2_1::Display; 50 Composer(); 51 ~Composer() override; 52 53 MOCK_METHOD(bool, isSupported, (OptionalFeature), (const, override)); 54 MOCK_METHOD0(getCapabilities, 55 std::vector<aidl::android::hardware::graphics::composer3::Capability>()); 56 MOCK_METHOD0(dumpDebugInfo, std::string()); 57 MOCK_METHOD1(registerCallback, void(HWC2::ComposerCallback&)); 58 MOCK_METHOD1(executeCommands, Error(Display)); 59 MOCK_METHOD0(getMaxVirtualDisplayCount, uint32_t()); 60 MOCK_METHOD4(createVirtualDisplay, Error(uint32_t, uint32_t, PixelFormat*, Display*)); 61 MOCK_METHOD1(destroyVirtualDisplay, Error(Display)); 62 MOCK_METHOD1(acceptDisplayChanges, Error(Display)); 63 MOCK_METHOD2(createLayer, Error(Display, Layer* outLayer)); 64 MOCK_METHOD2(destroyLayer, Error(Display, Layer)); 65 MOCK_METHOD2(getActiveConfig, Error(Display, Config*)); 66 MOCK_METHOD3(getChangedCompositionTypes, 67 Error(Display, std::vector<Layer>*, 68 std::vector<aidl::android::hardware::graphics::composer3::Composition>*)); 69 MOCK_METHOD2(getColorModes, Error(Display, std::vector<ColorMode>*)); 70 MOCK_METHOD4(getDisplayAttribute, 71 Error(Display, Config config, IComposerClient::Attribute, int32_t*)); 72 MOCK_METHOD2(getDisplayConfigs, Error(Display, std::vector<Config>*)); 73 MOCK_METHOD2(getDisplayName, Error(Display, std::string*)); 74 MOCK_METHOD4(getDisplayRequests, 75 Error(Display, uint32_t*, std::vector<Layer>*, std::vector<uint32_t>*)); 76 MOCK_METHOD2(getDozeSupport, Error(Display, bool*)); 77 MOCK_METHOD2(getKernelIdleTimerSupport, Error(Display, bool*)); 78 MOCK_METHOD5(getHdrCapabilities, Error(Display, std::vector<Hdr>*, float*, float*, float*)); 79 MOCK_METHOD1(getPerFrameMetadataKeys, 80 std::vector<IComposerClient::PerFrameMetadataKey>(Display)); 81 MOCK_METHOD2(getDataspaceSaturationMatrix, Error(Dataspace, mat4*)); 82 MOCK_METHOD3(getDisplayIdentificationData, Error(Display, uint8_t*, std::vector<uint8_t>*)); 83 MOCK_METHOD3(getReleaseFences, Error(Display, std::vector<Layer>*, std::vector<int>*)); 84 MOCK_METHOD2(presentDisplay, Error(Display, int*)); 85 MOCK_METHOD2(setActiveConfig, Error(Display, Config)); 86 MOCK_METHOD6(setClientTarget, 87 Error(Display, uint32_t, const sp<GraphicBuffer>&, int, Dataspace, 88 const std::vector<IComposerClient::Rect>&)); 89 MOCK_METHOD3(setColorMode, Error(Display, ColorMode, RenderIntent)); 90 MOCK_METHOD2(setColorTransform, Error(Display, const float*)); 91 MOCK_METHOD3(setOutputBuffer, Error(Display, const native_handle_t*, int)); 92 MOCK_METHOD2(setPowerMode, Error(Display, IComposerClient::PowerMode)); 93 MOCK_METHOD2(setVsyncEnabled, Error(Display, IComposerClient::Vsync)); 94 MOCK_METHOD1(setClientTargetSlotCount, Error(Display)); 95 MOCK_METHOD4(validateDisplay, Error(Display, nsecs_t, uint32_t*, uint32_t*)); 96 MOCK_METHOD6(presentOrValidateDisplay, 97 Error(Display, nsecs_t, uint32_t*, uint32_t*, int*, uint32_t*)); 98 MOCK_METHOD4(setCursorPosition, Error(Display, Layer, int32_t, int32_t)); 99 MOCK_METHOD5(setLayerBuffer, Error(Display, Layer, uint32_t, const sp<GraphicBuffer>&, int)); 100 MOCK_METHOD4(setLayerBufferSlotsToClear, 101 Error(Display, Layer, const std::vector<uint32_t>&, uint32_t)); 102 MOCK_METHOD3(setLayerSurfaceDamage, 103 Error(Display, Layer, const std::vector<IComposerClient::Rect>&)); 104 MOCK_METHOD3(setLayerBlendMode, Error(Display, Layer, IComposerClient::BlendMode)); 105 MOCK_METHOD3(setLayerColor, 106 Error(Display, Layer, const aidl::android::hardware::graphics::composer3::Color&)); 107 MOCK_METHOD3(setLayerCompositionType, 108 Error(Display, Layer, aidl::android::hardware::graphics::composer3::Composition)); 109 MOCK_METHOD3(setLayerDataspace, Error(Display, Layer, Dataspace)); 110 MOCK_METHOD3(setLayerPerFrameMetadata, 111 Error(Display, Layer, const std::vector<IComposerClient::PerFrameMetadata>&)); 112 MOCK_METHOD3(setLayerDisplayFrame, Error(Display, Layer, const IComposerClient::Rect&)); 113 MOCK_METHOD3(setLayerPlaneAlpha, Error(Display, Layer, float)); 114 MOCK_METHOD3(setLayerSidebandStream, Error(Display, Layer, const native_handle_t*)); 115 MOCK_METHOD3(setLayerSourceCrop, Error(Display, Layer, const IComposerClient::FRect&)); 116 MOCK_METHOD3(setLayerTransform, Error(Display, Layer, Transform)); 117 MOCK_METHOD3(setLayerVisibleRegion, 118 Error(Display, Layer, const std::vector<IComposerClient::Rect>&)); 119 MOCK_METHOD3(setLayerZOrder, Error(Display, Layer, uint32_t)); 120 MOCK_METHOD3(getRenderIntents, Error(Display, ColorMode, std::vector<RenderIntent>*)); 121 MOCK_METHOD3(setLayerColorTransform, Error(Display, Layer, const float*)); 122 MOCK_METHOD4(getDisplayedContentSamplingAttributes, 123 Error(Display, PixelFormat*, Dataspace*, uint8_t*)); 124 MOCK_METHOD4(setDisplayContentSamplingEnabled, Error(Display, bool, uint8_t, uint64_t)); 125 MOCK_METHOD4(getDisplayedContentSample, 126 Error(Display, uint64_t, uint64_t, DisplayedFrameStats*)); 127 MOCK_METHOD3(setLayerPerFrameMetadataBlobs, 128 Error(Display, Layer, const std::vector<IComposerClient::PerFrameMetadataBlob>&)); 129 MOCK_METHOD4(setDisplayBrightness, 130 Error(Display, float, float, const DisplayBrightnessOptions&)); 131 MOCK_METHOD2( 132 getDisplayCapabilities, 133 Error(Display, 134 std::vector<aidl::android::hardware::graphics::composer3::DisplayCapability>*)); 135 MOCK_METHOD2(getDisplayConnectionType, 136 V2_4::Error(Display, IComposerClient::DisplayConnectionType*)); 137 MOCK_METHOD3(getSupportedDisplayVsyncPeriods, 138 V2_4::Error(Display, Config, std::vector<VsyncPeriodNanos>*)); 139 MOCK_METHOD2(getDisplayVsyncPeriod, V2_4::Error(Display, VsyncPeriodNanos*)); 140 MOCK_METHOD4(setActiveConfigWithConstraints, 141 V2_4::Error(Display, Config, const IComposerClient::VsyncPeriodChangeConstraints&, 142 VsyncPeriodChangeTimeline*)); 143 MOCK_METHOD2(setAutoLowLatencyMode, V2_4::Error(Display, bool)); 144 MOCK_METHOD2(setBootDisplayConfig, Error(Display, Config)); 145 MOCK_METHOD1(clearBootDisplayConfig, Error(Display)); 146 MOCK_METHOD2(getPreferredBootDisplayConfig, Error(Display, Config*)); 147 MOCK_METHOD1(getHdrConversionCapabilities, 148 Error(std::vector< 149 aidl::android::hardware::graphics::common::HdrConversionCapability>*)); 150 MOCK_METHOD2(setHdrConversionStrategy, 151 Error(aidl::android::hardware::graphics::common::HdrConversionStrategy, 152 aidl::android::hardware::graphics::common::Hdr*)); 153 MOCK_METHOD2(getSupportedContentTypes, 154 V2_4::Error(Display, std::vector<IComposerClient::ContentType>*)); 155 MOCK_METHOD2(setContentType, V2_4::Error(Display, IComposerClient::ContentType)); 156 MOCK_METHOD5(setLayerGenericMetadata, 157 V2_4::Error(Display, Layer, const std::string&, bool, 158 const std::vector<uint8_t>&)); 159 MOCK_METHOD1(getLayerGenericMetadataKeys, 160 V2_4::Error(std::vector<IComposerClient::LayerGenericMetadataKey>*)); 161 MOCK_METHOD2(getClientTargetProperty, 162 Error(Display, 163 aidl::android::hardware::graphics::composer3:: 164 ClientTargetPropertyWithBrightness*)); 165 MOCK_METHOD3(setLayerBrightness, Error(Display, Layer, float)); 166 MOCK_METHOD3(setLayerBlockingRegion, 167 Error(Display, Layer, const std::vector<IComposerClient::Rect>&)); 168 MOCK_METHOD2(getDisplayDecorationSupport, 169 Error(Display, std::optional<DisplayDecorationSupport>*)); 170 MOCK_METHOD2(setIdleTimerEnabled, Error(Display, std::chrono::milliseconds)); 171 MOCK_METHOD2(hasDisplayIdleTimerCapability, Error(Display, bool*)); 172 MOCK_METHOD2(getPhysicalDisplayOrientation, Error(Display, AidlTransform*)); 173 MOCK_METHOD1(getOverlaySupport, 174 Error(aidl::android::hardware::graphics::composer3::OverlayProperties*)); 175 MOCK_METHOD1(onHotplugConnect, void(Display)); 176 MOCK_METHOD1(onHotplugDisconnect, void(Display)); 177 MOCK_METHOD(Error, setRefreshRateChangedCallbackDebugEnabled, (Display, bool)); 178 }; 179 180 } // namespace Hwc2::mock 181 } // namespace android 182