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