1 /*
2 * Copyright (c) 2025 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 "VSyncFenceTest.h"
17 #include <native_effect/effect_filter.h>
18 #include <fcntl.h>
19 #include <multimedia/image_framework/image/pixelmap_native.h>
20 #include <native_vsync/native_vsync.h>
21 #include <native_vsync/graphic_error_code.h>
22 #include <native_fence/native_fence.h>
23 #include <filemanagement/environment/oh_environment.h>
24
addVSyncFenceTest(std::vector<napi_property_descriptor> & descData)25 void addVSyncFenceTest(std::vector<napi_property_descriptor>& descData)
26 {
27 descData.push_back({"requestFrameSuccess", nullptr, OH_NativeVSync_RequestFrameSuccess,
28 nullptr, nullptr, nullptr, napi_default, nullptr});
29 descData.push_back({"requestFrameInvalue", nullptr, OH_NativeVSync_RequestFrameInvalue,
30 nullptr, nullptr, nullptr, napi_default, nullptr});
31 descData.push_back({"fenceIsValidTrue", nullptr, OH_NativeFence_IsValidTrue,
32 nullptr, nullptr, nullptr, napi_default, nullptr});
33 descData.push_back({"fenceIsValidFalse", nullptr, OH_NativeFence_IsValidFalse,
34 nullptr, nullptr, nullptr, napi_default, nullptr});
35 descData.push_back({"fenceWaitTrue", nullptr, OH_NativeFence_WaitTrue,
36 nullptr, nullptr, nullptr, napi_default, nullptr});
37 descData.push_back({"fenceWaitFalse", nullptr, OH_NativeFence_WaitFalse,
38 nullptr, nullptr, nullptr, napi_default, nullptr});
39 descData.push_back({"fenceWaitForeverTrue", nullptr, OH_NativeFence_WaitForeverTrue,
40 nullptr, nullptr, nullptr, napi_default, nullptr});
41 descData.push_back({"fenceWaitForeverFalse", nullptr, OH_NativeFence_WaitForeverFalse,
42 nullptr, nullptr, nullptr, napi_default, nullptr});
43 descData.push_back({"fenceCloseTrue", nullptr, OH_NativeFence_CloseTrue,
44 nullptr, nullptr, nullptr, napi_default, nullptr});
45 descData.push_back({"fenceCloseFalse", nullptr, OH_NativeFence_CloseFalse,
46 nullptr, nullptr, nullptr, napi_default, nullptr});
47 }
48
OH_NativeVSync_RequestFrameSuccess(napi_env env,napi_callback_info info)49 napi_value OH_NativeVSync_RequestFrameSuccess(napi_env env, napi_callback_info info)
50 {
51 napi_value result;
52 OH_NativeVSync* nativeVsync = OH_NativeVSync_Create("Test", 4);
53 OH_NativeVSync_FrameCallback callback = [](long long timestamp, void *data) {};
54 void* data = nullptr;
55 int32_t res = OH_NativeVSync_RequestFrame(nativeVsync, callback, data);
56 int32_t res2 = OH_NativeVSync_DVSyncSwitch(nativeVsync, true);
57 napi_create_int32(env, res == NATIVE_ERROR_OK, &result);
58 return result;
59 }
OH_NativeVSync_RequestFrameInvalue(napi_env env,napi_callback_info info)60 napi_value OH_NativeVSync_RequestFrameInvalue(napi_env env, napi_callback_info info)
61 {
62 napi_value result;
63 OH_NativeVSync* nativeVsync = nullptr;
64 OH_NativeVSync_FrameCallback callback = [](long long timestamp, void *data) {};
65 void* data = nullptr;
66 int32_t res = OH_NativeVSync_RequestFrame(nativeVsync, callback, data);
67 napi_create_int32(env, res == NATIVE_ERROR_INVALID_ARGUMENTS, &result);
68 return result;
69 }
70
OH_NativeFence_IsValidTrue(napi_env env,napi_callback_info info)71 napi_value OH_NativeFence_IsValidTrue(napi_env env, napi_callback_info info)
72 {
73 napi_value result;
74 int32_t fenceFd = 1;
75 bool res = OH_NativeFence_IsValid(1);
76 napi_create_int32(env, res, &result);
77 return result;
78 }
79
OH_NativeFence_IsValidFalse(napi_env env,napi_callback_info info)80 napi_value OH_NativeFence_IsValidFalse(napi_env env, napi_callback_info info)
81 {
82 napi_value result;
83 int32_t fenceFd = -1;
84 bool res = OH_NativeFence_IsValid(fenceFd);
85 napi_create_int32(env, res == false, &result);
86 return result;
87 }
88
OH_NativeFence_WaitTrue(napi_env env,napi_callback_info info)89 napi_value OH_NativeFence_WaitTrue(napi_env env, napi_callback_info info)
90 {
91 napi_value result;
92 int32_t fenceFd = 1;
93 uint32_t TIMEOUT_MS = 1000;
94 bool res = OH_NativeFence_Wait(fenceFd, TIMEOUT_MS);
95 napi_create_int32(env, res, &result);
96 return result;
97 }
98
OH_NativeFence_WaitFalse(napi_env env,napi_callback_info info)99 napi_value OH_NativeFence_WaitFalse(napi_env env, napi_callback_info info)
100 {
101 napi_value result;
102 int32_t fenceFd = -1;
103 uint32_t TIMEOUT_MS = 1000;
104 bool res = OH_NativeFence_Wait(fenceFd, TIMEOUT_MS);
105 napi_create_int32(env, res == false, &result);
106 return result;
107 }
108
OH_NativeFence_WaitForeverTrue(napi_env env,napi_callback_info info)109 napi_value OH_NativeFence_WaitForeverTrue(napi_env env, napi_callback_info info)
110 {
111 napi_value result;
112 int32_t fenceFd = 1;
113 uint32_t TIMEOUT_MS = 1000;
114 bool res = OH_NativeFence_WaitForever(fenceFd);
115 napi_create_int32(env, res, &result);
116 return result;
117 }
118
OH_NativeFence_WaitForeverFalse(napi_env env,napi_callback_info info)119 napi_value OH_NativeFence_WaitForeverFalse(napi_env env, napi_callback_info info)
120 {
121 napi_value result;
122 int32_t fenceFd = -1;
123 uint32_t TIMEOUT_MS = 1000;
124 bool res = OH_NativeFence_WaitForever(fenceFd);
125 napi_create_int32(env, res == false, &result);
126 return result;
127 }
128
OH_NativeFence_CloseTrue(napi_env env,napi_callback_info info)129 napi_value OH_NativeFence_CloseTrue(napi_env env, napi_callback_info info)
130 {
131 napi_value result;
132 int32_t fenceFd = 1;
133 uint32_t TIMEOUT_MS = 1000;
134 OH_NativeFence_Close(fenceFd);
135 napi_create_int32(env, true, &result);
136 return result;
137 }
138
OH_NativeFence_CloseFalse(napi_env env,napi_callback_info info)139 napi_value OH_NativeFence_CloseFalse(napi_env env, napi_callback_info info)
140 {
141 napi_value result;
142 int32_t fenceFd = -1;
143 uint32_t TIMEOUT_MS = 1000;
144 OH_NativeFence_Close(fenceFd);
145 napi_create_int32(env, true, &result);
146 return result;
147 }