1 /* 2 * Copyright (c) 2021-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 #ifndef CAMERA_SESSION_NAPI_H_ 17 #define CAMERA_SESSION_NAPI_H_ 18 19 #include <memory> 20 #include <mutex> 21 #include <type_traits> 22 #include <unordered_map> 23 #include <unordered_set> 24 #include <uv.h> 25 26 #include "camera_napi_event_emitter.h" 27 #include "input/camera_manager.h" 28 #include "listener_base.h" 29 #include "session/capture_session.h" 30 31 namespace OHOS { 32 namespace CameraStandard { 33 static const char CAMERA_SESSION_NAPI_CLASS_NAME[] = "CaptureSession"; 34 35 class ExposureCallbackListener : public ExposureCallback, public ListenerBase, 36 public std::enable_shared_from_this<ExposureCallbackListener> { 37 public: ExposureCallbackListener(napi_env env)38 ExposureCallbackListener(napi_env env) : ListenerBase(env) {} 39 ~ExposureCallbackListener() = default; 40 void OnExposureState(const ExposureState state) override; 41 42 private: 43 void OnExposureStateCallback(ExposureState state) const; 44 void OnExposureStateCallbackAsync(ExposureState state) const; 45 }; 46 47 struct ExposureCallbackInfo { 48 ExposureCallback::ExposureState state_; 49 weak_ptr<const ExposureCallbackListener> listener_; ExposureCallbackInfoExposureCallbackInfo50 ExposureCallbackInfo(ExposureCallback::ExposureState state, shared_ptr<const ExposureCallbackListener> listener) 51 : state_(state), listener_(listener) {} 52 }; 53 54 class FocusCallbackListener : public FocusCallback, public ListenerBase, 55 public std::enable_shared_from_this<FocusCallbackListener> { 56 public: FocusCallbackListener(napi_env env)57 FocusCallbackListener(napi_env env) : ListenerBase(env) 58 { 59 currentState = FocusState::UNFOCUSED; 60 } 61 ~FocusCallbackListener() = default; 62 void OnFocusState(FocusState state) override; 63 64 private: 65 void OnFocusStateCallback(FocusState state) const; 66 void OnFocusStateCallbackAsync(FocusState state) const; 67 }; 68 69 struct FocusCallbackInfo { 70 FocusCallback::FocusState state_; 71 weak_ptr<const FocusCallbackListener> listener_; FocusCallbackInfoFocusCallbackInfo72 FocusCallbackInfo(FocusCallback::FocusState state, shared_ptr<const FocusCallbackListener> listener) 73 : state_(state), listener_(listener) {} 74 }; 75 76 class MoonCaptureBoostCallbackListener : public MoonCaptureBoostStatusCallback, public ListenerBase, 77 public std::enable_shared_from_this<MoonCaptureBoostCallbackListener> { 78 public: MoonCaptureBoostCallbackListener(napi_env env)79 MoonCaptureBoostCallbackListener(napi_env env) : ListenerBase(env) {} 80 ~MoonCaptureBoostCallbackListener() = default; 81 void OnMoonCaptureBoostStatusChanged(MoonCaptureBoostStatus status) override; 82 83 private: 84 void OnMoonCaptureBoostStatusCallback(MoonCaptureBoostStatus status) const; 85 void OnMoonCaptureBoostStatusCallbackAsync(MoonCaptureBoostStatus status) const; 86 }; 87 88 struct MoonCaptureBoostStatusCallbackInfo { 89 MoonCaptureBoostStatusCallback::MoonCaptureBoostStatus status_; 90 weak_ptr<const MoonCaptureBoostCallbackListener> listener_; MoonCaptureBoostStatusCallbackInfoMoonCaptureBoostStatusCallbackInfo91 MoonCaptureBoostStatusCallbackInfo( 92 MoonCaptureBoostStatusCallback::MoonCaptureBoostStatus status, 93 shared_ptr<const MoonCaptureBoostCallbackListener> listener) 94 : status_(status), listener_(listener) 95 {} 96 }; 97 98 class SessionCallbackListener : public SessionCallback, public ListenerBase, 99 public std::enable_shared_from_this<SessionCallbackListener> { 100 public: SessionCallbackListener(napi_env env)101 SessionCallbackListener(napi_env env) : ListenerBase(env) {} 102 ~SessionCallbackListener() = default; 103 void OnError(int32_t errorCode) override; 104 105 private: 106 void OnErrorCallback(int32_t errorCode) const; 107 void OnErrorCallbackAsync(int32_t errorCode) const; 108 }; 109 110 class PressureCallbackListener : public PressureCallback, public ListenerBase, 111 public std::enable_shared_from_this<PressureCallbackListener> { 112 public: PressureCallbackListener(napi_env env)113 PressureCallbackListener(napi_env env) : ListenerBase(env) {} 114 ~PressureCallbackListener() = default; 115 void OnPressureStatusChanged(PressureStatus status) override; 116 117 private: 118 void OnPressureCallback(PressureStatus status) const; 119 void OnPressureCallbackAsync(PressureStatus status) const; 120 }; 121 122 class ControlCenterEffectStatusCallbackListener : public ControlCenterEffectCallback, public ListenerBase, 123 public std::enable_shared_from_this<ControlCenterEffectStatusCallbackListener> { 124 public: ControlCenterEffectStatusCallbackListener(napi_env env)125 ControlCenterEffectStatusCallbackListener(napi_env env) : ListenerBase(env) {} 126 ~ControlCenterEffectStatusCallbackListener() = default; 127 void OnControlCenterEffectStatusChanged(ControlCenterStatusInfo controlCenterStatusInfo) override; 128 129 private: 130 void OnControlCenterEffectStatusCallback(ControlCenterStatusInfo controlCenterStatusInfo) const; 131 void OnControlCenterEffectStatusCallbackAsync(ControlCenterStatusInfo controlCenterStatusInfo) const; 132 }; 133 134 struct SessionCallbackInfo { 135 int32_t errorCode_; 136 weak_ptr<const SessionCallbackListener> listener_; SessionCallbackInfoSessionCallbackInfo137 SessionCallbackInfo(int32_t errorCode, shared_ptr<const SessionCallbackListener> listener) 138 : errorCode_(errorCode), listener_(listener) {} 139 }; 140 141 struct PressureCallbackInfo { 142 PressureStatus status_; 143 weak_ptr<const PressureCallbackListener> listener_; PressureCallbackInfoPressureCallbackInfo144 PressureCallbackInfo(PressureStatus status, shared_ptr<const PressureCallbackListener> listener) 145 : status_(status), listener_(listener) {} 146 }; 147 148 struct ControlCenterEffectCallbackInfo { 149 ControlCenterStatusInfo statusInfo_; 150 weak_ptr<const ControlCenterEffectStatusCallbackListener> listener_; ControlCenterEffectCallbackInfoControlCenterEffectCallbackInfo151 ControlCenterEffectCallbackInfo(ControlCenterStatusInfo statusInfo, 152 shared_ptr<const ControlCenterEffectStatusCallbackListener> listener) 153 : statusInfo_(statusInfo), listener_(listener) {} 154 }; 155 156 class SmoothZoomCallbackListener : public SmoothZoomCallback, public ListenerBase, 157 public std::enable_shared_from_this<SmoothZoomCallbackListener> { 158 public: SmoothZoomCallbackListener(napi_env env)159 SmoothZoomCallbackListener(napi_env env) : ListenerBase(env) {} 160 ~SmoothZoomCallbackListener() = default; 161 void OnSmoothZoom(int32_t duration) override; 162 163 private: 164 void OnSmoothZoomCallback(int32_t duration) const; 165 void OnSmoothZoomCallbackAsync(int32_t duration) const; 166 }; 167 168 struct SmoothZoomCallbackInfo { 169 int32_t duration_; 170 weak_ptr<const SmoothZoomCallbackListener> listener_; SmoothZoomCallbackInfoSmoothZoomCallbackInfo171 SmoothZoomCallbackInfo(int32_t duration, shared_ptr<const SmoothZoomCallbackListener> listener) 172 : duration_(duration), listener_(listener) {} 173 }; 174 175 class AbilityCallbackListener : public AbilityCallback, public ListenerBase, 176 public std::enable_shared_from_this<AbilityCallbackListener> { 177 public: AbilityCallbackListener(napi_env env)178 AbilityCallbackListener(napi_env env) : ListenerBase(env) {} 179 ~AbilityCallbackListener() = default; 180 void OnAbilityChange() override; 181 182 private: 183 void OnAbilityChangeCallback() const; 184 void OnAbilityChangeCallbackAsync() const; 185 }; 186 187 struct AbilityCallbackInfo { 188 weak_ptr<const AbilityCallbackListener> listener_; AbilityCallbackInfoAbilityCallbackInfo189 AbilityCallbackInfo(shared_ptr<const AbilityCallbackListener> listener) : listener_(listener) {} 190 }; 191 192 class AutoDeviceSwitchCallbackListener : public AutoDeviceSwitchCallback, public ListenerBase, 193 public std::enable_shared_from_this<AutoDeviceSwitchCallbackListener> { 194 public: AutoDeviceSwitchCallbackListener(napi_env env)195 AutoDeviceSwitchCallbackListener(napi_env env) : ListenerBase(env) {} 196 ~AutoDeviceSwitchCallbackListener() = default; 197 void OnAutoDeviceSwitchStatusChange(bool isDeviceSwitched, bool isDeviceCapabilityChanged) const override; 198 private: 199 void OnAutoDeviceSwitchCallback(bool isDeviceSwitched, bool isDeviceCapabilityChanged) const; 200 void OnAutoDeviceSwitchCallbackAsync(bool isDeviceSwitched, bool isDeviceCapabilityChanged) const; 201 }; 202 203 struct AutoDeviceSwitchCallbackListenerInfo { 204 bool isDeviceSwitched_; 205 bool isDeviceCapabilityChanged_; 206 weak_ptr<const AutoDeviceSwitchCallbackListener> listener_; AutoDeviceSwitchCallbackListenerInfoAutoDeviceSwitchCallbackListenerInfo207 AutoDeviceSwitchCallbackListenerInfo(bool isDeviceSwitched, bool isDeviceCapabilityChanged, 208 shared_ptr<const AutoDeviceSwitchCallbackListener> listener) 209 : isDeviceSwitched_(isDeviceSwitched), isDeviceCapabilityChanged_(isDeviceCapabilityChanged), 210 listener_(listener) {} 211 }; 212 213 class MacroStatusCallbackListener : public MacroStatusCallback, public ListenerBase, 214 public std::enable_shared_from_this<MacroStatusCallbackListener> { 215 public: MacroStatusCallbackListener(napi_env env)216 MacroStatusCallbackListener(napi_env env) : ListenerBase(env) {} 217 ~MacroStatusCallbackListener() = default; 218 void OnMacroStatusChanged(MacroStatus status) override; 219 220 private: 221 void OnMacroStatusCallback(MacroStatus status) const; 222 void OnMacroStatusCallbackAsync(MacroStatus status) const; 223 }; 224 225 struct MacroStatusCallbackInfo { 226 MacroStatusCallback::MacroStatus status_; 227 weak_ptr<const MacroStatusCallbackListener> listener_; MacroStatusCallbackInfoMacroStatusCallbackInfo228 MacroStatusCallbackInfo( 229 MacroStatusCallback::MacroStatus status, 230 shared_ptr<const MacroStatusCallbackListener> listener) 231 : status_(status), listener_(listener) 232 {} 233 }; 234 235 class CameraSessionNapi : public CameraNapiEventEmitter<CameraSessionNapi> { 236 public: 237 static void Init(napi_env env); 238 static napi_value CreateCameraSession(napi_env env); 239 CameraSessionNapi(); 240 ~CameraSessionNapi() override; 241 242 static void CameraSessionNapiDestructor(napi_env env, void* nativeObject, void* finalize_hint); 243 static napi_value CameraSessionNapiConstructor(napi_env env, napi_callback_info info); 244 245 static napi_value HasFlash(napi_env env, napi_callback_info info); 246 static napi_value IsFlashModeSupported(napi_env env, napi_callback_info info); 247 static napi_value GetFlashMode(napi_env env, napi_callback_info info); 248 static napi_value SetFlashMode(napi_env env, napi_callback_info info); 249 static napi_value IsLcdFlashSupported(napi_env env, napi_callback_info info); 250 static napi_value EnableLcdFlash(napi_env env, napi_callback_info info); 251 static napi_value IsExposureModeSupported(napi_env env, napi_callback_info info); 252 static napi_value GetExposureMode(napi_env env, napi_callback_info info); 253 static napi_value SetExposureMode(napi_env env, napi_callback_info info); 254 static napi_value SetMeteringPoint(napi_env env, napi_callback_info info); 255 static napi_value GetMeteringPoint(napi_env env, napi_callback_info info); 256 static napi_value GetJSArgsForCameraOutput(napi_env env, size_t argc, const napi_value argv[], 257 sptr<CaptureOutput> &cameraOutput); 258 static napi_value GetExposureBiasRange(napi_env env, napi_callback_info info); 259 static napi_value SetExposureBias(napi_env env, napi_callback_info info); 260 static napi_value GetExposureValue(napi_env env, napi_callback_info info); 261 static napi_value IsFocusModeSupported(napi_env env, napi_callback_info info); 262 static napi_value GetFocusMode(napi_env env, napi_callback_info info); 263 static napi_value SetFocusMode(napi_env env, napi_callback_info info); 264 static napi_value SetQualityPrioritization(napi_env env, napi_callback_info info); 265 static napi_value SetFocusPoint(napi_env env, napi_callback_info info); 266 static napi_value GetFocusPoint(napi_env env, napi_callback_info info); 267 static napi_value GetFocalLength(napi_env env, napi_callback_info info); 268 static napi_value IsFocusRangeTypeSupported(napi_env env, napi_callback_info info); 269 static napi_value GetFocusRange(napi_env env, napi_callback_info info); 270 static napi_value SetFocusRange(napi_env env, napi_callback_info info); 271 static napi_value IsFocusDrivenTypeSupported(napi_env env, napi_callback_info info); 272 static napi_value GetFocusDriven(napi_env env, napi_callback_info info); 273 static napi_value SetFocusDriven(napi_env env, napi_callback_info info); 274 static napi_value GetZoomRatioRange(napi_env env, napi_callback_info info); 275 static napi_value GetZoomRatio(napi_env env, napi_callback_info info); 276 static napi_value SetZoomRatio(napi_env env, napi_callback_info info); 277 static napi_value IsZoomCenterPointSupported(napi_env env, napi_callback_info info); 278 static napi_value GetZoomCenterPoint(napi_env env, napi_callback_info info); 279 static napi_value SetZoomCenterPoint(napi_env env, napi_callback_info info); 280 static napi_value PrepareZoom(napi_env env, napi_callback_info info); 281 static napi_value UnPrepareZoom(napi_env env, napi_callback_info info); 282 static napi_value SetSmoothZoom(napi_env env, napi_callback_info info); 283 static napi_value GetZoomPointInfos(napi_env env, napi_callback_info info); 284 static napi_value GetSupportedFilters(napi_env env, napi_callback_info info); 285 static napi_value GetFilter(napi_env env, napi_callback_info info); 286 static napi_value SetFilter(napi_env env, napi_callback_info info); 287 static napi_value GetSupportedBeautyTypes(napi_env env, napi_callback_info info); 288 static napi_value GetSupportedBeautyRange(napi_env env, napi_callback_info info); 289 static napi_value GetBeauty(napi_env env, napi_callback_info info); 290 static napi_value SetBeauty(napi_env env, napi_callback_info info); 291 static napi_value GetSupportedColorSpaces(napi_env env, napi_callback_info info); 292 static napi_value IsControlCenterSupported(napi_env env, napi_callback_info info); 293 static napi_value GetSupportedEffectTypes(napi_env env, napi_callback_info info); 294 static napi_value EnableControlCenter(napi_env env, napi_callback_info info); 295 static napi_value GetActiveColorSpace(napi_env env, napi_callback_info info); 296 static napi_value SetColorSpace(napi_env env, napi_callback_info info); 297 static napi_value IsMacroSupported(napi_env env, napi_callback_info info); 298 static napi_value EnableMacro(napi_env env, napi_callback_info info); 299 static napi_value CanPreconfig(napi_env env, napi_callback_info info); 300 static napi_value Preconfig(napi_env env, napi_callback_info info); 301 302 static napi_value IsMoonCaptureBoostSupported(napi_env env, napi_callback_info info); 303 static napi_value EnableMoonCaptureBoost(napi_env env, napi_callback_info info); 304 305 static napi_value GetSupportedWhiteBalanceModes(napi_env env, napi_callback_info info); 306 static napi_value IsWhiteBalanceModeSupported(napi_env env, napi_callback_info info); 307 static napi_value GetWhiteBalanceMode(napi_env env, napi_callback_info info); 308 static napi_value SetWhiteBalanceMode(napi_env env, napi_callback_info info); 309 310 static napi_value GetWhiteBalanceRange(napi_env env, napi_callback_info info); 311 static napi_value IsManualWhiteBalanceSupported(napi_env env, napi_callback_info info); 312 static napi_value GetWhiteBalance(napi_env env, napi_callback_info info); 313 static napi_value SetWhiteBalance(napi_env env, napi_callback_info info); 314 315 static napi_value BeginConfig(napi_env env, napi_callback_info info); 316 static napi_value CommitConfig(napi_env env, napi_callback_info info); 317 318 static napi_value AddInput(napi_env env, napi_callback_info info); 319 static napi_value CanAddInput(napi_env env, napi_callback_info info); 320 static napi_value RemoveInput(napi_env env, napi_callback_info info); 321 322 static napi_value AddOutput(napi_env env, napi_callback_info info); 323 static napi_value CanAddOutput(napi_env env, napi_callback_info info); 324 static napi_value RemoveOutput(napi_env env, napi_callback_info info); 325 326 static napi_value Start(napi_env env, napi_callback_info info); 327 static napi_value Stop(napi_env env, napi_callback_info info); 328 static napi_value Release(napi_env env, napi_callback_info info); 329 static napi_value IsVideoStabilizationModeSupported(napi_env env, napi_callback_info info); 330 static napi_value GetActiveVideoStabilizationMode(napi_env env, napi_callback_info info); 331 static napi_value SetVideoStabilizationMode(napi_env env, napi_callback_info info); 332 333 static napi_value LockForControl(napi_env env, napi_callback_info info); 334 static napi_value UnlockForControl(napi_env env, napi_callback_info info); 335 336 static napi_value On(napi_env env, napi_callback_info info); 337 static napi_value Once(napi_env env, napi_callback_info info); 338 static napi_value Off(napi_env env, napi_callback_info info); 339 340 static napi_value GetCameraOutputCapabilities(napi_env env, napi_callback_info info); 341 342 static napi_value GetSessionFunctions(napi_env env, napi_callback_info info); 343 static napi_value GetSessionConflictFunctions(napi_env env, napi_callback_info info); 344 const EmitterFunctions& GetEmitterFunctions() override; 345 static napi_value SetUsage(napi_env env, napi_callback_info info); 346 static napi_value IsAutoDeviceSwitchSupported(napi_env env, napi_callback_info info); 347 static napi_value EnableAutoDeviceSwitch(napi_env env, napi_callback_info info); 348 349 napi_env env_; 350 sptr<CaptureSession> cameraSession_; 351 std::shared_ptr<FocusCallbackListener> focusCallback_; 352 std::shared_ptr<SessionCallbackListener> sessionCallback_; 353 std::shared_ptr<PressureCallbackListener> pressureCallback_; 354 std::shared_ptr<ControlCenterEffectStatusCallbackListener> controlCenterEffectStatusCallback_; 355 std::shared_ptr<ExposureCallbackListener> exposureCallback_; 356 std::shared_ptr<MoonCaptureBoostCallbackListener> moonCaptureBoostCallback_; 357 std::shared_ptr<SmoothZoomCallbackListener> smoothZoomCallback_; 358 std::shared_ptr<AbilityCallbackListener> abilityCallback_; 359 std::shared_ptr<AutoDeviceSwitchCallbackListener> autoDeviceSwitchCallback_; 360 std::shared_ptr<MacroStatusCallbackListener> macroStatusCallback_ = nullptr; 361 362 static thread_local napi_ref sConstructor_; 363 static thread_local sptr<CaptureSession> sCameraSession_; 364 static thread_local uint32_t cameraSessionTaskId; 365 static const std::vector<napi_property_descriptor> camera_output_capability_sys_props; 366 static const std::vector<napi_property_descriptor> camera_ability_sys_props; 367 static const std::vector<napi_property_descriptor> camera_process_props; 368 static const std::vector<napi_property_descriptor> camera_process_sys_props; 369 static const std::vector<napi_property_descriptor> stabilization_props; 370 static const std::vector<napi_property_descriptor> flash_props; 371 static const std::vector<napi_property_descriptor> flash_sys_props; 372 static const std::vector<napi_property_descriptor> auto_exposure_props; 373 static const std::vector<napi_property_descriptor> focus_props; 374 static const std::vector<napi_property_descriptor> focus_sys_props; 375 static const std::vector<napi_property_descriptor> zoom_props; 376 static const std::vector<napi_property_descriptor> zoom_sys_props; 377 static const std::vector<napi_property_descriptor> filter_props; 378 static const std::vector<napi_property_descriptor> beauty_props; 379 static const std::vector<napi_property_descriptor> macro_props; 380 static const std::vector<napi_property_descriptor> moon_capture_boost_props; 381 static const std::vector<napi_property_descriptor> color_management_props; 382 static const std::vector<napi_property_descriptor> control_center_props; 383 static const std::vector<napi_property_descriptor> preconfig_props; 384 static const std::vector<napi_property_descriptor> white_balance_props; 385 static const std::vector<napi_property_descriptor> auto_switch_props; 386 static const std::vector<napi_property_descriptor> quality_prioritization_props; 387 static void CommitConfigAsync(uv_work_t* work); 388 static void StartAsync(uv_work_t* work); 389 static void UvWorkAsyncCompleted(uv_work_t* work, int status); 390 391 private: 392 static const EmitterFunctions fun_map_; 393 394 protected: 395 void RegisterExposureCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 396 const std::vector<napi_value>& args, bool isOnce); 397 void UnregisterExposureCallbackListener( 398 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 399 void RegisterFocusCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 400 const std::vector<napi_value>& args, bool isOnce); 401 void UnregisterFocusCallbackListener( 402 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 403 void RegisterMoonCaptureBoostCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 404 const std::vector<napi_value>& args, bool isOnce); 405 void UnregisterMoonCaptureBoostCallbackListener( 406 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 407 void RegisterSessionErrorCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 408 const std::vector<napi_value>& args, bool isOnce); 409 void UnregisterSessionErrorCallbackListener( 410 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 411 void RegisterSmoothZoomCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 412 const std::vector<napi_value>& args, bool isOnce); 413 void UnregisterSmoothZoomCallbackListener( 414 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 415 void RegisterAutoDeviceSwitchCallbackListener(const std::string& eventName, 416 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 417 void UnregisterAutoDeviceSwitchCallbackListener(const std::string& eventName, 418 napi_env env, napi_value callback, const std::vector<napi_value>& args); 419 420 virtual void RegisterFeatureDetectionStatusListener(const std::string& eventName, napi_env env, napi_value callback, 421 const std::vector<napi_value>& args, bool isOnce); 422 virtual void UnregisterFeatureDetectionStatusListener( 423 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 424 virtual void RegisterMacroStatusCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 425 const std::vector<napi_value>& args, bool isOnce); 426 virtual void UnregisterMacroStatusCallbackListener( 427 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 428 virtual void RegisterEffectSuggestionCallbackListener(const std::string& eventName, napi_env env, 429 napi_value callback, const std::vector<napi_value>& args, bool isOnce); 430 virtual void UnregisterEffectSuggestionCallbackListener( 431 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 432 virtual void RegisterAbilityChangeCallbackListener(const std::string& eventName, 433 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 434 virtual void UnregisterAbilityChangeCallbackListener(const std::string& eventName, 435 napi_env env, napi_value callback, const std::vector<napi_value>& args); 436 virtual void RegisterLcdFlashStatusCallbackListener(const std::string& eventName, 437 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 438 virtual void UnregisterLcdFlashStatusCallbackListener(const std::string& eventName, 439 napi_env env, napi_value callback, const std::vector<napi_value>& args); 440 virtual void RegisterFocusTrackingInfoCallbackListener(const std::string& eventName, 441 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 442 virtual void UnregisterFocusTrackingInfoCallbackListener(const std::string& eventName, 443 napi_env env, napi_value callback, const std::vector<napi_value>& args); 444 virtual void RegisterPressureStatusCallbackListener(const std::string& eventName, 445 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 446 virtual void UnregisterPressureStatusCallbackListener(const std::string& eventName, 447 napi_env env, napi_value callback, const std::vector<napi_value>& args); 448 virtual void RegisterControlCenterEffectStatusCallbackListener(const std::string& eventName, napi_env env, 449 napi_value callback, const std::vector<napi_value>& args, bool isOnce); 450 virtual void UnregisterControlCenterEffectStatusCallbackListener(const std::string& eventName, napi_env env, 451 napi_value callback, const std::vector<napi_value>& args); 452 RegisterSlowMotionStateCb(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args,bool isOnce)453 virtual void RegisterSlowMotionStateCb(const std::string& eventName, napi_env env, napi_value callback, 454 const std::vector<napi_value>& args, bool isOnce) {} UnregisterSlowMotionStateCb(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args)455 virtual void UnregisterSlowMotionStateCb( 456 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args) {} RegisterExposureInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args,bool isOnce)457 virtual void RegisterExposureInfoCallbackListener(const std::string& eventName, 458 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce) {} UnregisterExposureInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args)459 virtual void UnregisterExposureInfoCallbackListener(const std::string& eventName, 460 napi_env env, napi_value callback, const std::vector<napi_value>& args) {} RegisterIsoInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args,bool isOnce)461 virtual void RegisterIsoInfoCallbackListener(const std::string& eventName, 462 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce) {} UnregisterIsoInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args)463 virtual void UnregisterIsoInfoCallbackListener(const std::string& eventName, 464 napi_env env, napi_value callback, const std::vector<napi_value>& args) {} RegisterApertureInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args,bool isOnce)465 virtual void RegisterApertureInfoCallbackListener(const std::string& eventName, 466 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce) {} UnregisterApertureInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args)467 virtual void UnregisterApertureInfoCallbackListener(const std::string& eventName, 468 napi_env env, napi_value callback, const std::vector<napi_value>& args) {} RegisterLuminationInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args,bool isOnce)469 virtual void RegisterLuminationInfoCallbackListener(const std::string& eventName, 470 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce) {} UnregisterLuminationInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args)471 virtual void UnregisterLuminationInfoCallbackListener(const std::string& eventName, 472 napi_env env, napi_value callback, const std::vector<napi_value>& args) {} RegisterTryAEInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args,bool isOnce)473 virtual void RegisterTryAEInfoCallbackListener(const std::string& eventName, 474 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce) {} UnregisterTryAEInfoCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args)475 virtual void UnregisterTryAEInfoCallbackListener(const std::string& eventName, 476 napi_env env, napi_value callback, const std::vector<napi_value>& args) {} RegisterLightStatusCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args,bool isOnce)477 virtual void RegisterLightStatusCallbackListener(const std::string& eventName, 478 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce) {} UnregisterLightStatusCallbackListener(const std::string & eventName,napi_env env,napi_value callback,const std::vector<napi_value> & args)479 virtual void UnregisterLightStatusCallbackListener(const std::string& eventName, 480 napi_env env, napi_value callback, const std::vector<napi_value>& args) {} 481 }; 482 483 struct CameraSessionAsyncContext : public AsyncContext { CameraSessionAsyncContextCameraSessionAsyncContext484 CameraSessionAsyncContext(std::string funcName, int32_t taskId) : AsyncContext(funcName, taskId) {}; 485 CameraSessionNapi* objectInfo = nullptr; 486 std::string errorMsg; 487 napi_env env = nullptr; 488 }; 489 } // namespace CameraStandard 490 } // namespace OHOS 491 #endif /* CAMERA_SESSION_NAPI_H_ */ 492