From e23bb90028574ae9d6f295ca0ec5b91f28530be8 Mon Sep 17 00:00:00 2001 From: "zhangyafei.echo" Date: Fri, 22 Apr 2022 10:37:03 +0800 Subject: [PATCH] Description:Add onNewWant in js declarative engine. Sig:SIG_ApplicationFramework Feature or BugFix: BugFix Binary Source: No Signed-off-by: zhangyafei.echo Change-Id: I6dbb9216462ff5168586987ed813ece4d56330d9 --- adapter/ohos/entrance/ace_ability.cpp | 1 + adapter/ohos/entrance/ace_container.cpp | 19 +++++++++++++++++++ adapter/ohos/entrance/ace_container.h | 1 + .../engine/jsi/jsi_declarative_engine.cpp | 14 ++++++++++++++ .../engine/jsi/jsi_declarative_engine.h | 2 ++ 5 files changed, 37 insertions(+) diff --git a/adapter/ohos/entrance/ace_ability.cpp b/adapter/ohos/entrance/ace_ability.cpp index 77b3fc7b..91a5818b 100644 --- a/adapter/ohos/entrance/ace_ability.cpp +++ b/adapter/ohos/entrance/ace_ability.cpp @@ -471,6 +471,7 @@ void AceAbility::OnNewWant(const Want& want) Ability::OnNewWant(want); std::string params = want.GetStringParam(START_PARAMS_KEY); Platform::AceContainer::OnNewRequest(abilityId_, params); + Platform::AceContainer::OnNewWant(abilityId_); LOGI("AceAbility::OnNewWant called End"); } diff --git a/adapter/ohos/entrance/ace_container.cpp b/adapter/ohos/entrance/ace_container.cpp index 3e6b384c..fb25d424 100644 --- a/adapter/ohos/entrance/ace_container.cpp +++ b/adapter/ohos/entrance/ace_container.cpp @@ -362,6 +362,25 @@ void AceContainer::OnInactive(int32_t instanceId) }, TaskExecutor::TaskType::UI); } +void AceContainer::OnNewWant(int32_t instanceId) +{ + std::string data = ""; + auto container = AceEngine::Get().GetContainer(instanceId); + if (!container) { + LOGE("container is null, OnNewWant failed."); + return; + } + + ContainerScope scope(instanceId); + auto front = container->GetFrontend(); + if (!front) { + LOGE("front is null, OnNewWant failed."); + return; + } + + front->OnNewWant(data); +} + bool AceContainer::OnStartContinuation(int32_t instanceId) { auto container = AceEngine::Get().GetContainer(instanceId); diff --git a/adapter/ohos/entrance/ace_container.h b/adapter/ohos/entrance/ace_container.h index eeb22f6a..c9fea610 100644 --- a/adapter/ohos/entrance/ace_container.h +++ b/adapter/ohos/entrance/ace_container.h @@ -226,6 +226,7 @@ public: static void OnHide(int32_t instanceId); static void OnActive(int32_t instanceId); static void OnInactive(int32_t instanceId); + static void OnNewWant(int32_t instanceId); static bool OnStartContinuation(int32_t instanceId); static std::string OnSaveData(int32_t instanceId); static bool OnRestoreData(int32_t instanceId, const std::string& data); diff --git a/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp b/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp index c216a9cc..bb049ad6 100644 --- a/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp +++ b/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp @@ -1339,6 +1339,20 @@ void JsiDeclarativeEngine::OnInactive() CallAppFunc("onInactive"); } +void JsiDeclarativeEngine::OnNewWant(const std::string& data) +{ + LOGI("JsiDeclarativeEngine OnNewWant called."); + shared_ptr runtime = engineInstance_->GetJsRuntime(); + if (!runtime) { + LOGE("OnNewWant failed, runtime is null."); + return; + } + + shared_ptr object = runtime->NewObject(); + std::vector> argv = { object }; + CallAppFunc("onNewWant", argv); +} + bool JsiDeclarativeEngine::OnStartContinuation() { LOGI("JsiDeclarativeEngine OnStartContinuation"); diff --git a/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.h b/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.h index 73ef8c79..5eb5fba9 100644 --- a/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.h +++ b/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.h @@ -224,6 +224,8 @@ public: void OnInactive() override; + void OnNewWant(const std::string& data) override; + bool OnStartContinuation() override; void OnCompleteContinuation(int32_t code) override;