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::Hdr; 36 using android::hardware::graphics::common::V1_2::PixelFormat; 37 38 using android::hardware::graphics::composer::V2_1::Config; 39 using android::hardware::graphics::composer::V2_1::Display; 40 using android::hardware::graphics::composer::V2_1::Error; 41 using android::hardware::graphics::composer::V2_1::IComposer; 42 using android::hardware::graphics::composer::V2_1::Layer; 43 using android::hardware::graphics::composer::V2_4::IComposerCallback; 44 using android::hardware::graphics::composer::V2_4::IComposerClient; 45 46 using aidl::android::hardware::graphics::common::DisplayDecorationSupport; 47 48 class Composer : public Hwc2::Composer { 49 public: 50 using Display = android::hardware::graphics::composer::V2_1::Display; 51 Composer(); 52 ~Composer() override; 53 54 MOCK_METHOD(bool, isSupported, (OptionalFeature), (const, override)); 55 MOCK_METHOD0(getCapabilities, 56 std::vector<aidl::android::hardware::graphics::composer3::Capability>()); 57 MOCK_METHOD0(dumpDebugInfo, std::string()); 58 MOCK_METHOD1(registerCallback, void(HWC2::ComposerCallback&)); 59 MOCK_METHOD0(resetCommands, void()); 60 MOCK_METHOD0(executeCommands, Error()); 61 MOCK_METHOD0(getMaxVirtualDisplayCount, uint32_t()); 62 MOCK_METHOD4(createVirtualDisplay, Error(uint32_t, uint32_t, PixelFormat*, Display*)); 63 MOCK_METHOD1(destroyVirtualDisplay, Error(Display)); 64 MOCK_METHOD1(acceptDisplayChanges, Error(Display)); 65 MOCK_METHOD2(createLayer, Error(Display, Layer* outLayer)); 66 MOCK_METHOD2(destroyLayer, Error(Display, Layer)); 67 MOCK_METHOD2(getActiveConfig, Error(Display, Config*)); 68 MOCK_METHOD3(getChangedCompositionTypes, 69 Error(Display, std::vector<Layer>*, 70 std::vector<aidl::android::hardware::graphics::composer3::Composition>*)); 71 MOCK_METHOD2(getColorModes, Error(Display, std::vector<ColorMode>*)); 72 MOCK_METHOD4(getDisplayAttribute, 73 Error(Display, Config config, IComposerClient::Attribute, int32_t*)); 74 MOCK_METHOD2(getDisplayConfigs, Error(Display, std::vector<Config>*)); 75 MOCK_METHOD2(getDisplayName, Error(Display, std::string*)); 76 MOCK_METHOD4(getDisplayRequests, 77 Error(Display, uint32_t*, std::vector<Layer>*, std::vector<uint32_t>*)); 78 MOCK_METHOD2(getDozeSupport, Error(Display, bool*)); 79 MOCK_METHOD2(getKernelIdleTimerSupport, Error(Display, bool*)); 80 MOCK_METHOD5(getHdrCapabilities, Error(Display, std::vector<Hdr>*, float*, float*, float*)); 81 MOCK_METHOD1(getPerFrameMetadataKeys, 82 std::vector<IComposerClient::PerFrameMetadataKey>(Display)); 83 MOCK_METHOD2(getDataspaceSaturationMatrix, Error(Dataspace, mat4*)); 84 MOCK_METHOD3(getDisplayIdentificationData, Error(Display, uint8_t*, std::vector<uint8_t>*)); 85 MOCK_METHOD3(getReleaseFences, Error(Display, std::vector<Layer>*, std::vector<int>*)); 86 MOCK_METHOD2(presentDisplay, Error(Display, int*)); 87 MOCK_METHOD2(setActiveConfig, Error(Display, Config)); 88 MOCK_METHOD6(setClientTarget, 89 Error(Display, uint32_t, const sp<GraphicBuffer>&, int, Dataspace, 90 const std::vector<IComposerClient::Rect>&)); 91 MOCK_METHOD3(setColorMode, Error(Display, ColorMode, RenderIntent)); 92 MOCK_METHOD2(setColorTransform, Error(Display, const float*)); 93 MOCK_METHOD3(setOutputBuffer, Error(Display, const native_handle_t*, int)); 94 MOCK_METHOD2(setPowerMode, Error(Display, IComposerClient::PowerMode)); 95 MOCK_METHOD2(setVsyncEnabled, Error(Display, IComposerClient::Vsync)); 96 MOCK_METHOD1(setClientTargetSlotCount, Error(Display)); 97 MOCK_METHOD4(validateDisplay, Error(Display, nsecs_t, uint32_t*, uint32_t*)); 98 MOCK_METHOD6(presentOrValidateDisplay, 99 Error(Display, nsecs_t, uint32_t*, uint32_t*, int*, uint32_t*)); 100 MOCK_METHOD4(setCursorPosition, Error(Display, Layer, int32_t, int32_t)); 101 MOCK_METHOD5(setLayerBuffer, Error(Display, Layer, uint32_t, const sp<GraphicBuffer>&, int)); 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_METHOD2(getSupportedContentTypes, 148 V2_4::Error(Display, std::vector<IComposerClient::ContentType>*)); 149 MOCK_METHOD2(setContentType, V2_4::Error(Display, IComposerClient::ContentType)); 150 MOCK_METHOD5(setLayerGenericMetadata, 151 V2_4::Error(Display, Layer, const std::string&, bool, 152 const std::vector<uint8_t>&)); 153 MOCK_METHOD1(getLayerGenericMetadataKeys, 154 V2_4::Error(std::vector<IComposerClient::LayerGenericMetadataKey>*)); 155 MOCK_METHOD2(getClientTargetProperty, 156 Error(Display, 157 aidl::android::hardware::graphics::composer3:: 158 ClientTargetPropertyWithBrightness*)); 159 MOCK_METHOD3(setLayerBrightness, Error(Display, Layer, float)); 160 MOCK_METHOD3(setLayerBlockingRegion, 161 Error(Display, Layer, const std::vector<IComposerClient::Rect>&)); 162 MOCK_METHOD2(getDisplayDecorationSupport, 163 Error(Display, std::optional<DisplayDecorationSupport>*)); 164 MOCK_METHOD2(setIdleTimerEnabled, Error(Display, std::chrono::milliseconds)); 165 MOCK_METHOD2(hasDisplayIdleTimerCapability, Error(Display, bool*)); 166 MOCK_METHOD2(getPhysicalDisplayOrientation, Error(Display, AidlTransform*)); 167 }; 168 169 } // namespace Hwc2::mock 170 } // namespace android 171