From c876b14a1014c5b34c268ea48769e8a6faceab68 Mon Sep 17 00:00:00 2001 From: wentao Date: Thu, 20 Jun 2024 22:05:56 +0800 Subject: [PATCH] fix cj abilityStageContext Signed-off-by: wentao Change-Id: Ia1d5409ba5f1a5494f817657ee7086cc4fb76206 Signed-off-by: wentao --- .../ability_runtime/app/cj_ability_stage.cpp | 29 +++++++++++++------ .../app/cj_ability_stage_object.cpp | 9 ++++++ frameworks/native/runtime/cj_runtime.cpp | 2 +- .../ability_runtime/app/cj_ability_stage.h | 2 ++ .../app/cj_ability_stage_object.h | 2 ++ 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/frameworks/native/appkit/ability_runtime/app/cj_ability_stage.cpp b/frameworks/native/appkit/ability_runtime/app/cj_ability_stage.cpp index d5b269c86f..78605a1c37 100644 --- a/frameworks/native/appkit/ability_runtime/app/cj_ability_stage.cpp +++ b/frameworks/native/appkit/ability_runtime/app/cj_ability_stage.cpp @@ -80,34 +80,45 @@ std::shared_ptr CJAbilityStage::Create( const std::unique_ptr& runtime, const AppExecFwk::HapModuleInfo& hapModuleInfo) { if (!runtime) { - HILOG_ERROR("Runtime does not exist."); + TAG_LOGE(AAFwkTag::APPKIT, "Runtime does not exist."); return nullptr; } auto& cjRuntime = static_cast(*runtime); // Load cj app library. if (!cjRuntime.IsAppLibLoaded()) { - HILOG_ERROR("Failed to create CJAbilityStage, applib not loaded."); + TAG_LOGE(AAFwkTag::APPKIT, "Failed to create CJAbilityStage, applib not loaded."); return nullptr; } auto cjAbilityStageObject = CJAbilityStageObject::LoadModule(hapModuleInfo.moduleName); if (cjAbilityStageObject == nullptr) { cjRuntime.UnLoadCJAppLibrary(); - HILOG_ERROR("Failed to create CJAbilityStage."); + TAG_LOGE(AAFwkTag::APPKIT, "Failed to create CJAbilityStage."); return nullptr; } return std::make_shared(cjAbilityStageObject); } +void CJAbilityStage::Init(const std::shared_ptr &context, + const std::weak_ptr application) +{ + AbilityStage::Init(context, application); + if (!cjAbilityStageObject_) { + TAG_LOGE(AAFwkTag::APPKIT, "Failed to create CJAbilityStage."); + return; + } + cjAbilityStageObject_->Init(this); +} + void CJAbilityStage::OnCreate(const AAFwk::Want& want) const { AbilityStage::OnCreate(want); if (!cjAbilityStageObject_) { - HILOG_ERROR("CJAbilityStage is not loaded."); + TAG_LOGE(AAFwkTag::APPKIT, "CJAbilityStage is not loaded."); return; } - HILOG_DEBUG("CJAbilityStage::OnCreate"); + TAG_LOGD(AAFwkTag::APPKIT, "CJAbilityStage::OnCreate"); cjAbilityStageObject_->OnCreate(); } @@ -115,7 +126,7 @@ std::string CJAbilityStage::OnAcceptWant(const AAFwk::Want& want) { AbilityStage::OnAcceptWant(want); if (!cjAbilityStageObject_) { - HILOG_ERROR("CJAbilityStage is not loaded."); + TAG_LOGE(AAFwkTag::APPKIT, "CJAbilityStage is not loaded."); return ""; } return cjAbilityStageObject_->OnAcceptWant(want); @@ -126,12 +137,12 @@ void CJAbilityStage::OnConfigurationUpdated(const AppExecFwk::Configuration& con AbilityStage::OnConfigurationUpdated(configuration); auto fullConfig = GetContext()->GetConfiguration(); if (!fullConfig) { - HILOG_ERROR("configuration is nullptr."); + TAG_LOGE(AAFwkTag::APPKIT, "configuration is nullptr."); return; } if (!cjAbilityStageObject_) { - HILOG_ERROR("CJAbilityStage is not loaded."); + TAG_LOGE(AAFwkTag::APPKIT, "CJAbilityStage is not loaded."); return; } cjAbilityStageObject_->OnConfigurationUpdated(fullConfig); @@ -141,7 +152,7 @@ void CJAbilityStage::OnMemoryLevel(int level) { AbilityStage::OnMemoryLevel(level); if (!cjAbilityStageObject_) { - HILOG_ERROR("CJAbilityStage is not loaded."); + TAG_LOGE(AAFwkTag::APPKIT, "CJAbilityStage is not loaded."); return; } cjAbilityStageObject_->OnMemoryLevel(level); diff --git a/frameworks/native/appkit/ability_runtime/app/cj_ability_stage_object.cpp b/frameworks/native/appkit/ability_runtime/app/cj_ability_stage_object.cpp index 3eb0669d0d..841dba3dc8 100644 --- a/frameworks/native/appkit/ability_runtime/app/cj_ability_stage_object.cpp +++ b/frameworks/native/appkit/ability_runtime/app/cj_ability_stage_object.cpp @@ -67,6 +67,15 @@ CJAbilityStageObject::~CJAbilityStageObject() id_ = 0; } +void CJAbilityStageObject::Init(AbilityStageHandle abilityStage) const +{ + if (g_cjAbilityStageFuncs == nullptr) { + TAG_LOGE(AAFwkTag::APPKIT, "cj functions for CJAbilityStage are not registered"); + return; + } + g_cjAbilityStageFuncs->AbilityStageInit(id_, abilityStage); +} + void CJAbilityStageObject::OnCreate() const { if (g_cjAbilityStageFuncs == nullptr) { diff --git a/frameworks/native/runtime/cj_runtime.cpp b/frameworks/native/runtime/cj_runtime.cpp index 200b04d214..059f004345 100644 --- a/frameworks/native/runtime/cj_runtime.cpp +++ b/frameworks/native/runtime/cj_runtime.cpp @@ -87,7 +87,7 @@ bool CJRuntime::Initialize(const Options& options) void CJRuntime::RegisterUncaughtExceptionHandler(const CJUncaughtExceptionInfo& uncaughtExceptionInfo) { - HILOG_INFO("RegisterUncaughtExceptionHandler not support yet"); + OHOS::CJEnvironment::GetInstance()->RegisterCJUncaughtExceptionHandler(uncaughtExceptionInfo); } bool CJRuntime::LoadCJAppLibrary(const AppLibPathVec& appLibPaths) diff --git a/interfaces/kits/native/appkit/ability_runtime/app/cj_ability_stage.h b/interfaces/kits/native/appkit/ability_runtime/app/cj_ability_stage.h index 4cd03a8a37..aeb4194f0c 100644 --- a/interfaces/kits/native/appkit/ability_runtime/app/cj_ability_stage.h +++ b/interfaces/kits/native/appkit/ability_runtime/app/cj_ability_stage.h @@ -57,6 +57,8 @@ public: std::shared_ptr cjStage) : cjAbilityStageObject_(std::move(cjStage)) {} ~CJAbilityStage() override = default; + void Init(const std::shared_ptr &context, + const std::weak_ptr application) override; void OnCreate(const AAFwk::Want& want) const override; std::string OnAcceptWant(const AAFwk::Want& want) override; void OnConfigurationUpdated(const AppExecFwk::Configuration& configuration) override; diff --git a/interfaces/kits/native/appkit/ability_runtime/app/cj_ability_stage_object.h b/interfaces/kits/native/appkit/ability_runtime/app/cj_ability_stage_object.h index dd512f1e07..44a7ff7005 100644 --- a/interfaces/kits/native/appkit/ability_runtime/app/cj_ability_stage_object.h +++ b/interfaces/kits/native/appkit/ability_runtime/app/cj_ability_stage_object.h @@ -46,6 +46,7 @@ struct CJAbilityStageFuncs { char* (*AbilityStageOnAcceptWant)(int64_t handle, OHOS::AAFwk::Want* want); void (*AbilityStageOnConfigurationUpdated)(int64_t id, CJConfiguration configuration); void (*AbilityStageOnMemoryLevel)(int64_t id, int32_t level); + void (*AbilityStageInit)(int64_t id, void* abilityStage); }; CJ_EXPORT void RegisterCJAbilityStageFuncs(void (*registerFunc)(CJAbilityStageFuncs* result)); @@ -60,6 +61,7 @@ public: explicit CJAbilityStageObject(int64_t id) : id_(id) {} ~CJAbilityStageObject(); + void Init(AbilityStageHandle abilityStage) const; void OnCreate() const; std::string OnAcceptWant(const AAFwk::Want& want) const; void OnConfigurationUpdated(const std::shared_ptr& configuration) const;