1f6603c60Sopenharmony_ci/* 2f6603c60Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License. 5f6603c60Sopenharmony_ci * You may obtain a copy of the License at 6f6603c60Sopenharmony_ci * 7f6603c60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f6603c60Sopenharmony_ci * 9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f6603c60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and 13f6603c60Sopenharmony_ci * limitations under the License. 14f6603c60Sopenharmony_ci */ 15f6603c60Sopenharmony_ci 16f6603c60Sopenharmony_ci#include <iostream> 17f6603c60Sopenharmony_ci#include <stdexcept> 18f6603c60Sopenharmony_ci#include "napi/native_api.h" 19f6603c60Sopenharmony_ci#include <bits/alltypes.h> 20f6603c60Sopenharmony_ci#include <ctime> 21f6603c60Sopenharmony_ci#include <native_vsync/native_vsync.h> 22f6603c60Sopenharmony_ci#include <stdexcept> 23f6603c60Sopenharmony_ci#include <cstdio> 24f6603c60Sopenharmony_ci#include <zconf.h> 25f6603c60Sopenharmony_ci 26f6603c60Sopenharmony_ci#define SUCCESS 0 27f6603c60Sopenharmony_ci#define FAIL (-1) 28f6603c60Sopenharmony_ci#define PARAM_0 0 29f6603c60Sopenharmony_ci#define NUMBER_2 2 30f6603c60Sopenharmony_ci#define NUMBER_3 3 31f6603c60Sopenharmony_ci#define TIMEOUT_FIVE 10 32f6603c60Sopenharmony_ci#define NUMBER_254 254 33f6603c60Sopenharmony_ci#define NUMBER_256 256 34f6603c60Sopenharmony_ci#define NUMBER_500 500 35f6603c60Sopenharmony_ci#define NUMBER_40001000 40001000 36f6603c60Sopenharmony_cistatic bool g_flag = false; 37f6603c60Sopenharmony_cistatic void OnVSync(long long timestamp, void *data) { g_flag = true; } 38f6603c60Sopenharmony_ci 39f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncCreate(napi_env env, napi_callback_info info) 40f6603c60Sopenharmony_ci{ 41f6603c60Sopenharmony_ci napi_value result = nullptr; 42f6603c60Sopenharmony_ci char name[] = "test"; 43f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(name, sizeof(name)); 44f6603c60Sopenharmony_ci if (nativeVSync != nullptr) { 45f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 46f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 47f6603c60Sopenharmony_ci } else { 48f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 49f6603c60Sopenharmony_ci } 50f6603c60Sopenharmony_ci return result; 51f6603c60Sopenharmony_ci} 52f6603c60Sopenharmony_ci 53f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncCreateFOne(napi_env env, napi_callback_info info) 54f6603c60Sopenharmony_ci{ 55f6603c60Sopenharmony_ci napi_value result = nullptr; 56f6603c60Sopenharmony_ci unsigned int length = 0; 57f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(nullptr, length); 58f6603c60Sopenharmony_ci if (nativeVSync != nullptr) { 59f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 60f6603c60Sopenharmony_ci } else { 61f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 62f6603c60Sopenharmony_ci } 63f6603c60Sopenharmony_ci return result; 64f6603c60Sopenharmony_ci} 65f6603c60Sopenharmony_ci 66f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncRequestFrame(napi_env env, napi_callback_info info) 67f6603c60Sopenharmony_ci{ 68f6603c60Sopenharmony_ci napi_value result = nullptr; 69f6603c60Sopenharmony_ci char name[] = "test"; 70f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(name, sizeof(name)); 71f6603c60Sopenharmony_ci OH_NativeVSync_FrameCallback callback = OnVSync; 72f6603c60Sopenharmony_ci int ret = OH_NativeVSync_RequestFrame(nativeVSync, callback, nullptr); 73f6603c60Sopenharmony_ci if (ret == SUCCESS) { 74f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 75f6603c60Sopenharmony_ci } else { 76f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 77f6603c60Sopenharmony_ci } 78f6603c60Sopenharmony_ci if (nativeVSync) { 79f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 80f6603c60Sopenharmony_ci } 81f6603c60Sopenharmony_ci return result; 82f6603c60Sopenharmony_ci} 83f6603c60Sopenharmony_ci 84f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncRequestFrameFOne(napi_env env, napi_callback_info info) 85f6603c60Sopenharmony_ci{ 86f6603c60Sopenharmony_ci napi_value result = nullptr; 87f6603c60Sopenharmony_ci int ret = OH_NativeVSync_RequestFrame(nullptr, nullptr, nullptr); 88f6603c60Sopenharmony_ci if (ret != SUCCESS) { 89f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 90f6603c60Sopenharmony_ci } else { 91f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 92f6603c60Sopenharmony_ci } 93f6603c60Sopenharmony_ci return result; 94f6603c60Sopenharmony_ci} 95f6603c60Sopenharmony_ci 96f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncRequestFrameFTwo(napi_env env, napi_callback_info info) 97f6603c60Sopenharmony_ci{ 98f6603c60Sopenharmony_ci napi_value result = nullptr; 99f6603c60Sopenharmony_ci char name[] = "test"; 100f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(name, sizeof(name)); 101f6603c60Sopenharmony_ci int ret = OH_NativeVSync_RequestFrame(nativeVSync, nullptr, nullptr); 102f6603c60Sopenharmony_ci if (ret != SUCCESS) { 103f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 104f6603c60Sopenharmony_ci } else { 105f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 106f6603c60Sopenharmony_ci } 107f6603c60Sopenharmony_ci if (nativeVSync) { 108f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 109f6603c60Sopenharmony_ci } 110f6603c60Sopenharmony_ci return result; 111f6603c60Sopenharmony_ci} 112f6603c60Sopenharmony_ci 113f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncGetPeriod(napi_env env, napi_callback_info info) 114f6603c60Sopenharmony_ci{ 115f6603c60Sopenharmony_ci napi_value result = nullptr; 116f6603c60Sopenharmony_ci char name[] = "test"; 117f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(name, sizeof(name)); 118f6603c60Sopenharmony_ci OH_NativeVSync_FrameCallback callback = OnVSync; 119f6603c60Sopenharmony_ci OH_NativeVSync_RequestFrame(nativeVSync, callback, nullptr); 120f6603c60Sopenharmony_ci time_t startTime = time(PARAM_0); 121f6603c60Sopenharmony_ci double diffTime = 0; 122f6603c60Sopenharmony_ci while (!g_flag && diffTime < TIMEOUT_FIVE) { 123f6603c60Sopenharmony_ci time_t curTime = time(PARAM_0); 124f6603c60Sopenharmony_ci diffTime = difftime(curTime, startTime); 125f6603c60Sopenharmony_ci } 126f6603c60Sopenharmony_ci long long period; 127f6603c60Sopenharmony_ci int ret = OH_NativeVSync_GetPeriod(nativeVSync, &period); 128f6603c60Sopenharmony_ci if (ret == SUCCESS) { 129f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 130f6603c60Sopenharmony_ci } else { 131f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 132f6603c60Sopenharmony_ci } 133f6603c60Sopenharmony_ci if (nativeVSync) { 134f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 135f6603c60Sopenharmony_ci } 136f6603c60Sopenharmony_ci return result; 137f6603c60Sopenharmony_ci} 138f6603c60Sopenharmony_ci 139f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncGetPeriodFOne(napi_env env, napi_callback_info info) 140f6603c60Sopenharmony_ci{ 141f6603c60Sopenharmony_ci napi_value result = nullptr; 142f6603c60Sopenharmony_ci long long period; 143f6603c60Sopenharmony_ci int ret = OH_NativeVSync_GetPeriod(nullptr, &period); 144f6603c60Sopenharmony_ci if (ret != SUCCESS) { 145f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 146f6603c60Sopenharmony_ci } else { 147f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 148f6603c60Sopenharmony_ci } 149f6603c60Sopenharmony_ci return result; 150f6603c60Sopenharmony_ci} 151f6603c60Sopenharmony_ci 152f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncCreateNull(napi_env env, napi_callback_info info) 153f6603c60Sopenharmony_ci{ 154f6603c60Sopenharmony_ci napi_value result = nullptr; 155f6603c60Sopenharmony_ci unsigned int length = 0; 156f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(nullptr, length); 157f6603c60Sopenharmony_ci if (nativeVSync == nullptr) { 158f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 159f6603c60Sopenharmony_ci } else { 160f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 161f6603c60Sopenharmony_ci } 162f6603c60Sopenharmony_ci return result; 163f6603c60Sopenharmony_ci} 164f6603c60Sopenharmony_ci 165f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncCreateNotEq(napi_env env, napi_callback_info info) 166f6603c60Sopenharmony_ci{ 167f6603c60Sopenharmony_ci napi_value result = nullptr; 168f6603c60Sopenharmony_ci char name[] = "testCase"; 169f6603c60Sopenharmony_ci unsigned int length = NUMBER_2; 170f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(name, length); 171f6603c60Sopenharmony_ci if (nativeVSync == nullptr) { 172f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 173f6603c60Sopenharmony_ci } else { 174f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 175f6603c60Sopenharmony_ci } 176f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 177f6603c60Sopenharmony_ci return result; 178f6603c60Sopenharmony_ci} 179f6603c60Sopenharmony_ci 180f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncCreateNormal(napi_env env, napi_callback_info info) 181f6603c60Sopenharmony_ci{ 182f6603c60Sopenharmony_ci napi_value result = nullptr; 183f6603c60Sopenharmony_ci char name[] = "testCase"; 184f6603c60Sopenharmony_ci unsigned int length = strlen(name); 185f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync1 = OH_NativeVSync_Create(name, length); 186f6603c60Sopenharmony_ci napi_create_array_with_length(env, NUMBER_2, &result); 187f6603c60Sopenharmony_ci napi_value result1 = nullptr; 188f6603c60Sopenharmony_ci napi_value result2 = nullptr; 189f6603c60Sopenharmony_ci if (nativeVSync1 == nullptr) { 190f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result1); 191f6603c60Sopenharmony_ci } else { 192f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result1); 193f6603c60Sopenharmony_ci } 194f6603c60Sopenharmony_ci napi_set_element(env, result, 0, result1); 195f6603c60Sopenharmony_ci 196f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync2 = OH_NativeVSync_Create(name, length); 197f6603c60Sopenharmony_ci if (nativeVSync2 == nullptr) { 198f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result2); 199f6603c60Sopenharmony_ci } else { 200f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result2); 201f6603c60Sopenharmony_ci } 202f6603c60Sopenharmony_ci 203f6603c60Sopenharmony_ci napi_set_element(env, result, 1, result2); 204f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync1); 205f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync2); 206f6603c60Sopenharmony_ci return result; 207f6603c60Sopenharmony_ci} 208f6603c60Sopenharmony_ci 209f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncCreateAbnormal(napi_env env, napi_callback_info info) 210f6603c60Sopenharmony_ci{ 211f6603c60Sopenharmony_ci napi_value result = nullptr; 212f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(NULL, 0); 213f6603c60Sopenharmony_ci if (nativeVSync == nullptr) { 214f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 215f6603c60Sopenharmony_ci } else { 216f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 217f6603c60Sopenharmony_ci return result; 218f6603c60Sopenharmony_ci } 219f6603c60Sopenharmony_ci nativeVSync = OH_NativeVSync_Create(0, 0); 220f6603c60Sopenharmony_ci if (nativeVSync == nullptr) { 221f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 222f6603c60Sopenharmony_ci } else { 223f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 224f6603c60Sopenharmony_ci return result; 225f6603c60Sopenharmony_ci } 226f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 227f6603c60Sopenharmony_ci return result; 228f6603c60Sopenharmony_ci} 229f6603c60Sopenharmony_ci 230f6603c60Sopenharmony_civoid MyFrameCallback(long long timestamp, void *data) 231f6603c60Sopenharmony_ci{ 232f6603c60Sopenharmony_ci int *myData = static_cast<int *>(data); 233f6603c60Sopenharmony_ci return; 234f6603c60Sopenharmony_ci} 235f6603c60Sopenharmony_ci 236f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncCreateDifLenth(napi_env env, napi_callback_info info) 237f6603c60Sopenharmony_ci{ 238f6603c60Sopenharmony_ci napi_value result = nullptr; 239f6603c60Sopenharmony_ci std::vector<std::string> myArray = { 240f6603c60Sopenharmony_ci "0", 241f6603c60Sopenharmony_ci "a", 242f6603c60Sopenharmony_ci "你", 243f6603c60Sopenharmony_ci "!@#¥%^&*()_+", 244f6603c60Sopenharmony_ci " ", 245f6603c60Sopenharmony_ci " ", 246f6603c60Sopenharmony_ci "这里有好多好多字符qazwsxedcrfvtgbyhnujqazwsxedcrfvtgbyhnujqazwsxedcrfvtgbyhnujqazwsxedcrfvtgbyhnuj", 247f6603c60Sopenharmony_ci "ab_cdefghijklmnopqrstuvwxyz", 248f6603c60Sopenharmony_ci "abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde"}; 249f6603c60Sopenharmony_ci napi_create_array_with_length(env, myArray.size(), &result); 250f6603c60Sopenharmony_ci 251f6603c60Sopenharmony_ci for (uint32_t index = 0; index < myArray.size(); index++) { 252f6603c60Sopenharmony_ci unsigned int len = strlen(myArray[index].c_str()); 253f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = nullptr; 254f6603c60Sopenharmony_ci napi_value resultIndex = nullptr; 255f6603c60Sopenharmony_ci nativeVSync = OH_NativeVSync_Create(myArray[index].c_str(), len); 256f6603c60Sopenharmony_ci if (nativeVSync == nullptr) { 257f6603c60Sopenharmony_ci napi_create_int32(env, FAIL+index, &result); 258f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 259f6603c60Sopenharmony_ci return result; 260f6603c60Sopenharmony_ci } else { 261f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 262f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 263f6603c60Sopenharmony_ci continue; 264f6603c60Sopenharmony_ci } 265f6603c60Sopenharmony_ci } 266f6603c60Sopenharmony_ci return result; 267f6603c60Sopenharmony_ci} 268f6603c60Sopenharmony_ci 269f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncCreateMuch(napi_env env, napi_callback_info info) 270f6603c60Sopenharmony_ci{ 271f6603c60Sopenharmony_ci napi_value result = nullptr; 272f6603c60Sopenharmony_ci char name[] = "testcase"; 273f6603c60Sopenharmony_ci unsigned int length = strlen(name); 274f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSyncArr[NUMBER_500]; 275f6603c60Sopenharmony_ci int success = 0; 276f6603c60Sopenharmony_ci for (uint32_t i = 0; i < NUMBER_500; i++) { 277f6603c60Sopenharmony_ci nativeVSyncArr[i] = OH_NativeVSync_Create(name, length); 278f6603c60Sopenharmony_ci if (nativeVSyncArr[i] != nullptr) { 279f6603c60Sopenharmony_ci success = success + 1; 280f6603c60Sopenharmony_ci continue; 281f6603c60Sopenharmony_ci } 282f6603c60Sopenharmony_ci } 283f6603c60Sopenharmony_ci if (success == NUMBER_254) { 284f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 285f6603c60Sopenharmony_ci } else { 286f6603c60Sopenharmony_ci napi_create_int32(env, success, &result); 287f6603c60Sopenharmony_ci } 288f6603c60Sopenharmony_ci for (uint32_t i = 0; i < NUMBER_500; i++) { 289f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSyncArr[i]); 290f6603c60Sopenharmony_ci } 291f6603c60Sopenharmony_ci return result; 292f6603c60Sopenharmony_ci} 293f6603c60Sopenharmony_ci 294f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncGetPeriodNullptr(napi_env env, napi_callback_info info) 295f6603c60Sopenharmony_ci{ 296f6603c60Sopenharmony_ci napi_value result = nullptr; 297f6603c60Sopenharmony_ci long long period; 298f6603c60Sopenharmony_ci int res = OH_NativeVSync_GetPeriod(nullptr, &period); 299f6603c60Sopenharmony_ci napi_create_int32(env, res, &result); 300f6603c60Sopenharmony_ci return result; 301f6603c60Sopenharmony_ci} 302f6603c60Sopenharmony_ci 303f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncRequestFrameNullptr(napi_env env, napi_callback_info info) 304f6603c60Sopenharmony_ci{ 305f6603c60Sopenharmony_ci napi_value result = nullptr; 306f6603c60Sopenharmony_ci char name[] = "testcase"; 307f6603c60Sopenharmony_ci unsigned int length = strlen(name); 308f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(name, length); 309f6603c60Sopenharmony_ci napi_create_array_with_length(env, NUMBER_3, &result); 310f6603c60Sopenharmony_ci int param = 0; 311f6603c60Sopenharmony_ci int res = OH_NativeVSync_RequestFrame(nullptr, MyFrameCallback, ¶m); 312f6603c60Sopenharmony_ci if (res != NUMBER_40001000) { 313f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 314f6603c60Sopenharmony_ci return result; 315f6603c60Sopenharmony_ci } 316f6603c60Sopenharmony_ci res = OH_NativeVSync_RequestFrame(nativeVSync, nullptr, ¶m); 317f6603c60Sopenharmony_ci if (res != NUMBER_40001000) { 318f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 319f6603c60Sopenharmony_ci return result; 320f6603c60Sopenharmony_ci } 321f6603c60Sopenharmony_ci res = OH_NativeVSync_RequestFrame(nativeVSync, MyFrameCallback, nullptr); 322f6603c60Sopenharmony_ci if (res != 0) { 323f6603c60Sopenharmony_ci napi_create_int32(env, FAIL, &result); 324f6603c60Sopenharmony_ci return result; 325f6603c60Sopenharmony_ci } 326f6603c60Sopenharmony_ci napi_create_int32(env, SUCCESS, &result); 327f6603c60Sopenharmony_ci return result; 328f6603c60Sopenharmony_ci} 329f6603c60Sopenharmony_ci 330f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncRequestFrameNormal(napi_env env, napi_callback_info info) 331f6603c60Sopenharmony_ci{ 332f6603c60Sopenharmony_ci napi_value result = nullptr; 333f6603c60Sopenharmony_ci char name[] = "testcase"; 334f6603c60Sopenharmony_ci unsigned int length = strlen(name); 335f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(name, length); 336f6603c60Sopenharmony_ci int *param = nullptr; 337f6603c60Sopenharmony_ci int res = OH_NativeVSync_RequestFrame(nativeVSync, MyFrameCallback, param); 338f6603c60Sopenharmony_ci napi_create_int32(env, res, &result); 339f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 340f6603c60Sopenharmony_ci return result; 341f6603c60Sopenharmony_ci} 342f6603c60Sopenharmony_ci 343f6603c60Sopenharmony_cistatic napi_value OHNativeVSyncRequestFrameParamErr(napi_env env, napi_callback_info info) 344f6603c60Sopenharmony_ci{ 345f6603c60Sopenharmony_ci napi_value result = nullptr; 346f6603c60Sopenharmony_ci char name[] = "testcase"; 347f6603c60Sopenharmony_ci unsigned int length = strlen(name); 348f6603c60Sopenharmony_ci OH_NativeVSync *nativeVSync = OH_NativeVSync_Create(name, length); 349f6603c60Sopenharmony_ci char param[] = "test"; 350f6603c60Sopenharmony_ci int res = OH_NativeVSync_RequestFrame(nativeVSync, MyFrameCallback, ¶m); 351f6603c60Sopenharmony_ci napi_create_int32(env, res, &result); 352f6603c60Sopenharmony_ci OH_NativeVSync_Destroy(nativeVSync); 353f6603c60Sopenharmony_ci return result; 354f6603c60Sopenharmony_ci} 355f6603c60Sopenharmony_ci 356f6603c60Sopenharmony_ciEXTERN_C_START 357f6603c60Sopenharmony_cistatic napi_value Init(napi_env env, napi_value exports) 358f6603c60Sopenharmony_ci{ 359f6603c60Sopenharmony_ci napi_property_descriptor desc[] = { 360f6603c60Sopenharmony_ci {"oHNativeVSyncCreate", nullptr, OHNativeVSyncCreate, nullptr, nullptr, nullptr, napi_default, nullptr}, 361f6603c60Sopenharmony_ci {"oHNativeVSyncCreateFOne", nullptr, OHNativeVSyncCreateFOne, nullptr, nullptr, nullptr, napi_default, nullptr}, 362f6603c60Sopenharmony_ci {"oHNativeVSyncRequestFrame", nullptr, OHNativeVSyncRequestFrame, nullptr, nullptr, nullptr, napi_default, 363f6603c60Sopenharmony_ci nullptr}, 364f6603c60Sopenharmony_ci {"oHNativeVSyncRequestFrameFOne", nullptr, OHNativeVSyncRequestFrameFOne, nullptr, nullptr, nullptr, 365f6603c60Sopenharmony_ci napi_default, nullptr}, 366f6603c60Sopenharmony_ci {"oHNativeVSyncRequestFrameFTwo", nullptr, OHNativeVSyncRequestFrameFTwo, nullptr, nullptr, nullptr, 367f6603c60Sopenharmony_ci napi_default, nullptr}, 368f6603c60Sopenharmony_ci {"oHNativeVSyncGetPeriod", nullptr, OHNativeVSyncGetPeriod, nullptr, nullptr, nullptr, napi_default, nullptr}, 369f6603c60Sopenharmony_ci {"oHNativeVSyncGetPeriodFOne", nullptr, OHNativeVSyncGetPeriodFOne, nullptr, nullptr, nullptr, napi_default, 370f6603c60Sopenharmony_ci nullptr}, 371f6603c60Sopenharmony_ci {"oHNativeVSyncCreateNull", nullptr, OHNativeVSyncCreateNull, nullptr, nullptr, nullptr, napi_default, nullptr}, 372f6603c60Sopenharmony_ci {"oHNativeVSyncCreateNotEq", nullptr, OHNativeVSyncCreateNotEq, nullptr, nullptr, nullptr, napi_default, 373f6603c60Sopenharmony_ci nullptr}, 374f6603c60Sopenharmony_ci {"oHNativeVSyncCreateNormal", nullptr, OHNativeVSyncCreateNormal, nullptr, nullptr, nullptr, napi_default, 375f6603c60Sopenharmony_ci nullptr}, 376f6603c60Sopenharmony_ci {"oHNativeVSyncCreateAbnormal", nullptr, OHNativeVSyncCreateAbnormal, nullptr, nullptr, nullptr, napi_default, 377f6603c60Sopenharmony_ci nullptr}, 378f6603c60Sopenharmony_ci {"oHNativeVSyncCreateDifLenth", nullptr, OHNativeVSyncCreateDifLenth, nullptr, nullptr, nullptr, napi_default, 379f6603c60Sopenharmony_ci nullptr}, 380f6603c60Sopenharmony_ci {"oHNativeVSyncCreateMuch", nullptr, OHNativeVSyncCreateMuch, nullptr, nullptr, nullptr, napi_default, nullptr}, 381f6603c60Sopenharmony_ci {"oHNativeVSyncGetPeriodNullptr", nullptr, OHNativeVSyncGetPeriodNullptr, nullptr, nullptr, nullptr, 382f6603c60Sopenharmony_ci napi_default, nullptr}, 383f6603c60Sopenharmony_ci {"oHNativeVSyncRequestFrameNullptr", nullptr, OHNativeVSyncRequestFrameNullptr, nullptr, nullptr, nullptr, 384f6603c60Sopenharmony_ci napi_default, nullptr}, 385f6603c60Sopenharmony_ci {"oHNativeVSyncRequestFrameNormal", nullptr, OHNativeVSyncRequestFrameNormal, nullptr, nullptr, nullptr, 386f6603c60Sopenharmony_ci napi_default, nullptr}, 387f6603c60Sopenharmony_ci {"oHNativeVSyncRequestFrameParamErr", nullptr, OHNativeVSyncRequestFrameParamErr, nullptr, nullptr, nullptr, 388f6603c60Sopenharmony_ci napi_default, nullptr}, 389f6603c60Sopenharmony_ci }; 390f6603c60Sopenharmony_ci napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); 391f6603c60Sopenharmony_ci return exports; 392f6603c60Sopenharmony_ci} 393f6603c60Sopenharmony_ciEXTERN_C_END 394f6603c60Sopenharmony_ci 395f6603c60Sopenharmony_cistatic napi_module demoModule = { 396f6603c60Sopenharmony_ci .nm_version = 1, 397f6603c60Sopenharmony_ci .nm_flags = 0, 398f6603c60Sopenharmony_ci .nm_filename = nullptr, 399f6603c60Sopenharmony_ci .nm_register_func = Init, 400f6603c60Sopenharmony_ci .nm_modname = "nativevsync", 401f6603c60Sopenharmony_ci .nm_priv = ((void *)0), 402f6603c60Sopenharmony_ci .reserved = {0}, 403f6603c60Sopenharmony_ci}; 404f6603c60Sopenharmony_ci 405f6603c60Sopenharmony_ciextern "C" __attribute__((constructor)) void RegisterModule(void) { napi_module_register(&demoModule); }; 406