• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }