1/* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include "napi/native_api.h" 17#include <GLES2/gl2.h> 18#include <IPCKit/ipc_cparcel.h> 19#include <ctime> 20#include <native_buffer/native_buffer.h> 21#include <native_image/native_image.h> 22#include <native_window/external_window.h> 23#include "nativewindow.h" 24#include "hilog/log.h" 25 26#define SUCCESS 0 27#define FAIL (-1) 28 29napi_property_descriptor desc[] = { 30 // native window test 31 {"testNativeWindowCreateNativeWindowNullptr", nullptr, testNativeWindowCreateNativeWindowNullptr, nullptr, nullptr, 32 nullptr, napi_default, nullptr}, 33 {"testNativeWindowDestroyNativeWindowNullptr", nullptr, testNativeWindowDestroyNativeWindowNullptr, nullptr, 34 nullptr, nullptr, napi_default, nullptr}, 35 {"testNativeWindowGetSurfaceIdNullptr", nullptr, testNativeWindowGetSurfaceIdNullptr, nullptr, nullptr, nullptr, 36 napi_default, nullptr}, 37 {"testNativeWindowCreateNativeWindowFromSurfaceIdNullptr", nullptr, 38 testNativeWindowCreateNativeWindowFromSurfaceIdNullptr, nullptr, nullptr, nullptr, napi_default, nullptr}, 39 {"testNativeWindowCreateNativeWindowFromSurfaceIdNormal", nullptr, 40 testNativeWindowCreateNativeWindowFromSurfaceIdNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 41 {"testNativeWindowCreateNativeWindowFromSurfaceIdSurfaceId", nullptr, 42 testNativeWindowCreateNativeWindowFromSurfaceIdSurfaceId, nullptr, nullptr, nullptr, napi_default, nullptr}, 43 44 {"testNativeWindowCreateNativeWindowBufferFromNativeBufferNullptr", nullptr, 45 testNativeWindowCreateNativeWindowBufferFromNativeBufferNullptr, nullptr, nullptr, nullptr, napi_default, nullptr}, 46 {"testNativeWindowCreateNativeWindowBufferFromSurfaceBufferNullptr", nullptr, 47 testNativeWindowCreateNativeWindowBufferFromSurfaceBufferNullptr, nullptr, nullptr, nullptr, napi_default, 48 nullptr}, 49 {"testNativeWindowDestroyNativeWindowBufferNullptr", nullptr, testNativeWindowDestroyNativeWindowBufferNullptr, 50 nullptr, nullptr, nullptr, napi_default, nullptr}, 51 {"testNativeWindowGetBufferHandleFromNativeNullptr", nullptr, testNativeWindowGetBufferHandleFromNativeNullptr, 52 nullptr, nullptr, nullptr, napi_default, nullptr}, 53 {"testNativeWindowCreateNativeWindowBufferFromNativeBufferNormal", nullptr, 54 testNativeWindowCreateNativeWindowBufferFromNativeBufferNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 55 {"testNativeWindowCreateNativeWindowBufferFromNativeBufferMuch", nullptr, 56 testNativeWindowCreateNativeWindowBufferFromNativeBufferMuch, nullptr, nullptr, nullptr, napi_default, nullptr}, 57 58 {"testNativeWindowNativeWindowRequestBufferNullptr", nullptr, testNativeWindowNativeWindowRequestBufferNullptr, 59 nullptr, nullptr, nullptr, napi_default, nullptr}, 60 {"testNativeWindowNativeWindowAbortBufferNullptr", nullptr, testNativeWindowNativeWindowAbortBufferNullptr, nullptr, 61 nullptr, nullptr, napi_default, nullptr}, 62 {"testNativeWindowNativeWindowRequestAbortBufferNormal", nullptr, 63 testNativeWindowNativeWindowRequestAbortBufferNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 64 {"testNativeWindowNativeWindowRequestAbortBufferAbnormal", nullptr, 65 testNativeWindowNativeWindowRequestAbortBufferAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 66 {"testNativeWindowNativeWindowRequestBufferFenceFdNormal", nullptr, 67 testNativeWindowNativeWindowRequestBufferFenceFdNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 68 {"testNativeWindowNativeWindowRequestBufferFenceFdAbnormal", nullptr, 69 testNativeWindowNativeWindowRequestBufferFenceFdAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 70 {"testNativeWindowNativeWindowRequestAbortBufferMax", nullptr, testNativeWindowNativeWindowRequestAbortBufferMax, 71 nullptr, nullptr, nullptr, napi_default, nullptr}, 72 {"testNativeWindowNativeWindowRequestAbortBufferErrorCode", nullptr, 73 testNativeWindowNativeWindowRequestAbortBufferErrorCode, nullptr, nullptr, nullptr, napi_default, nullptr}, 74 75 {"testNativeWindowWriteToParcelErrptr", nullptr, testNativeWindowWriteToParcelErrptr, nullptr, nullptr, nullptr, 76 napi_default, nullptr}, 77 {"testNativeWindowReadFromParcelErrptr", nullptr, testNativeWindowReadFromParcelErrptr, nullptr, nullptr, nullptr, 78 napi_default, nullptr}, 79 {"testNativeWindowWRParcelNormal", nullptr, testNativeWindowWRParcelNormal, nullptr, nullptr, nullptr, napi_default, 80 nullptr}, 81 {"testNativeWindowWriteToParcelAbNormal", nullptr, testNativeWindowWriteToParcelAbNormal, nullptr, nullptr, nullptr, 82 napi_default, nullptr}, 83 {"testNativeWindowReadFromParcelAbNormal", nullptr, testNativeWindowReadFromParcelAbNormal, nullptr, nullptr, 84 nullptr, napi_default, nullptr}, 85 {"testNativeWindowWRParcelDifferent", nullptr, testNativeWindowWRParcelDifferent, nullptr, nullptr, nullptr, 86 napi_default, nullptr}, 87 88 {"testNativeWindowNativeWindowFlushBufferNullptr", nullptr, testNativeWindowNativeWindowFlushBufferNullptr, nullptr, 89 nullptr, nullptr, napi_default, nullptr}, 90 {"testNativeWindowNativeWindowFlushBufferNormal", nullptr, testNativeWindowNativeWindowFlushBufferNormal, nullptr, 91 nullptr, nullptr, napi_default, nullptr}, 92 {"testNativeWindowNativeWindowFlushBufferAbnormal", nullptr, testNativeWindowNativeWindowFlushBufferAbnormal, 93 nullptr, nullptr, nullptr, napi_default, nullptr}, 94 {"testNativeWindowGetLastFlushedBufferV2Nullptr", nullptr, testNativeWindowGetLastFlushedBufferV2Nullptr, nullptr, 95 nullptr, nullptr, napi_default, nullptr}, 96 {"testNativeWindowGetLastFlushedBufferNullptr", nullptr, testNativeWindowGetLastFlushedBufferNullptr, nullptr, 97 nullptr, nullptr, napi_default, nullptr}, 98 {"testNativeWindowGetLastFlushedBufferV2Normal", nullptr, testNativeWindowGetLastFlushedBufferV2Normal, nullptr, 99 nullptr, nullptr, napi_default, nullptr}, 100 {"testNativeWindowGetLastFlushedBufferNormal", nullptr, testNativeWindowGetLastFlushedBufferNormal, nullptr, 101 nullptr, nullptr, napi_default, nullptr}, 102 103 {"testNativeWindowSetBufferHold", nullptr, testNativeWindowSetBufferHold, nullptr, nullptr, nullptr, napi_default, 104 nullptr}, 105 {"testNativeWindowGetNativeObjectMagicNullptr", nullptr, testNativeWindowGetNativeObjectMagicNullptr, nullptr, 106 nullptr, nullptr, napi_default, nullptr}, 107 {"testNativeWindowGetNativeObjectMagicNormal", nullptr, testNativeWindowGetNativeObjectMagicNormal, nullptr, 108 nullptr, nullptr, napi_default, nullptr}, 109 {"testNativeWindowNativeObjectReferenceNullptr", nullptr, testNativeWindowNativeObjectReferenceNullptr, nullptr, 110 nullptr, nullptr, napi_default, nullptr}, 111 {"testNativeWindowNativeObjectReferenceNormal", nullptr, testNativeWindowNativeObjectReferenceNormal, nullptr, 112 nullptr, nullptr, napi_default, nullptr}, 113 {"testNativeWindowNativeObjectUnreferenceNullptr", nullptr, testNativeWindowNativeObjectUnreferenceNullptr, nullptr, 114 nullptr, nullptr, napi_default, nullptr}, 115 {"testNativeWindowNativeObjectUnreferenceNormal", nullptr, testNativeWindowNativeObjectUnreferenceNormal, nullptr, 116 nullptr, nullptr, napi_default, nullptr}, 117 {"testNativeWindowNativeWindowAttachBufferNullptr", nullptr, testNativeWindowNativeWindowAttachBufferNullptr, 118 nullptr, nullptr, nullptr, napi_default, nullptr}, 119 {"testNativeWindowNativeWindowDetachBufferNullptr", nullptr, testNativeWindowNativeWindowDetachBufferNullptr, 120 nullptr, nullptr, nullptr, napi_default, nullptr}, 121 {"testNativeWindowNativeWindowDetachBufferNormal", nullptr, testNativeWindowNativeWindowDetachBufferNormal, nullptr, 122 nullptr, nullptr, napi_default, nullptr}, 123 {"testNativeWindowNativeWindowAttachBufferErrorCode", nullptr, testNativeWindowNativeWindowAttachBufferErrorCode, 124 nullptr, nullptr, nullptr, napi_default, nullptr}, 125 126 {"testNativeWindowNativeWindowAttachBufferNormal", nullptr, testNativeWindowNativeWindowAttachBufferNormal, nullptr, 127 nullptr, nullptr, napi_default, nullptr}, 128 {"testNativeWindowNativeWindowDetachBufferErrorCode", nullptr, testNativeWindowNativeWindowDetachBufferErrorCode, 129 nullptr, nullptr, nullptr, napi_default, nullptr}, 130 131 {"testNativeWindowNativeWindowAtDetachDifferentBufferNormal", nullptr, 132 testNativeWindowNativeWindowAtDetachDifferentBufferNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 133 {"testNativeWindowNativeWindowAtDetachDifferentBufferAbnormal", nullptr, 134 testNativeWindowNativeWindowAtDetachDifferentBufferAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 135 {"testNativeWindowNativeWindowHandleOptNullptr", nullptr, testNativeWindowNativeWindowHandleOptNullptr, nullptr, 136 nullptr, nullptr, napi_default, nullptr}, 137 {"testNativeWindowNativeWindowHandleOptSetGetBufferGeometryNormal", nullptr, 138 testNativeWindowNativeWindowHandleOptSetGetBufferGeometryNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 139 {"testNativeWindowNativeWindowHandleOptSetGetBufferGeometryAbnormal", nullptr, 140 testNativeWindowNativeWindowHandleOptSetGetBufferGeometryAbnormal, nullptr, nullptr, nullptr, napi_default, 141 nullptr}, 142 {"testNativeWindowNativeWindowHandleOptSetGetFormatNormal", nullptr, 143 testNativeWindowNativeWindowHandleOptSetGetFormatNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 144 {"testNativeWindowNativeWindowHandleOptSetGetFormatAbnormal", nullptr, 145 testNativeWindowNativeWindowHandleOptSetGetFormatAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 146 {"testNativeWindowNativeWindowHandleOptSetGetUsageNormal", nullptr, 147 testNativeWindowNativeWindowHandleOptSetGetUsageNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 148 {"testNativeWindowNativeWindowHandleOptSetGetUsageAbnormal", nullptr, 149 testNativeWindowNativeWindowHandleOptSetGetUsageAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 150 {"testNativeWindowNativeWindowHandleOptSetGetStrideNormal", nullptr, 151 testNativeWindowNativeWindowHandleOptSetGetStrideNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 152 {"testNativeWindowNativeWindowHandleOptSetGetStrideAbnormal", nullptr, 153 testNativeWindowNativeWindowHandleOptSetGetStrideAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 154 {"testNativeWindowNativeWindowHandleOptSetGetSwapIntervalNormal", nullptr, 155 testNativeWindowNativeWindowHandleOptSetGetSwapIntervalNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 156 {"testNativeWindowNativeWindowHandleOptSetGetSwapIntervalAbnormal", nullptr, 157 testNativeWindowNativeWindowHandleOptSetGetSwapIntervalAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 158 {"testNativeWindowNativeWindowHandleOptSetGetColorGamutNormal", nullptr, 159 testNativeWindowNativeWindowHandleOptSetGetColorGamutNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 160 {"testNativeWindowNativeWindowHandleOptSetGetColorGamutAbnormal", nullptr, 161 testNativeWindowNativeWindowHandleOptSetGetColorGamutAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 162 {"testNativeWindowNativeWindowHandleOptSetGetTransformNormal", nullptr, 163 testNativeWindowNativeWindowHandleOptSetGetTransformNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 164 {"testNativeWindowNativeWindowHandleOptSetGetTransformAbnormal", nullptr, 165 testNativeWindowNativeWindowHandleOptSetGetTransformAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 166 {"testNativeWindowNativeWindowHandleOptSetUiTimeStampNormal", nullptr, 167 testNativeWindowNativeWindowHandleOptSetUiTimeStampNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 168 {"testNativeWindowNativeWindowHandleOptSetUiTimeStampAbnormal", nullptr, 169 testNativeWindowNativeWindowHandleOptSetUiTimeStampAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 170 {"testNativeWindowNativeWindowHandleOptGetBufferQueueSize", nullptr, 171 testNativeWindowNativeWindowHandleOptGetBufferQueueSize, nullptr, nullptr, nullptr, napi_default, nullptr}, 172 {"testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessNormal", nullptr, 173 testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessNormal, nullptr, nullptr, nullptr, napi_default, 174 nullptr}, 175 {"testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessAbnormal", nullptr, 176 testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessAbnormal, nullptr, nullptr, nullptr, napi_default, 177 nullptr}, 178 {"testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessNormal", nullptr, 179 testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessNormal, nullptr, nullptr, nullptr, napi_default, 180 nullptr}, 181 {"testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessAbnormal", nullptr, 182 testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessAbnormal, nullptr, nullptr, nullptr, napi_default, 183 nullptr}, 184 {"testNativeWindowNativeWindowHandleOptSetGetSourceTypeNormal", nullptr, 185 testNativeWindowNativeWindowHandleOptSetGetSourceTypeNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 186 {"testNativeWindowNativeWindowHandleOptSetGetSourceTypeAbnormal", nullptr, 187 testNativeWindowNativeWindowHandleOptSetGetSourceTypeAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 188 {"testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeNormal", nullptr, 189 testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeNormal, nullptr, nullptr, nullptr, napi_default, 190 nullptr}, 191 {"testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeAbnormal", nullptr, 192 testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeAbnormal, nullptr, nullptr, nullptr, napi_default, 193 nullptr}, 194 {"testNativeWindowNativeWindowSetSetScalingModeV2Nullptr", nullptr, 195 testNativeWindowNativeWindowSetSetScalingModeV2Nullptr, nullptr, nullptr, nullptr, napi_default, nullptr}, 196 {"testNativeWindowNativeWindowSetScalingModeV2ScalingMode", nullptr, 197 testNativeWindowNativeWindowSetScalingModeV2ScalingMode, nullptr, nullptr, nullptr, napi_default, nullptr}, 198 {"testNativeWindowGetColorSpaceFirst", nullptr, testNativeWindowGetColorSpaceFirst, nullptr, nullptr, nullptr, 199 napi_default, nullptr}, 200 {"testNativeWindowSetColorSpaceNormal", nullptr, testNativeWindowSetColorSpaceNormal, nullptr, nullptr, nullptr, 201 napi_default, nullptr}, 202 {"testNativeWindowSetColorSpaceNullptr", nullptr, testNativeWindowSetColorSpaceNullptr, nullptr, nullptr, nullptr, 203 napi_default, nullptr}, 204 {"testNativeWindowSetColorSpaceAbnormal", nullptr, testNativeWindowSetColorSpaceAbnormal, nullptr, nullptr, nullptr, 205 napi_default, nullptr}, 206 {"testNativeWindowGetMetadataValueFirst", nullptr, testNativeWindowGetMetadataValueFirst, nullptr, nullptr, nullptr, 207 napi_default, nullptr}, 208 {"testNativeWindowSetDynamicMetadataValue", nullptr, testNativeWindowSetDynamicMetadataValue, nullptr, nullptr, 209 nullptr, napi_default, nullptr}, 210 {"testNativeWindowSetMetadataValueTimes", nullptr, testNativeWindowSetMetadataValueTimes, nullptr, nullptr, nullptr, 211 napi_default, nullptr}, 212 {"testNativeWindowSetStaticMetadataValue", nullptr, testNativeWindowSetStaticMetadataValue, nullptr, nullptr, 213 nullptr, napi_default, nullptr}, 214 {"testNativeWindowSetMetadataValue", nullptr, testNativeWindowSetMetadataValue, nullptr, nullptr, nullptr, 215 napi_default, nullptr}, 216 {"testNativeWindowSetNullMetadataValue", nullptr, testNativeWindowSetNullMetadataValue, nullptr, nullptr, nullptr, 217 napi_default, nullptr}, 218 {"testNativeWindowSetMetadataValueNullptr", nullptr, testNativeWindowSetMetadataValueNullptr, nullptr, nullptr, 219 nullptr, napi_default, nullptr}, 220 {"testNativeWindowGetMetadataValueAbnormal", nullptr, testNativeWindowGetMetadataValueAbnormal, nullptr, nullptr, 221 nullptr, napi_default, nullptr}, 222 {"testNativeWindowGetMetadataValueNullptr", nullptr, testNativeWindowGetMetadataValueNullptr, nullptr, nullptr, 223 nullptr, napi_default, nullptr}, 224 {"testNativeWindowNativeWindowFlushBufferErrorCode", nullptr, testNativeWindowNativeWindowFlushBufferErrorCode, 225 nullptr, nullptr, nullptr, napi_default, nullptr}, 226 {"testNativeWindowGetColorSpaceNullptr", nullptr, testNativeWindowGetColorSpaceNullptr, nullptr, nullptr, nullptr, 227 napi_default, nullptr}, 228 {"testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampNormal", nullptr, 229 testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampNormal, nullptr, nullptr, nullptr, napi_default, 230 nullptr}, 231 {"testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampAbNormal", nullptr, 232 testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampAbNormal, nullptr, nullptr, nullptr, napi_default, 233 nullptr}}; 234 235EXTERN_C_START 236static napi_value Init(napi_env env, napi_value exports) 237{ 238 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); 239 return exports; 240} 241EXTERN_C_END 242 243static napi_module demoModule = { 244 .nm_version = 1, 245 .nm_flags = 0, 246 .nm_filename = nullptr, 247 .nm_register_func = Init, 248 .nm_modname = "nativewindow", 249 .nm_priv = ((void *)0), 250 .reserved = {0}, 251}; 252 253extern "C" __attribute__((constructor)) void RegisterModule(void) { napi_module_register(&demoModule); }; 254