From 72eb2576171bec19957fd7f8bb24cb814dd641de Mon Sep 17 00:00:00 2001 From: eager1 Date: Wed, 25 Jun 2025 10:50:53 +0800 Subject: [PATCH] force dark tdd fix Signed-off-by: eager1 Change-Id: Ia22e58d899fa83c74822d5daec2af5b6e4f70078 --- frameworks/core/common/color_inverter.cpp | 10 ++++++++-- frameworks/core/common/color_inverter.h | 2 +- .../interfaces/native/node/frame_node_modifier.cpp | 10 ++++++---- .../frameworks/core/common/color_inverter_test.cpp | 2 +- test/unittest/interfaces/native_node_test.cpp | 2 ++ 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/frameworks/core/common/color_inverter.cpp b/frameworks/core/common/color_inverter.cpp index de51d461c73..2302ae22e43 100644 --- a/frameworks/core/common/color_inverter.cpp +++ b/frameworks/core/common/color_inverter.cpp @@ -66,9 +66,15 @@ void ColorInverter::EnableColorInvert(int32_t instanceId, const std::string& nod } } -void ColorInverter::DisableColorInvert(int32_t instanceId) +void ColorInverter::DisableColorInvert(int32_t instanceId, const std::string& nodeTag) { - colorInvertFuncManagerMap_.erase(instanceId); + if (nodeTag == V2::UNDEFINED_NODE_ETS_TAG) { + colorInvertFuncManagerMap_.erase(instanceId); + } else { + auto manager = GetManager(instanceId); + CHECK_NULL_VOID(manager); + manager->DeleteInvertFunc(nodeTag); + } } ColorInvertFunc ColorInverter::GetInvertFunc(int32_t instanceId, const std::string& nodeTag) const diff --git a/frameworks/core/common/color_inverter.h b/frameworks/core/common/color_inverter.h index 03c111d9a3b..22ca4871a9c 100644 --- a/frameworks/core/common/color_inverter.h +++ b/frameworks/core/common/color_inverter.h @@ -56,7 +56,7 @@ public: static uint32_t DefaultInverter(uint32_t color); void EnableColorInvert(int32_t instanceId, const std::string& nodeTag, ColorInvertFunc&& func); - void DisableColorInvert(int32_t instanceId); + void DisableColorInvert(int32_t instanceId, const std::string& nodeTag); ColorInvertFunc GetInvertFunc(int32_t instanceId, const std::string& nodeTag) const; static Color Invert(Color color, int32_t instanceId, const std::string& nodeTag); RefPtr GetManager(int32_t instanceId) const; // for user diff --git a/frameworks/core/interfaces/native/node/frame_node_modifier.cpp b/frameworks/core/interfaces/native/node/frame_node_modifier.cpp index 626db644622..9d308917a6f 100644 --- a/frameworks/core/interfaces/native/node/frame_node_modifier.cpp +++ b/frameworks/core/interfaces/native/node/frame_node_modifier.cpp @@ -14,6 +14,7 @@ */ #include "core/interfaces/native/node/frame_node_modifier.h" #include +#include #include #include "base/error/error_code.h" @@ -1025,10 +1026,11 @@ void RemoveSupportedUIStates(ArkUINodeHandle node, int32_t state) ArkUI_Int32 SetForceDarkConfig( ArkUI_Int32 instanceId, bool forceDark, ArkUI_CharPtr nodeTag, uint32_t (*colorInvertFunc)(uint32_t color)) { - auto pipeline = PipelineContext::GetCurrentContextSafely(); - if (!pipeline || !pipeline->CheckThreadSafe()) { - LOGF_ABORT("SetForceDarkConfig doesn't run on UI"); +#ifdef OHOS_PLATFORM + if (getpid() != gettid()) { + LOGF_ABORT("SetForceDarkConfig doesn't run on UI thread"); } +#endif if (!forceDark && colorInvertFunc) { return ERROR_CODE_NATIVE_IMPL_FORCE_DARK_CONFIG_INVALID; } @@ -1038,7 +1040,7 @@ ArkUI_Int32 SetForceDarkConfig( }; ColorInverter::GetInstance().EnableColorInvert(instanceId, nodeTag, std::move(invertFunc)); } else { - ColorInverter::GetInstance().DisableColorInvert(instanceId); + ColorInverter::GetInstance().DisableColorInvert(instanceId, nodeTag); } return ERROR_CODE_NO_ERROR; } diff --git a/test/unittest/frameworks/core/common/color_inverter_test.cpp b/test/unittest/frameworks/core/common/color_inverter_test.cpp index 4e3213a71d7..f6d80bfe9b9 100644 --- a/test/unittest/frameworks/core/common/color_inverter_test.cpp +++ b/test/unittest/frameworks/core/common/color_inverter_test.cpp @@ -209,7 +209,7 @@ HWTEST_F(ColorInverterTest, ColorInverterTest007, TestSize.Level1) * @tc.steps: step2. Call DisableColorInvert * @tc.expected: DisableColorInvert Success */ - ColorInverter::GetInstance().DisableColorInvert(PROCESS_LEVEL_ID); + ColorInverter::GetInstance().DisableColorInvert(PROCESS_LEVEL_ID, ""); auto managerMapNew = ColorInverter::GetInstance().colorInvertFuncManagerMap_; EXPECT_EQ(managerMapNew.size(), 0); } diff --git a/test/unittest/interfaces/native_node_test.cpp b/test/unittest/interfaces/native_node_test.cpp index c1a4bd1e2af..5e757196f71 100644 --- a/test/unittest/interfaces/native_node_test.cpp +++ b/test/unittest/interfaces/native_node_test.cpp @@ -7301,6 +7301,8 @@ HWTEST_F(NativeNodeTest, NativeNodeTest_SetForceDarkConfig_001, TestSize.Level1) ARKUI_ERROR_CODE_FORCE_DARK_CONFIG_INVALID); EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, false, ARKUI_NODE_LIST, [](uint32_t color) { return color; }), ARKUI_ERROR_CODE_FORCE_DARK_CONFIG_INVALID); + EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, false, ARKUI_NODE_UNDEFINED, [](uint32_t color) { return color; }), + ARKUI_ERROR_CODE_FORCE_DARK_CONFIG_INVALID); } /** -- Gitee