From 487144d500b8cc03bce9b62f850ebef7145f6060 Mon Sep 17 00:00:00 2001 From: xiexiyun Date: Tue, 19 Apr 2022 15:44:42 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0FA=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E4=B8=8B=E7=AA=97=E5=8F=A3=E8=AE=BE=E7=BD=AE=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E8=89=B2handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiexiyun Change-Id: Iacac3538a44a306e767bd306a976472ba42b2ef9 --- adapter/ohos/entrance/ace_ability.cpp | 59 +++++++++++++++++++++++++++ adapter/ohos/entrance/ace_ability.h | 7 +++- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/adapter/ohos/entrance/ace_ability.cpp b/adapter/ohos/entrance/ace_ability.cpp index 4909c6cf..30ca5a68 100644 --- a/adapter/ohos/entrance/ace_ability.cpp +++ b/adapter/ohos/entrance/ace_ability.cpp @@ -200,6 +200,10 @@ void AceAbility::OnStart(const Want& want) OHOS::sptr occupiedAreaChangeListener(this); window->RegisterOccupiedAreaChangeListener(occupiedAreaChangeListener); + // register ace ability handler callback + OHOS::sptr aceAbilityHandler(this); + window->SetAceAbilityHandler(aceAbilityHandler); + int32_t deviceWidth = 0; int32_t deviceHeight = 0; auto defaultDisplay = Rosen::DisplayManager::GetInstance().GetDefaultDisplay(); @@ -745,5 +749,60 @@ void AceAbility::OnKeyEvent(std::shared_ptr& keyEvent) } flutterAceView->DispatchKeyEvent(flutterAceView, keyEvent); } + +void AceAbility::SetBackgroundColor(uint32_t color) +{ + LOGI("AceAbilityHandler::SetBackgroundColor color is %{public}u", color); + auto container = Platform::AceContainer::GetContainer(instanceId_); + if (!container) { + LOGE("SetBackgroundColor failed: container is null."); + return; + } + ContainerScope scope(instanceId_); + auto taskExecutor = container->GetTaskExecutor(); + if (!taskExecutor) { + LOGE("SetBackgroundColor failed: taskExecutor is null."); + return; + } + taskExecutor->PostSyncTask([container, bgColor = color]() { + auto pipelineContext = container->GetPipelineContext(); + if (!pipelineContext) { + LOGE("SetBackgroundColor failed, pipeline context is null."); + return; + } + pipelineContext->SetAppBgColor(Color(bgColor)); + }, TaskExecutor::TaskType::UI); +} +uint32_t AceAbility::GetBackgroundColor() +{ + auto container = Platform::AceContainer::GetContainer(instanceId_); + if (!container) { + LOGE("AceAbilityHandler GetBackgroundColor failed: container is null. return 0x000000"); + return 0x000000; + } + auto taskExecutor = container->GetTaskExecutor(); + if (!taskExecutor) { + LOGE("AceAbilityHandler GetBackgroundColor failed: taskExecutor is null."); + return 0x000000; + } + ContainerScope scope(instanceId_); + uint32_t bgColor = 0x000000; + taskExecutor->PostSyncTask([&bgColor, container]() { + if (!container) { + LOGE("Post sync task GetBackgroundColor failed: container is null. return 0x000000"); + return; + } + auto pipelineContext = container->GetPipelineContext(); + if (!pipelineContext) { + LOGE("Post sync task GetBackgroundColor failed: pipeline is null. return 0x000000"); + return; + } + bgColor = pipelineContext->GetAppBgColor().GetValue(); + }, TaskExecutor::TaskType::UI); + + LOGI("AceAbilityHandler::GetBackgroundColor, value is %{public}u", bgColor); + return bgColor; +} + } // namespace Ace } // namespace OHOS diff --git a/adapter/ohos/entrance/ace_ability.h b/adapter/ohos/entrance/ace_ability.h index bf4ccea1..a451a170 100644 --- a/adapter/ohos/entrance/ace_ability.h +++ b/adapter/ohos/entrance/ace_ability.h @@ -32,7 +32,8 @@ class AceAbility final : public OHOS::AppExecFwk::Ability, public OHOS::Rosen::IWindowChangeListener, public OHOS::Rosen::IWindowDragListener, public OHOS::Rosen::IOccupiedAreaChangeListener, - public OHOS::Rosen::IInputEventListener { + public OHOS::Rosen::IInputEventListener, + public OHOS::Rosen::IAceAbilityHandler { public: AceAbility() { @@ -76,6 +77,10 @@ public: void OnPointerInputEvent(std::shared_ptr& pointerEvent) override; void OnKeyEvent(std::shared_ptr& keyEvent) override; + // override Rosen::IAceAbilityHandler virtual callback function + void SetBackgroundColor(uint32_t color) override; + uint32_t GetBackgroundColor() override; + void Dump(const std::vector& params, std::vector& info) override; private: From 924e36f67871a1db9f812749102995522c78b1eb Mon Sep 17 00:00:00 2001 From: xiexiyun Date: Tue, 19 Apr 2022 16:31:54 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BD=BF=E7=94=A8abilityId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiexiyun Change-Id: Ib44e905b6b648e2c2d67dc01088252070f2a3808 --- adapter/ohos/entrance/ace_ability.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/adapter/ohos/entrance/ace_ability.cpp b/adapter/ohos/entrance/ace_ability.cpp index 30ca5a68..631b62dd 100644 --- a/adapter/ohos/entrance/ace_ability.cpp +++ b/adapter/ohos/entrance/ace_ability.cpp @@ -753,7 +753,7 @@ void AceAbility::OnKeyEvent(std::shared_ptr& keyEvent) void AceAbility::SetBackgroundColor(uint32_t color) { LOGI("AceAbilityHandler::SetBackgroundColor color is %{public}u", color); - auto container = Platform::AceContainer::GetContainer(instanceId_); + auto container = Platform::AceContainer::GetContainer(abilityId_); if (!container) { LOGE("SetBackgroundColor failed: container is null."); return; @@ -773,9 +773,10 @@ void AceAbility::SetBackgroundColor(uint32_t color) pipelineContext->SetAppBgColor(Color(bgColor)); }, TaskExecutor::TaskType::UI); } + uint32_t AceAbility::GetBackgroundColor() { - auto container = Platform::AceContainer::GetContainer(instanceId_); + auto container = Platform::AceContainer::GetContainer(abilityId_); if (!container) { LOGE("AceAbilityHandler GetBackgroundColor failed: container is null. return 0x000000"); return 0x000000; From 031a60b84b99f5a650a5321a1835979c2c6c84fc Mon Sep 17 00:00:00 2001 From: xiexiyun Date: Tue, 19 Apr 2022 16:37:33 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9abilityId=5F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiexiyun Change-Id: I1c58b53795d64eb073ac8ecc3c5b58f7c7db6eb9 --- adapter/ohos/entrance/ace_ability.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adapter/ohos/entrance/ace_ability.cpp b/adapter/ohos/entrance/ace_ability.cpp index 631b62dd..edbc31e2 100644 --- a/adapter/ohos/entrance/ace_ability.cpp +++ b/adapter/ohos/entrance/ace_ability.cpp @@ -758,7 +758,7 @@ void AceAbility::SetBackgroundColor(uint32_t color) LOGE("SetBackgroundColor failed: container is null."); return; } - ContainerScope scope(instanceId_); + ContainerScope scope(abilityId_); auto taskExecutor = container->GetTaskExecutor(); if (!taskExecutor) { LOGE("SetBackgroundColor failed: taskExecutor is null."); @@ -786,7 +786,7 @@ uint32_t AceAbility::GetBackgroundColor() LOGE("AceAbilityHandler GetBackgroundColor failed: taskExecutor is null."); return 0x000000; } - ContainerScope scope(instanceId_); + ContainerScope scope(abilityId_); uint32_t bgColor = 0x000000; taskExecutor->PostSyncTask([&bgColor, container]() { if (!container) {