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 "event_handler.h" 25 #include "foundation/ability/ability_runtime/interfaces/kits/native/ability/ability_runtime/ability_context.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 71 private: 72 static void WrapJsUIAbilityContext(napi_env env, std::shared_ptr<AbilityContext> uiAbiContext, 73 napi_value &objValue, int32_t screenMode); 74 static void WrapJsUIExtensionContext(napi_env env, std::shared_ptr<UIExtensionContext> uiExtContext, 75 napi_value &objValue, int32_t screenMode); 76 napi_value OnStartAbility(napi_env env, NapiCallbackInfo& info); 77 napi_value OnOpenLink(napi_env env, NapiCallbackInfo& info); 78 napi_value OnStartAbilityForResult(napi_env env, NapiCallbackInfo& info); 79 napi_value OnConnectAbility(napi_env env, NapiCallbackInfo& info); 80 napi_value OnDisconnectAbility(napi_env env, NapiCallbackInfo& info); 81 napi_value OnTerminateSelf(napi_env env, NapiCallbackInfo& info); 82 napi_value OnTerminateSelfWithResult(napi_env env, NapiCallbackInfo& info); 83 napi_value OnBackToCallerAbilityWithResult(napi_env env, NapiCallbackInfo& info); 84 napi_value OnStartAbilityAsCaller(napi_env env, NapiCallbackInfo& info); 85 napi_value OnStartAbilityWithAccount(napi_env env, NapiCallbackInfo& info); 86 napi_value OnStartAbilityByCall(napi_env env, NapiCallbackInfo& info); 87 napi_value OnStartAbilityForResultWithAccount(napi_env env, NapiCallbackInfo& info); 88 napi_value OnStartExtensionAbility(napi_env env, NapiCallbackInfo& info); 89 napi_value OnStartExtensionAbilityWithAccount(napi_env env, NapiCallbackInfo& info); 90 napi_value OnStopExtensionAbility(napi_env env, NapiCallbackInfo& info); 91 napi_value OnStopExtensionAbilityWithAccount(napi_env env, NapiCallbackInfo& info); 92 napi_value OnConnectAbilityWithAccount(napi_env env, NapiCallbackInfo& info); 93 napi_value OnRestoreWindowStage(napi_env env, NapiCallbackInfo& info); 94 napi_value OnIsTerminating(napi_env env, NapiCallbackInfo& info); 95 napi_value OnStartRecentAbility(napi_env env, NapiCallbackInfo& info); 96 napi_value OnRequestDialogService(napi_env env, NapiCallbackInfo& info); 97 napi_value OnReportDrawnCompleted(napi_env env, NapiCallbackInfo& info); 98 napi_value OnSetMissionContinueState(napi_env env, NapiCallbackInfo& info); 99 napi_value OnStartAbilityByType(napi_env env, NapiCallbackInfo& info); 100 napi_value OnMoveAbilityToBackground(napi_env env, NapiCallbackInfo& info); 101 napi_value OnRequestModalUIExtension(napi_env env, NapiCallbackInfo& info); 102 napi_value OnOpenAtomicService(napi_env env, NapiCallbackInfo& info); 103 napi_value OnShowAbility(napi_env env, NapiCallbackInfo& info); 104 napi_value OnHideAbility(napi_env env, NapiCallbackInfo& info); 105 106 #ifdef SUPPORT_GRAPHICS 107 public: 108 static napi_value SetMissionLabel(napi_env env, napi_callback_info info); 109 static napi_value SetMissionIcon(napi_env env, napi_callback_info info); 110 private: 111 napi_value OnSetMissionLabel(napi_env env, NapiCallbackInfo& info); 112 napi_value OnSetMissionIcon(napi_env env, NapiCallbackInfo& info); 113 #endif 114 115 private: 116 std::shared_ptr<JsAbilityContext> jsAbilityContext_; 117 std::shared_ptr<JsUIExtensionContext> jsUIExtensionContext_; 118 int32_t screenMode_ = AAFwk::IDLE_SCREEN_MODE; 119 }; 120 } // namespace AbilityRuntime 121 } // namespace OHOS 122 #endif // OHOS_ABILITY_RUNTIME_JS_EMBEDDABLE_UI_ABILITY_CONTEXT_H 123