1 /* 2 * Copyright (c) 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 #ifndef OHOS_ABILITY_RUNTIME_JS_EMBEDDABLE_UI_ABILITY_CONTEXT_H 17 #define OHOS_ABILITY_RUNTIME_JS_EMBEDDABLE_UI_ABILITY_CONTEXT_H 18 19 #include <algorithm> 20 #include <memory> 21 #include <native_engine/native_value.h> 22 23 #include "ability_connect_callback.h" 24 #include "ability_context.h" 25 #include "event_handler.h" 26 #include "js_ability_context.h" 27 #include "js_free_install_observer.h" 28 #include "js_runtime.h" 29 #include "js_ui_extension_context.h" 30 31 namespace OHOS { 32 namespace AbilityRuntime { 33 class JsEmbeddableUIAbilityContext final { 34 public: 35 JsEmbeddableUIAbilityContext(const std::shared_ptr<AbilityContext>& uiAbiContext, 36 const std::shared_ptr<UIExtensionContext>& uiExtContext, int32_t screenMode); 37 ~JsEmbeddableUIAbilityContext() = default; 38 static void Finalizer(napi_env env, void* data, void* hint); 39 static napi_value StartAbility(napi_env env, napi_callback_info info); 40 static napi_value OpenLink(napi_env env, napi_callback_info info); 41 static napi_value StartAbilityForResult(napi_env env, napi_callback_info info); 42 static napi_value ConnectAbility(napi_env env, napi_callback_info info); 43 static napi_value DisconnectAbility(napi_env env, napi_callback_info info); 44 static napi_value TerminateSelf(napi_env env, napi_callback_info info); 45 static napi_value TerminateSelfWithResult(napi_env env, napi_callback_info info); 46 static napi_value BackToCallerAbilityWithResult(napi_env env, napi_callback_info info); 47 static napi_value CreateJsEmbeddableUIAbilityContext(napi_env env, std::shared_ptr<AbilityContext> uiAbiContext, 48 std::shared_ptr<UIExtensionContext> uiExtContext, int32_t screenMode); 49 static napi_value StartAbilityAsCaller(napi_env env, napi_callback_info info); 50 static napi_value StartAbilityWithAccount(napi_env env, napi_callback_info info); 51 static napi_value StartAbilityByCall(napi_env env, napi_callback_info info); 52 static napi_value StartAbilityForResultWithAccount(napi_env env, napi_callback_info info); 53 static napi_value StartServiceExtensionAbility(napi_env env, napi_callback_info info); 54 static napi_value StartServiceExtensionAbilityWithAccount(napi_env env, napi_callback_info info); 55 static napi_value StopServiceExtensionAbility(napi_env env, napi_callback_info info); 56 static napi_value StopServiceExtensionAbilityWithAccount(napi_env env, napi_callback_info info); 57 static napi_value ConnectAbilityWithAccount(napi_env env, napi_callback_info info); 58 static napi_value RestoreWindowStage(napi_env env, napi_callback_info info); 59 static napi_value IsTerminating(napi_env env, napi_callback_info info); 60 static napi_value StartRecentAbility(napi_env env, napi_callback_info info); 61 static napi_value RequestDialogService(napi_env env, napi_callback_info info); 62 static napi_value ReportDrawnCompleted(napi_env env, napi_callback_info info); 63 static napi_value SetMissionContinueState(napi_env env, napi_callback_info info); 64 static napi_value StartAbilityByType(napi_env env, napi_callback_info info); 65 static napi_value MoveAbilityToBackground(napi_env env, napi_callback_info info); 66 static napi_value RequestModalUIExtension(napi_env env, napi_callback_info info); 67 static napi_value OpenAtomicService(napi_env env, napi_callback_info info); 68 static napi_value ShowAbility(napi_env env, napi_callback_info info); 69 static napi_value HideAbility(napi_env env, napi_callback_info info); 70 static napi_value SetRestoreEnabled(napi_env env, napi_callback_info info); 71 static napi_value SetColorMode(napi_env env, napi_callback_info info); 72 static napi_value StartUIServiceExtension(napi_env env, napi_callback_info info); 73 static napi_value ConnectUIServiceExtension(napi_env env, napi_callback_info info); 74 static napi_value DisconnectUIServiceExtension(napi_env env, napi_callback_info info); 75 76 private: 77 static void WrapJsUIAbilityContext(napi_env env, std::shared_ptr<AbilityContext> uiAbiContext, 78 napi_value &objValue, int32_t screenMode); 79 static void WrapJsUIExtensionContext(napi_env env, std::shared_ptr<UIExtensionContext> uiExtContext, 80 napi_value &objValue, int32_t screenMode); 81 napi_value OnStartAbility(napi_env env, NapiCallbackInfo& info); 82 napi_value OnOpenLink(napi_env env, NapiCallbackInfo& info); 83 napi_value OnStartAbilityForResult(napi_env env, NapiCallbackInfo& info); 84 napi_value OnConnectAbility(napi_env env, NapiCallbackInfo& info); 85 napi_value OnDisconnectAbility(napi_env env, NapiCallbackInfo& info); 86 napi_value OnTerminateSelf(napi_env env, NapiCallbackInfo& info); 87 napi_value OnTerminateSelfWithResult(napi_env env, NapiCallbackInfo& info); 88 napi_value OnBackToCallerAbilityWithResult(napi_env env, NapiCallbackInfo& info); 89 napi_value OnStartAbilityAsCaller(napi_env env, NapiCallbackInfo& info); 90 napi_value OnStartAbilityWithAccount(napi_env env, NapiCallbackInfo& info); 91 napi_value OnStartAbilityByCall(napi_env env, NapiCallbackInfo& info); 92 napi_value OnStartAbilityForResultWithAccount(napi_env env, NapiCallbackInfo& info); 93 napi_value OnStartExtensionAbility(napi_env env, NapiCallbackInfo& info); 94 napi_value OnStartExtensionAbilityWithAccount(napi_env env, NapiCallbackInfo& info); 95 napi_value OnStopExtensionAbility(napi_env env, NapiCallbackInfo& info); 96 napi_value OnStopExtensionAbilityWithAccount(napi_env env, NapiCallbackInfo& info); 97 napi_value OnConnectAbilityWithAccount(napi_env env, NapiCallbackInfo& info); 98 napi_value OnRestoreWindowStage(napi_env env, NapiCallbackInfo& info); 99 napi_value OnIsTerminating(napi_env env, NapiCallbackInfo& info); 100 napi_value OnStartRecentAbility(napi_env env, NapiCallbackInfo& info); 101 napi_value OnRequestDialogService(napi_env env, NapiCallbackInfo& info); 102 napi_value OnReportDrawnCompleted(napi_env env, NapiCallbackInfo& info); 103 napi_value OnSetMissionContinueState(napi_env env, NapiCallbackInfo& info); 104 napi_value OnStartAbilityByType(napi_env env, NapiCallbackInfo& info); 105 napi_value OnMoveAbilityToBackground(napi_env env, NapiCallbackInfo& info); 106 napi_value OnRequestModalUIExtension(napi_env env, NapiCallbackInfo& info); 107 napi_value OnOpenAtomicService(napi_env env, NapiCallbackInfo& info); 108 napi_value OnShowAbility(napi_env env, NapiCallbackInfo& info); 109 napi_value OnHideAbility(napi_env env, NapiCallbackInfo& info); 110 napi_value OnSetRestoreEnabled(napi_env env, NapiCallbackInfo& info); 111 napi_value OnSetColorMode(napi_env env, NapiCallbackInfo& info); 112 napi_value OnStartUIServiceExtension(napi_env env, NapiCallbackInfo& info); 113 napi_value OnConnectUIServiceExtension(napi_env env, NapiCallbackInfo& info); 114 napi_value OnDisconnectUIServiceExtension(napi_env env, NapiCallbackInfo& info); 115 116 #ifdef SUPPORT_GRAPHICS 117 public: 118 static napi_value SetMissionLabel(napi_env env, napi_callback_info info); 119 static napi_value SetMissionIcon(napi_env env, napi_callback_info info); 120 private: 121 napi_value OnSetMissionLabel(napi_env env, NapiCallbackInfo& info); 122 napi_value OnSetMissionIcon(napi_env env, NapiCallbackInfo& info); 123 #endif 124 125 private: 126 std::shared_ptr<JsAbilityContext> jsAbilityContext_; 127 std::shared_ptr<JsUIExtensionContext> jsUIExtensionContext_; 128 int32_t screenMode_ = AAFwk::IDLE_SCREEN_MODE; 129 }; 130 } // namespace AbilityRuntime 131 } // namespace OHOS 132 #endif // OHOS_ABILITY_RUNTIME_JS_EMBEDDABLE_UI_ABILITY_CONTEXT_H 133