diff --git a/frameworks/core/interfaces/native/implementation/system_ops_accessor.cpp b/frameworks/core/interfaces/native/implementation/system_ops_accessor.cpp index 777c76bce4c6ddd4a99d9093762f70679f4aaa07..027b0f5a95db41265b5f75262214ed577c52194d 100644 --- a/frameworks/core/interfaces/native/implementation/system_ops_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/system_ops_accessor.cpp @@ -75,19 +75,20 @@ void SetFrameCallbackImpl(const Callback_Number_Void* onFrameCallback, const Callback_Number_Void* onIdleCallback, const Ark_Number* delayTime) { - // CHECK_NULL_VOID(delayTime); - // auto delayTimeInt = Converter::Convert(*delayTime); - // auto context = PipelineContext::GetCurrentContext(); - // CHECK_NULL_VOID(context); - // auto onFrameCallbackFunc = [callback = CallbackHelper(*onFrameCallback)](double delayTimeInt) -> void { - // auto delayTime = Converter::ArkValue(delayTimeInt); - // callback.Invoke(delayTime); - // }; - // auto onIdleCallbackFunc = [callback = CallbackHelper(*onIdleCallback)](double delayTimeInt) -> void { - // auto delayTime = Converter::ArkValue(delayTimeInt); - // callback.Invoke(delayTime); - // }; - // context->AddFrameCallback(std::move(onFrameCallbackFunc), std::move(onIdleCallbackFunc), delayTimeInt); + CHECK_NULL_VOID(delayTime); + auto delayTimeInt = Converter::Convert(*delayTime); + auto context = PipelineContext::GetCurrentContext(); + CHECK_NULL_VOID(context); + auto onFrameCallbackFunc = [callback = CallbackHelper(*onFrameCallback)](double delayTimeInt) -> void { + auto delayTime = Converter::ArkValue(delayTimeInt); + callback.Invoke(delayTime); + }; + auto onIdleCallbackFunc = [callback = CallbackHelper(*onIdleCallback)]( + double delayTimeInt, uint32_t frameCount) -> void { + auto delayTime = Converter::ArkValue(delayTimeInt); + callback.Invoke(delayTime); + }; + context->AddFrameCallback(std::move(onFrameCallbackFunc), std::move(onIdleCallbackFunc), delayTimeInt); } } // namespace SystemOpsAccessor const GENERATED_ArkUISystemOpsAccessor* GetSystemOpsAccessor() diff --git a/test/unittest/core/pipeline/pipeline_context_test_ng_two.cpp b/test/unittest/core/pipeline/pipeline_context_test_ng_two.cpp index 8c5a2e36ecd89b70e620ad356cd5a0e7d385550a..517d07f7e1af03f8647df430757f78a0cf8470f0 100644 --- a/test/unittest/core/pipeline/pipeline_context_test_ng_two.cpp +++ b/test/unittest/core/pipeline/pipeline_context_test_ng_two.cpp @@ -2011,6 +2011,15 @@ HWTEST_F(PipelineContextTestNg, PipelineContextTestNg190, TestSize.Level1) context_->frameCallbackFuncs_.clear(); context_->AddFrameCallback(std::move(frameCallbackFunc2), std::move(idleCallbackFunc2), delayMillis); EXPECT_TRUE(context_->frameCallbackFuncs_.empty()); + + /** + * @tc.steps5: + * Test the parameters frameCallbackFunc and idleCallbackFunc are not nullptr, and delayMillis is granter than 0. + * @tc.expected: The member frameCallbackFuncs_ is not empty + */ + context_->frameCallbackFuncs_.clear(); + context_->AddFrameCallback(std::move(frameCallbackFunc), std::move(idleCallbackFunc), delayMillis); + EXPECT_FALSE(context_->frameCallbackFuncs_.empty()); } /**