1 /* 2 * Copyright (c) 2024 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_CJ_ABILITY_OBJECT_H 17 #define OHOS_ABILITY_RUNTIME_CJ_ABILITY_OBJECT_H 18 19 #include <memory> 20 21 #include "ability.h" 22 #include "cj_runtime.h" 23 #include "cj_utils_ffi.h" 24 #include "configuration.h" 25 26 #ifdef WINDOWS_PLATFORM 27 #define CJ_EXPORT __declspec(dllexport) 28 #else 29 #define CJ_EXPORT __attribute__((visibility("default"))) 30 #endif 31 32 using AbilityHandle = void*; 33 using WantHandle = void*; 34 using WindowStagePtr = void*; 35 using VectorStringHandle = void*; 36 37 extern "C" { 38 struct CJConfiguration { 39 bool isValid; 40 const char* language; 41 int32_t colorMode; 42 int32_t direction; 43 int32_t screenDensity; 44 int32_t displayId; 45 }; 46 } 47 48 extern "C" { 49 struct CJLaunchParam { 50 int32_t launchReason; 51 int32_t lastExitReason; 52 char* lastExitMessage; 53 }; 54 55 struct CJNumberParmas { 56 int32_t numberResult; 57 char* params; 58 }; 59 60 struct CJAbilityFuncs { 61 int64_t (*cjAbilityCreate)(const char* name); 62 void (*cjAbilityRelease)(int64_t id); 63 void (*cjAbilityOnStart)(int64_t id, WantHandle want, CJLaunchParam launchParam); 64 void (*cjAbilityOnStop)(int64_t id); 65 void (*cjAbilityOnSceneCreated)(int64_t id, WindowStagePtr cjWindowStage); 66 void (*cjAbilityOnSceneRestored)(int64_t id, WindowStagePtr cjWindowStage); 67 void (*cjAbilityOnSceneDestroyed)(int64_t id); 68 void (*cjAbilityOnForeground)(int64_t id, WantHandle want); 69 void (*cjAbilityOnBackground)(int64_t id); 70 void (*cjAbilityOnConfigurationUpdated)(int64_t id, CJConfiguration configuration); 71 void (*cjAbilityOnNewWant)(int64_t id, WantHandle want, CJLaunchParam launchParam); 72 VectorStringHandle (*cjAbilityDump)(int64_t id, VectorStringHandle params); 73 int32_t (*cjAbilityOnContinue)(int64_t id, const char* params); 74 void (*cjAbilityInit)(int64_t id, void* ability); 75 bool (*cjAbilityOnBackPress)(int64_t id); 76 void (*cjAbilityOnSceneWillDestroy)(int64_t id, WindowStagePtr cjWindowStage); 77 void (*cjAbilityOnConfigurationUpdate)(int64_t id, OHOS::AbilityRuntime::CConfiguration configuration); 78 void (*cjAbilityOnMemoryLevel)(int64_t id, int32_t level); 79 bool (*cjAbilityOnPrepareTerminate)(int64_t id); 80 CJNumberParmas (*cjAbilityOnSaveState)(int64_t id_, int32_t reason, const char* params); 81 char* (*cjAbilityOnShare)(int64_t id_, const char* params); 82 CJNumberParmas (*cjAbilityOnContinueWithParams)(int64_t id, const char* params); 83 int64_t (*cjAbilityOnCallRequest)(int64_t id); 84 void (*cjAbilityOnSetCalleeFlag)(int64_t id, bool flag); 85 }; 86 87 CJ_EXPORT void RegisterCJAbilityFuncs(void (*registerFunc)(CJAbilityFuncs*)); 88 } 89 90 namespace OHOS { 91 92 namespace Rosen { 93 class CJWindowStageImpl; 94 } 95 96 namespace AbilityRuntime { 97 class CJAbilityObject { 98 public: 99 static std::shared_ptr<CJAbilityObject> LoadModule(const std::string& name); 100 CJAbilityObject(int64_t id)101 explicit CJAbilityObject(int64_t id) : id_(id) {} 102 ~CJAbilityObject(); 103 void OnStart(const AAFwk::Want& want, const AAFwk::LaunchParam& launchParam) const; 104 void OnStop() const; 105 void OnSceneCreated(OHOS::Rosen::CJWindowStageImpl* cjWindowStage) const; 106 void OnSceneRestored(OHOS::Rosen::CJWindowStageImpl* cjWindowStage) const; 107 void OnSceneWillDestroy(OHOS::Rosen::CJWindowStageImpl* cjWindowStage) const; 108 void OnSceneDestroyed() const; 109 void OnForeground(const AAFwk::Want& want) const; 110 void OnBackground() const; 111 bool OnBackPress(bool defaultRet) const; 112 void OnConfigurationUpdated(const std::shared_ptr<AppExecFwk::Configuration>& configuration) const; 113 void OnNewWant(const AAFwk::Want& want, const AAFwk::LaunchParam& launchParam) const; 114 void Dump(const std::vector<std::string>& params, std::vector<std::string>& info) const; 115 int32_t OnContinue(AAFwk::WantParams &wantParams) const; 116 void Init(AbilityHandle ability) const; 117 int64_t GetId() const; 118 void OnMemoryLevel(int32_t level) const; 119 bool OnPrepareTerminate() const; 120 int32_t OnSaveState(int32_t reason, WantParams &wantParams) const; 121 int32_t OnShare(WantParams &wantParams) const; 122 int64_t OnCallRequest() const; 123 void OnSetCalleeFlag(bool flag) const; 124 125 private: 126 int64_t id_ = 0; 127 }; 128 } // namespace AbilityRuntime 129 } // namespace OHOS 130 131 #endif // OHOS_ABILITY_RUNTIME_CJ_ABILITY_OBJECT_H 132