1 /*
2 * Copyright (c) 2022-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 <string>
17
18 #include "napi/native_common.h"
19 #include "avcontrol_command.h"
20 #include "avcall_state.h"
21 #include "avplayback_state.h"
22 #include "avmeta_data.h"
23 #include "avsession_info.h"
24 #include "napi_avsession_enum.h"
25
26 namespace OHOS::AVSession {
SetNamedProperty(napi_env env,napi_value & obj,const std::string & name,int32_t value)27 static napi_status SetNamedProperty(napi_env env, napi_value& obj, const std::string& name, int32_t value)
28 {
29 napi_value property = nullptr;
30 napi_status status = napi_create_int32(env, value, &property);
31 if (status != napi_ok) {
32 return status;
33 }
34 status = napi_set_named_property(env, obj, name.c_str(), property);
35 if (status != napi_ok) {
36 return status;
37 }
38 return status;
39 }
40
ExportLoopMode(napi_env env)41 static napi_value ExportLoopMode(napi_env env)
42 {
43 napi_value result = nullptr;
44 napi_create_object(env, &result);
45
46 (void)SetNamedProperty(env, result, "LOOP_MODE_SEQUENCE", AVPlaybackState::LOOP_MODE_SEQUENCE);
47 (void)SetNamedProperty(env, result, "LOOP_MODE_SINGLE", AVPlaybackState::LOOP_MODE_SINGLE);
48 (void)SetNamedProperty(env, result, "LOOP_MODE_LIST", AVPlaybackState::LOOP_MODE_LIST);
49 (void)SetNamedProperty(env, result, "LOOP_MODE_SHUFFLE", AVPlaybackState::LOOP_MODE_SHUFFLE);
50 (void)SetNamedProperty(env, result, "LOOP_MODE_CUSTOM", AVPlaybackState::LOOP_MODE_CUSTOM);
51
52 napi_object_freeze(env, result);
53 return result;
54 }
55
ExportSkipIntervals(napi_env env)56 static napi_value ExportSkipIntervals(napi_env env)
57 {
58 napi_value result = nullptr;
59 napi_create_object(env, &result);
60
61 (void)SetNamedProperty(env, result, "SECONDS_10", AVMetaData::SECONDS_10);
62 (void)SetNamedProperty(env, result, "SECONDS_15", AVMetaData::SECONDS_15);
63 (void)SetNamedProperty(env, result, "SECONDS_30", AVMetaData::SECONDS_30);
64
65 napi_object_freeze(env, result);
66 return result;
67 }
68
ExportAVCastCategory(napi_env env)69 static napi_value ExportAVCastCategory(napi_env env)
70 {
71 napi_value result = nullptr;
72 napi_create_object(env, &result);
73
74 (void)SetNamedProperty(env, result, "CATEGORY_LOCAL", AVCastCategory::CATEGORY_LOCAL);
75 (void)SetNamedProperty(env, result, "CATEGORY_REMOTE", AVCastCategory::CATEGORY_REMOTE);
76
77 napi_object_freeze(env, result);
78 return result;
79 }
80
ExportProtocolType(napi_env env)81 static napi_value ExportProtocolType(napi_env env)
82 {
83 napi_value result = nullptr;
84 napi_create_object(env, &result);
85
86 (void)SetNamedProperty(env, result, "TYPE_LOCAL", ProtocolType::TYPE_LOCAL);
87 (void)SetNamedProperty(env, result, "TYPE_CAST_PLUS_MIRROR", ProtocolType::TYPE_CAST_PLUS_MIRROR);
88 (void)SetNamedProperty(env, result, "TYPE_CAST_PLUS_STREAM", ProtocolType::TYPE_CAST_PLUS_STREAM);
89 (void)SetNamedProperty(env, result, "TYPE_DLNA", ProtocolType::TYPE_DLNA);
90
91 napi_object_freeze(env, result);
92 return result;
93 }
94
ExportConnectionState(napi_env env)95 static napi_value ExportConnectionState(napi_env env)
96 {
97 napi_value result = nullptr;
98 napi_create_object(env, &result);
99
100 (void)SetNamedProperty(env, result, "STATE_CONNECTING", ConnectionState::STATE_CONNECTING);
101 (void)SetNamedProperty(env, result, "STATE_CONNECTED", ConnectionState::STATE_CONNECTED);
102 (void)SetNamedProperty(env, result, "STATE_DISCONNECTED", ConnectionState::STATE_DISCONNECTED);
103
104 napi_object_freeze(env, result);
105 return result;
106 }
107
ExportDeviceType(napi_env env)108 static napi_value ExportDeviceType(napi_env env)
109 {
110 napi_value result = nullptr;
111 napi_create_object(env, &result);
112
113 (void)SetNamedProperty(env, result, "DEVICE_TYPE_LOCAL", DeviceType::DEVICE_TYPE_LOCAL);
114 (void)SetNamedProperty(env, result, "DEVICE_TYPE_TV", DeviceType::DEVICE_TYPE_TV);
115 (void)SetNamedProperty(env, result, "DEVICE_TYPE_SMART_SPEAKER", DeviceType::DEVICE_TYPE_SPEAKER);
116 (void)SetNamedProperty(env, result, "DEVICE_TYPE_BLUETOOTH", DeviceType::DEVICE_TYPE_BLUETOOTH);
117
118 napi_object_freeze(env, result);
119 return result;
120 }
121
ExportPlaybackState(napi_env env)122 static napi_value ExportPlaybackState(napi_env env)
123 {
124 napi_value result = nullptr;
125 napi_create_object(env, &result);
126
127 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_INITIAL", AVPlaybackState::PLAYBACK_STATE_INITIAL);
128 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_PREPARE", AVPlaybackState::PLAYBACK_STATE_PREPARE);
129 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_PLAY", AVPlaybackState::PLAYBACK_STATE_PLAY);
130 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_PAUSE", AVPlaybackState::PLAYBACK_STATE_PAUSE);
131 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_FAST_FORWARD", AVPlaybackState::PLAYBACK_STATE_FAST_FORWARD);
132 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_REWIND", AVPlaybackState::PLAYBACK_STATE_REWIND);
133 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_STOP", AVPlaybackState::PLAYBACK_STATE_STOP);
134 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_COMPLETED", AVPlaybackState::PLAYBACK_STATE_COMPLETED);
135 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_RELEASED", AVPlaybackState::PLAYBACK_STATE_RELEASED);
136 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_ERROR", AVPlaybackState::PLAYBACK_STATE_ERROR);
137 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_IDLE", AVPlaybackState::PLAYBACK_STATE_IDLE);
138 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_BUFFERING", AVPlaybackState::PLAYBACK_STATE_BUFFERING);
139
140 napi_object_freeze(env, result);
141 return result;
142 }
143
ExportAVCallState(napi_env env)144 static napi_value ExportAVCallState(napi_env env)
145 {
146 napi_value result = nullptr;
147 napi_create_object(env, &result);
148
149 (void)SetNamedProperty(env, result, "CALL_STATE_IDLE", AVCallState::AVCALL_STATE_IDLE);
150 (void)SetNamedProperty(env, result, "CALL_STATE_INCOMING", AVCallState::AVCALL_STATE_INCOMING);
151 (void)SetNamedProperty(env, result, "CALL_STATE_ACTIVE", AVCallState::AVCALL_STATE_ACTIVE);
152 (void)SetNamedProperty(env, result, "CALL_STATE_DIALING", AVCallState::AVCALL_STATE_DIALING);
153 (void)SetNamedProperty(env, result, "CALL_STATE_WAITING", AVCallState::AVCALL_STATE_WAITING);
154 (void)SetNamedProperty(env, result, "CALL_STATE_HOLDING", AVCallState::AVCALL_STATE_HOLDING);
155 (void)SetNamedProperty(env, result, "CALL_STATE_DISCONNECTING", AVCallState::AVCALL_STATE_DISCONNECTING);
156
157 napi_object_freeze(env, result);
158 return result;
159 }
160
AVSessionControlErrorCode(napi_env env,napi_value result)161 static void AVSessionControlErrorCode(napi_env env, napi_value result)
162 {
163 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_UNSPECIFIED",
164 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_UNSPECIFIED);
165 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_REMOTE_ERROR",
166 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_REMOTE_ERROR);
167 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_BEHIND_LIVE_WINDOW",
168 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_BEHIND_LIVE_WINDOW);
169 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_TIMEOUT",
170 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_TIMEOUT);
171 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_RUNTIME_CHECK_FAILED",
172 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_RUNTIME_CHECK_FAILED);
173 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PLAYER_NOT_WORKING",
174 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PLAYER_NOT_WORKING);
175 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_SEEK_MODE_UNSUPPORTED",
176 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_SEEK_MODE_UNSUPPORTED);
177 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_ILLEGAL_SEEK_TARGET",
178 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_ILLEGAL_SEEK_TARGET);
179 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PLAY_MODE_UNSUPPORTED",
180 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PLAY_MODE_UNSUPPORTED);
181 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PLAY_SPEED_UNSUPPORTED",
182 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PLAY_SPEED_UNSUPPORTED);
183 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DEVICE_MISSING",
184 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DEVICE_MISSING);
185 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_INVALID_PARAM",
186 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_INVALID_PARAM);
187 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_NO_MEMORY",
188 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_NO_MEMORY);
189 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_OPERATION_NOT_ALLOWED",
190 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_OPERATION_NOT_ALLOWED);
191 }
192
AVSessionIOErrorCode(napi_env env,napi_value result)193 static void AVSessionIOErrorCode(napi_env env, napi_value result)
194 {
195 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_UNSPECIFIED",
196 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_UNSPECIFIED);
197 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_FAILED",
198 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_FAILED);
199 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_TIMEOUT",
200 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_TIMEOUT);
201 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_INVALID_HTTP_CONTENT_TYPE",
202 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_INVALID_HTTP_CONTENT_TYPE);
203 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_BAD_HTTP_STATUS",
204 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_BAD_HTTP_STATUS);
205 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_FILE_NOT_FOUND",
206 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_FILE_NOT_FOUND);
207 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NO_PERMISSION",
208 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NO_PERMISSION);
209 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_CLEARTEXT_NOT_PERMITTED",
210 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_CLEARTEXT_NOT_PERMITTED);
211 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_READ_POSITION_OUT_OF_RANGE",
212 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_READ_POSITION_OUT_OF_RANGE);
213 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NO_CONTENTS",
214 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NO_CONTENTS);
215 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_READ_ERROR",
216 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_READ_ERROR);
217 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_CONTENT_BUSY",
218 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_CONTENT_BUSY);
219 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_CONTENT_EXPIRED",
220 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_CONTENT_EXPIRED);
221 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_USE_FORBIDDEN",
222 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_USE_FORBIDDEN);
223 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NOT_VERIFIED",
224 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NOT_VERIFIED);
225 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_EXHAUSTED_ALLOWED_USES",
226 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_EXHAUSTED_ALLOWED_USES);
227 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NETWORK_PACKET_SENDING_FAILED",
228 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NETWORK_PACKET_SENDING_FAILED);
229 }
230
AVSessionParsingErrorCode(napi_env env,napi_value result)231 static void AVSessionParsingErrorCode(napi_env env, napi_value result)
232 {
233 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_UNSPECIFIED",
234 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_UNSPECIFIED);
235 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_MALFORMED",
236 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_MALFORMED);
237 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_MALFORMED",
238 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_MALFORMED);
239 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_UNSUPPORTED",
240 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_UNSUPPORTED);
241 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_UNSUPPORTED",
242 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_UNSUPPORTED);
243 }
244
AVSessionDecodingErrorCode(napi_env env,napi_value result)245 static void AVSessionDecodingErrorCode(napi_env env, napi_value result)
246 {
247 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_UNSPECIFIED",
248 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_UNSPECIFIED);
249 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_INIT_FAILED",
250 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_INIT_FAILED);
251 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_QUERY_FAILED",
252 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_QUERY_FAILED);
253 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_FAILED",
254 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_FAILED);
255 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_FORMAT_EXCEEDS_CAPABILITIES",
256 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_FORMAT_EXCEEDS_CAPABILITIES);
257 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_FORMAT_UNSUPPORTED",
258 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_FORMAT_UNSUPPORTED);
259 }
260
AVSessionAudioRenderErrorCode(napi_env env,napi_value result)261 static void AVSessionAudioRenderErrorCode(napi_env env, napi_value result)
262 {
263 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_UNSPECIFIED",
264 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_UNSPECIFIED);
265 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_INIT_FAILED",
266 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_INIT_FAILED);
267 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_WRITE_FAILED",
268 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_WRITE_FAILED);
269 }
270
AVSessionDRMErrorCode(napi_env env,napi_value result)271 static void AVSessionDRMErrorCode(napi_env env, napi_value result)
272 {
273 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_UNSPECIFIED",
274 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_UNSPECIFIED);
275 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_SCHEME_UNSUPPORTED",
276 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_SCHEME_UNSUPPORTED);
277 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_PROVISIONING_FAILED",
278 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_PROVISIONING_FAILED);
279 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_CONTENT_ERROR",
280 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_CONTENT_ERROR);
281 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_LICENSE_ACQUISITION_FAILED",
282 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_LICENSE_ACQUISITION_FAILED);
283 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_DISALLOWED_OPERATION",
284 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_DISALLOWED_OPERATION);
285 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_SYSTEM_ERROR",
286 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_SYSTEM_ERROR);
287 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_DEVICE_REVOKED",
288 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_DEVICE_REVOKED);
289 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_LICENSE_EXPIRED",
290 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_LICENSE_EXPIRED);
291 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_PROVIDE_KEY_RESPONSE_ERROR",
292 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_PROVIDE_KEY_RESPONSE_ERROR);
293 }
294
ExportAVSessionErrorCode(napi_env env)295 static napi_value ExportAVSessionErrorCode(napi_env env)
296 {
297 napi_value result = nullptr;
298 napi_create_object(env, &result);
299
300 (void)SetNamedProperty(env, result, "ERR_CODE_SERVICE_EXCEPTION", AVSessionErrorCode::ERR_CODE_SERVICE_EXCEPTION);
301 (void)SetNamedProperty(env, result, "ERR_CODE_SESSION_NOT_EXIST", AVSessionErrorCode::ERR_CODE_SESSION_NOT_EXIST);
302 (void)SetNamedProperty(env, result, "ERR_CODE_CONTROLLER_NOT_EXIST",
303 AVSessionErrorCode::ERR_CODE_CONTROLLER_NOT_EXIST);
304 (void)SetNamedProperty(env, result, "ERR_CODE_REMOTE_CONNECTION_ERR",
305 AVSessionErrorCode::ERR_CODE_REMOTE_CONNECTION_ERR);
306 (void)SetNamedProperty(env, result, "ERR_CODE_COMMAND_INVALID", AVSessionErrorCode::ERR_CODE_COMMAND_INVALID);
307 (void)SetNamedProperty(env, result, "ERR_CODE_SESSION_INACTIVE", AVSessionErrorCode::ERR_CODE_SESSION_INACTIVE);
308 (void)SetNamedProperty(env, result, "ERR_CODE_MESSAGE_OVERLOAD", AVSessionErrorCode::ERR_CODE_MESSAGE_OVERLOAD);
309 (void)SetNamedProperty(env, result, "ERR_CODE_DEVICE_CONNECTION_FAILED",
310 AVSessionErrorCode::ERR_CODE_DEVICE_CONNECTION_FAILED);
311 (void)SetNamedProperty(env, result, "ERR_CODE_REMOTE_CONNECTION_NOT_EXIST",
312 AVSessionErrorCode::ERR_CODE_REMOTE_CONNECTION_NOT_EXIST);
313 AVSessionControlErrorCode(env, result);
314 AVSessionIOErrorCode(env, result);
315 AVSessionParsingErrorCode(env, result);
316 AVSessionDecodingErrorCode(env, result);
317 AVSessionAudioRenderErrorCode(env, result);
318 AVSessionDRMErrorCode(env, result);
319 napi_object_freeze(env, result);
320 return result;
321 }
322
ExportDisplayTag(napi_env env)323 static napi_value ExportDisplayTag(napi_env env)
324 {
325 napi_value result = nullptr;
326 napi_create_object(env, &result);
327
328 (void)SetNamedProperty(env, result, "TAG_AUDIO_VIVID", AVMetaData::DISPLAY_TAG_AUDIO_VIVID);
329
330 napi_object_freeze(env, result);
331 return result;
332 }
333
ExportCastDisplayState(napi_env env)334 static napi_value ExportCastDisplayState(napi_env env)
335 {
336 napi_value result = nullptr;
337 napi_create_object(env, &result);
338
339 (void)SetNamedProperty(env, result, "STATE_OFF", static_cast<int32_t>(CastDisplayState::STATE_OFF));
340 (void)SetNamedProperty(env, result, "STATE_ON", static_cast<int32_t>(CastDisplayState::STATE_ON));
341
342 napi_object_freeze(env, result);
343 return result;
344 }
345
ExportDeviceLogEventCode(napi_env env)346 static napi_value ExportDeviceLogEventCode(napi_env env)
347 {
348 napi_value result = nullptr;
349 napi_create_object(env, &result);
350
351 (void)SetNamedProperty(env, result, "DEVICE_LOG_FULL",
352 static_cast<int32_t>(DeviceLogEventCode::DEVICE_LOG_FULL));
353 (void)SetNamedProperty(env, result, "DEVICE_LOG_EXCEPTION",
354 static_cast<int32_t>(DeviceLogEventCode::DEVICE_LOG_EXCEPTION));
355
356 napi_object_freeze(env, result);
357 return result;
358 }
359
ExportDistributedSessionType(napi_env env)360 static napi_value ExportDistributedSessionType(napi_env env)
361 {
362 napi_value result = nullptr;
363 napi_create_object(env, &result);
364
365 (void)SetNamedProperty(env, result, "TYPE_SESSION_REMOTE",
366 static_cast<int32_t>(DistributedSessionType::TYPE_SESSION_REMOTE));
367 (void)SetNamedProperty(env, result, "TYPE_SESSION_MIGRATE_IN",
368 static_cast<int32_t>(DistributedSessionType::TYPE_SESSION_MIGRATE_IN));
369 (void)SetNamedProperty(env, result, "TYPE_SESSION_MIGRATE_OUT",
370 static_cast<int32_t>(DistributedSessionType::TYPE_SESSION_MIGRATE_OUT));
371
372 napi_object_freeze(env, result);
373 return result;
374 }
375
InitEnums(napi_env env,napi_value exports)376 napi_status InitEnums(napi_env env, napi_value exports)
377 {
378 const napi_property_descriptor properties[] = {
379 DECLARE_NAPI_PROPERTY("AVCastCategory", ExportAVCastCategory(env)),
380 DECLARE_NAPI_PROPERTY("ProtocolType", ExportProtocolType(env)),
381 DECLARE_NAPI_PROPERTY("ConnectionState", ExportConnectionState(env)),
382 DECLARE_NAPI_PROPERTY("DeviceType", ExportDeviceType(env)),
383 DECLARE_NAPI_PROPERTY("LoopMode", ExportLoopMode(env)),
384 DECLARE_NAPI_PROPERTY("SkipIntervals", ExportSkipIntervals(env)),
385 DECLARE_NAPI_PROPERTY("PlaybackState", ExportPlaybackState(env)),
386 DECLARE_NAPI_PROPERTY("CallState", ExportAVCallState(env)),
387 DECLARE_NAPI_PROPERTY("AVSessionErrorCode", ExportAVSessionErrorCode(env)),
388 DECLARE_NAPI_PROPERTY("DisplayTag", ExportDisplayTag(env)),
389 DECLARE_NAPI_PROPERTY("CastDisplayState", ExportCastDisplayState(env)),
390 DECLARE_NAPI_PROPERTY("DeviceLogEventCode", ExportDeviceLogEventCode(env)),
391 DECLARE_NAPI_PROPERTY("DistributedSessionType", ExportDistributedSessionType(env)),
392 };
393
394 size_t count = sizeof(properties) / sizeof(napi_property_descriptor);
395 return napi_define_properties(env, exports, count, properties);
396 }
397 }