From 1a64bec6ec16317d439229ce20321541041cb34c Mon Sep 17 00:00:00 2001 From: guduhanyan Date: Wed, 22 Dec 2021 09:34:17 +0800 Subject: [PATCH] 20211222master00 Signed-off-by: guduhanyan --- .../js/napi/system_time/src/js_systemtime.cpp | 6 +++++- services/BUILD.gn | 6 ++---- services/time_manager/src/time_service.cpp | 2 +- .../test/unittest/include/timer_info_test.h | 3 +++ .../test/unittest/src/time_service_test.cpp | 17 +++++++++++------ 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/interfaces/kits/js/napi/system_time/src/js_systemtime.cpp b/interfaces/kits/js/napi/system_time/src/js_systemtime.cpp index 1c0cacb..97ae0dc 100644 --- a/interfaces/kits/js/napi/system_time/src/js_systemtime.cpp +++ b/interfaces/kits/js/napi/system_time/src/js_systemtime.cpp @@ -640,8 +640,12 @@ napi_value JSSystemTimeGetDate(napi_env env, napi_callback_info info) info.callback = asyncContext->callbackRef; info.deferred = asyncContext->deferred; info.errorCode = asyncContext->errorCode; + std::string str = "new Date(" + std::to_string(asyncContext->time) + ");"; + const char *scriptStr = str.c_str(); + napi_value script = nullptr; + napi_create_string_utf8(env, scriptStr, strlen(scriptStr), &script); napi_value result = nullptr; - napi_create_date(env, asyncContext->time, &result); + napi_run_script(env, script, &result); TimeReturnCallbackPromise(env, info, result); napi_delete_async_work(env, asyncContext->work); if (asyncContext) { diff --git a/services/BUILD.gn b/services/BUILD.gn index 750891f..8f37439 100755 --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -29,9 +29,7 @@ config("time_service_config") { } ohos_shared_library("time_service") { - configs = [ - "${time_utils_path}:utils_config", - ] + configs = [ "${time_utils_path}:utils_config" ] public_configs = [ "//utils/native/base:utils_config", @@ -41,13 +39,13 @@ ohos_shared_library("time_service") { sources = [ "time_manager/src/itimer_info.cpp", + "time_manager/src/time_service.cpp", "time_manager/src/time_service_client.cpp", "time_manager/src/time_service_notify.cpp", "time_manager/src/time_service_proxy.cpp", "time_manager/src/time_service_stub.cpp", "time_manager/src/time_tick_notify.cpp", "time_manager/src/time_zone_info.cpp", - "time_manager/src/time_service.cpp", "time_manager/src/timer_call_back.cpp", "time_manager/src/timer_call_back_proxy.cpp", "time_manager/src/timer_call_back_stub.cpp", diff --git a/services/time_manager/src/time_service.cpp b/services/time_manager/src/time_service.cpp index 8d113f1..7513114 100644 --- a/services/time_manager/src/time_service.cpp +++ b/services/time_manager/src/time_service.cpp @@ -268,7 +268,7 @@ bool TimeService::StartTimer(uint64_t timerId, uint64_t triggerTimes) return ret; } -bool TimeService::StopTimer(uint64_t timerId) +bool TimeService::StopTimer(uint64_t timerId) { if (timerManagerHandler_ == nullptr) { TIME_HILOGE(TIME_MODULE_SERVICE, "Timer manager nullptr."); diff --git a/services/time_manager/test/unittest/include/timer_info_test.h b/services/time_manager/test/unittest/include/timer_info_test.h index 5a2183c..1d0e99d 100644 --- a/services/time_manager/test/unittest/include/timer_info_test.h +++ b/services/time_manager/test/unittest/include/timer_info_test.h @@ -31,6 +31,9 @@ namespace OHOS { namespace MiscServices { +namespace { + constexpr uint64_t NANO_TO_MILESECOND = 100000; +} class TimerInfoTest : public ITimerInfo { public: TimerInfoTest(); diff --git a/services/time_manager/test/unittest/src/time_service_test.cpp b/services/time_manager/test/unittest/src/time_service_test.cpp index 149d49b..42c3a7b 100644 --- a/services/time_manager/test/unittest/src/time_service_test.cpp +++ b/services/time_manager/test/unittest/src/time_service_test.cpp @@ -14,12 +14,14 @@ */ #include #include +#include #include "timer_info_test.h" #include "time_service_test.h" using namespace testing::ext; using namespace OHOS; using namespace OHOS::MiscServices; +using namespace std::chrono; class TimeServiceTest : public testing::Test { @@ -220,8 +222,9 @@ HWTEST_F(TimeServiceTest, CreateTimer001, TestSize.Level0) timerInfo->SetCallbackInfo(TimeOutCallback1); auto timerId1 = TimeServiceClient::GetInstance()->CreateTimer(timerInfo); EXPECT_TRUE(timerId1 > 0); - - auto ret = TimeServiceClient::GetInstance()->StartTimer(timerId1, 5); + auto BootTimeNano = system_clock::now().time_since_epoch().count(); + auto BootTimeMilli = BootTimeNano / NANO_TO_MILESECOND; + auto ret = TimeServiceClient::GetInstance()->StartTimer(timerId1, BootTimeMilli + 5000); std::this_thread::sleep_for(std::chrono::milliseconds(6000)); EXPECT_TRUE(ret); EXPECT_TRUE(g_data1 == 1); @@ -247,8 +250,9 @@ HWTEST_F(TimeServiceTest, CreateTimer002, TestSize.Level0) timerInfo->SetCallbackInfo(TimeOutCallback1); auto timerId1 = TimeServiceClient::GetInstance()->CreateTimer(timerInfo); EXPECT_TRUE(timerId1 > 0); - - auto ret = TimeServiceClient::GetInstance()->StartTimer(timerId1, 5000); + auto BootTimeNano = system_clock::now().time_since_epoch().count(); + auto BootTimeMilli = BootTimeNano / NANO_TO_MILESECOND; + auto ret = TimeServiceClient::GetInstance()->StartTimer(timerId1, BootTimeMilli + 5000); std::this_thread::sleep_for(std::chrono::milliseconds(5100)); EXPECT_TRUE(ret); EXPECT_TRUE(g_data1 == 1); @@ -316,8 +320,9 @@ HWTEST_F(TimeServiceTest, CreateTimer005, TestSize.Level0) timerInfo->SetCallbackInfo(TimeOutCallback1); auto timerId1 = TimeServiceClient::GetInstance()->CreateTimer(timerInfo); EXPECT_TRUE(timerId1 > 0); - - auto ret = TimeServiceClient::GetInstance()->StartTimer(timerId1, 2000); + auto BootTimeNano = system_clock::now().time_since_epoch().count(); + auto BootTimeMilli = BootTimeNano / NANO_TO_MILESECOND; + auto ret = TimeServiceClient::GetInstance()->StartTimer(timerId1, BootTimeMilli + 2000); EXPECT_TRUE(ret); ret = TimeServiceClient::GetInstance()->DestroyTimer(timerId1); EXPECT_TRUE(ret);