From 99533db69a7b44513220bda25d670a24973420a4 Mon Sep 17 00:00:00 2001 From: liulinna Date: Thu, 10 Mar 2022 23:04:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BE=AA=E7=8E=AF=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=92=8C=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guduhanyan --- BUILD.gn | 1 + bundle.json | 16 ++++++++++++---- interfaces/kits/js/napi/system_time/BUILD.gn | 6 ++++-- interfaces/kits/js/napi/system_timer/BUILD.gn | 6 ++++-- .../js/napi/system_timer/src/system_timer.cpp | 15 ++++++++++++--- services/BUILD.gn | 12 ++++-------- services/time_manager/include/time_zone_info.h | 1 + services/time_manager/src/ntp_update_time.cpp | 5 ++++- services/time_manager/src/sntp_client.cpp | 3 +-- .../time_manager/src/time_service_client.cpp | 2 +- services/time_manager/src/time_zone_info.cpp | 8 ++++++++ services/time_manager/test/BUILD.gn | 15 ++++++--------- .../test/unittest/include/timer_info_test.h | 2 -- services/timer/src/timer_manager.cpp | 5 ++--- time.gni | 2 ++ utils/BUILD.gn | 4 +--- utils/native/src/time_permission.cpp | 4 ++-- 17 files changed, 65 insertions(+), 42 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 02b6ef3..ab3b370 100755 --- a/BUILD.gn +++ b/BUILD.gn @@ -20,6 +20,7 @@ group("time_native_packages") { deps = [ "etc/init:timeservice.cfg", "interfaces/kits/js/declaration:time", + "interfaces/innerkits:time_client", "interfaces/kits/js/napi/system_time:systemtime", "interfaces/kits/js/napi/system_timer:systemtimer", "profile:miscservices_time_sa_profiles", diff --git a/bundle.json b/bundle.json index e7eb0e6..66d9a50 100644 --- a/bundle.json +++ b/bundle.json @@ -24,13 +24,11 @@ "ram":"1024KB", "deps": { "components": [ - "ability_base", - "ability_runtime", + "ability_manager", + "aafwk_standard", "appexecfwk_standard", "ans_standard", "ces_standard", - "distributeddatamgr", - "hisysevent_native", "hiviewdfx_hilog_native", "ipc", "permission_standard", @@ -57,6 +55,16 @@ ], "header_base":"//base/miscservices/time/interfaces/innerkits/include" } + }, + { + "name": "//base/miscservices/time/interfaces/innerkits:time_client", + "header": { + "header_files": [ + "itimer_info.h", + "time_service_client.h" + ], + "header_base":"//base/miscservices/time/interfaces/innerkits/include" + } } ], "test": [ diff --git a/interfaces/kits/js/napi/system_time/BUILD.gn b/interfaces/kits/js/napi/system_time/BUILD.gn index 0bda153..ab92247 100644 --- a/interfaces/kits/js/napi/system_time/BUILD.gn +++ b/interfaces/kits/js/napi/system_time/BUILD.gn @@ -32,15 +32,17 @@ ohos_shared_library("systemtime") { deps = [ "//base/miscservices/time/services:time_service", + "//foundation/aafwk/standard/interfaces/innerkits/base:base", + "//foundation/aafwk/standard/interfaces/innerkits/intent:intent", + "//foundation/aafwk/standard/interfaces/innerkits/want:want", "//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native", "//foundation/ace/napi/:ace_napi", "//utils/native/base:utils", ] external_deps = [ - "ability_base:want", + "ability_runtime:runtime", "ability_runtime:wantagent_innerkits", - "bundle_framework:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] diff --git a/interfaces/kits/js/napi/system_timer/BUILD.gn b/interfaces/kits/js/napi/system_timer/BUILD.gn index dc531e2..e401121 100644 --- a/interfaces/kits/js/napi/system_timer/BUILD.gn +++ b/interfaces/kits/js/napi/system_timer/BUILD.gn @@ -50,6 +50,9 @@ ohos_shared_library("systemtimer") { deps = [ "//base/miscservices/time/services:time_service", + "//foundation/aafwk/standard/interfaces/innerkits/base:base", + "//foundation/aafwk/standard/interfaces/innerkits/intent:intent", + "//foundation/aafwk/standard/interfaces/innerkits/want:want", "//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native", "//foundation/aafwk/standard/interfaces/innerkits/base:base", "//foundation/ace/napi:ace_napi", @@ -57,9 +60,8 @@ ohos_shared_library("systemtimer") { ] external_deps = [ - "ability_base:want", + "ability_runtime:runtime", "ability_runtime:wantagent_innerkits", - "bundle_framework:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] diff --git a/interfaces/kits/js/napi/system_timer/src/system_timer.cpp b/interfaces/kits/js/napi/system_timer/src/system_timer.cpp index edfa4d3..120f314 100644 --- a/interfaces/kits/js/napi/system_timer/src/system_timer.cpp +++ b/interfaces/kits/js/napi/system_timer/src/system_timer.cpp @@ -18,7 +18,7 @@ #include #include #include "timer_type.h" -#include "want_agent.h" +#include "want_agent_helper.h" #include "securec.h" #include "system_timer.h" @@ -739,6 +739,13 @@ napi_value DestroyTimer(napi_env env, napi_callback_info info) } } +napi_value CreateNapiNumber(napi_env env, int32_t objName) +{ + napi_value prop = nullptr; + napi_create_int32(env, objName, &prop); + return prop; +} + napi_value SystemtimerInit(napi_env env, napi_value exports) { napi_property_descriptor desc[] = { @@ -746,11 +753,13 @@ napi_value SystemtimerInit(napi_env env, napi_value exports) DECLARE_NAPI_FUNCTION("startTimer", StartTimer), DECLARE_NAPI_FUNCTION("stopTimer", StopTimer), DECLARE_NAPI_FUNCTION("destroyTimer", DestroyTimer), + DECLARE_NAPI_PROPERTY("TIMER_TYPE_REALTIME", CreateNapiNumber(env, 1 << TIMER_TYPE_REALTIME)), + DECLARE_NAPI_PROPERTY("TIMER_TYPE_WAKEUP", CreateNapiNumber(env, 1 << TIMER_TYPE_WAKEUP)), + DECLARE_NAPI_PROPERTY("TIMER_TYPE_EXACT", CreateNapiNumber(env, 1 << TIMER_TYPE_EXACT)), + DECLARE_NAPI_PROPERTY("TIMER_TYPE_IDLE", CreateNapiNumber(env, 1 << TIMER_TYPE_IDLE)), }; NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); - - OHOS::MiscServicesNapi::TimerTypeInit(env, exports); return exports; } } // namespace MiscServicesNapi diff --git a/services/BUILD.gn b/services/BUILD.gn index f9658e2..4503003 100755 --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -23,8 +23,6 @@ config("time_service_config") { "//utils/system/safwk/native/include", "//third_party/json/include", "//base/hiviewdfx/hilog/interfaces/native/innerkits/include", - "//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_rdb/include/", - "//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk/include/", ] } @@ -62,19 +60,17 @@ ohos_shared_library("time_service") { deps = [ "${time_utils_path}:time_utils", "//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native", - "//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk:native_appdatafwk", - "//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_preferences:native_preferences", + "//foundation/aafwk/standard/interfaces/innerkits/base:base", + "//foundation/aafwk/standard/interfaces/innerkits/intent:intent", + "//foundation/aafwk/standard/interfaces/innerkits/want:want", "//third_party/jsoncpp:jsoncpp", "//utils/native/base:utils", ] external_deps = [ - "ability_base:base", - "ability_base:want", + "ability_runtime:runtime", "ability_runtime:wantagent_innerkits", - "bundle_framework:appexecfwk_base", "ces_standard:cesfwk_innerkits", "eventhandler:libeventhandler", - "hisysevent_native:libhisysevent", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "safwk:system_ability_fwk", diff --git a/services/time_manager/include/time_zone_info.h b/services/time_manager/include/time_zone_info.h index fb30241..1371960 100644 --- a/services/time_manager/include/time_zone_info.h +++ b/services/time_manager/include/time_zone_info.h @@ -41,6 +41,7 @@ public: bool GetTimezone(std::string &timezoneId); bool SetTimezone(std::string timezoneId); void Init(); + int64_t GetCurrentOffsetMs(); private: bool InitStorage(); bool SetOffsetToKernel(int offset); diff --git a/services/time_manager/src/ntp_update_time.cpp b/services/time_manager/src/ntp_update_time.cpp index 03ba6ac..14b10f3 100644 --- a/services/time_manager/src/ntp_update_time.cpp +++ b/services/time_manager/src/ntp_update_time.cpp @@ -25,6 +25,7 @@ #include "json/json.h" #include "time_service.h" #include "nitz_subscriber.h" +#include "time_zone_info.h" #include "ntp_update_time.h" using namespace std::chrono; @@ -50,7 +51,7 @@ void NtpUpdateTime::Init() if (!GetAutoTimeInfoFromFile(autoTimeInfo_)) { autoTimeInfo_.lastUpdateTime = INVALID_TIMES; autoTimeInfo_.NTP_SERVER = NTP_CN_SERVER; - autoTimeInfo_.status = NETWORK_TIME_STATUS_OFF; + autoTimeInfo_.status = NETWORK_TIME_STATUS_ON; if (!SaveAutoTimeInfoToFile(autoTimeInfo_)) { TIME_HILOGE(TIME_MODULE_SERVICE, "end, SaveAutoTimeInfoToFile failed."); return; @@ -136,6 +137,8 @@ void NtpUpdateTime::SetSystemTime() TIME_HILOGD(TIME_MODULE_SERVICE, "current time invalid."); return; } + auto timeOffsetMs = DelayedSingleton::GetInstance()->GetCurrentOffsetMs(); + currentTime = currentTime + timeOffsetMs; TimeService::GetInstance()->SetTime(currentTime); autoTimeInfo_.lastUpdateTime = currentTime; TIME_HILOGD(TIME_MODULE_SERVICE, "Ntp update currentTime: %{public}" PRId64 "", currentTime); diff --git a/services/time_manager/src/sntp_client.cpp b/services/time_manager/src/sntp_client.cpp index 42b8dcf..73446bd 100644 --- a/services/time_manager/src/sntp_client.cpp +++ b/services/time_manager/src/sntp_client.cpp @@ -68,7 +68,6 @@ bool SNTPClient::RequestTime(std::string host) { TIME_HILOGD(TIME_MODULE_SERVICE, "start."); int iResult; - errno_t ret; struct sockaddr_in RecvAddr; unsigned short Port = NTP_PORT; int BufLen = NTP_PACKAGE_SIZE; @@ -92,7 +91,7 @@ bool SNTPClient::RequestTime(std::string host) return false; } - ret = memset_s((char*)& RecvAddr, sizeof(RecvAddr), 0, sizeof(RecvAddr)); + errno_t ret = memset_s((char*)& RecvAddr, sizeof(RecvAddr), 0, sizeof(RecvAddr)); if (ret != EOK) { TIME_HILOGE(TIME_MODULE_SERVICE, "memcpy_s failed, err = %d\n", ret); return false; diff --git a/services/time_manager/src/time_service_client.cpp b/services/time_manager/src/time_service_client.cpp index a3233e0..613d5a5 100644 --- a/services/time_manager/src/time_service_client.cpp +++ b/services/time_manager/src/time_service_client.cpp @@ -44,7 +44,7 @@ TimeServiceClient::~TimeServiceClient() sptr TimeServiceClient::GetInstance() { if (instance_ == nullptr) { - std::lock_guard autoLock(instanceLock_); + std::lock_guard lock(instanceLock_); if (instance_ == nullptr) { instance_ = new TimeServiceClient; } diff --git a/services/time_manager/src/time_zone_info.cpp b/services/time_manager/src/time_zone_info.cpp index 263e9d1..28e13a5 100644 --- a/services/time_manager/src/time_zone_info.cpp +++ b/services/time_manager/src/time_zone_info.cpp @@ -20,6 +20,7 @@ namespace OHOS { namespace MiscServices { namespace { const std::string TIMEZONE_FILE_PATH = "/data/misc/zoneinfo/timezone.json"; +const int64_t HOUR_TO_MILLISECONDS = 3600000; } TimeZoneInfo::TimeZoneInfo() @@ -139,6 +140,13 @@ bool TimeZoneInfo::GetTimezone(std::string &timezoneId) return true; } +int64_t TimeZoneInfo::GetCurrentOffsetMs() +{ + int offsetHours; + GetOffsetById(curTimezoneId_, offsetHours); + return static_cast(offsetHours) * HOUR_TO_MILLISECONDS; +} + bool TimeZoneInfo::SetOffsetToKernel(int offsetHour) { std::stringstream TZstrs; diff --git a/services/time_manager/test/BUILD.gn b/services/time_manager/test/BUILD.gn index 7c01ab5..edd70ed 100644 --- a/services/time_manager/test/BUILD.gn +++ b/services/time_manager/test/BUILD.gn @@ -33,8 +33,11 @@ ohos_unittest("TimeServiceTest") { configs = [ ":module_private_config" ] deps = [ - "//base/miscservices/time/services:time_service", - "//foundation/ace/napi:ace_napi", + "//base/miscservices/time/interfaces/innerkits:time_client", + "//foundation/aafwk/standard/interfaces/innerkits/base:base", + "//foundation/aafwk/standard/interfaces/innerkits/intent:intent", + "//foundation/aafwk/standard/interfaces/innerkits/want:want", + "//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core:appexecfwk_core", "//foundation/distributedschedule/dmsfwk/services/dtbschedmgr:distributedschedsvr", "//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk", "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy", @@ -43,14 +46,8 @@ ohos_unittest("TimeServiceTest") { ] external_deps = [ - "ability_base:base", - "ability_base:want", + "ability_runtime:runtime", "ability_runtime:wantagent_innerkits", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", - "ces_standard:cesfwk_innerkits", - "eventhandler:libeventhandler", - "hisysevent_native:libhisysevent", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "safwk:system_ability_fwk", 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 24ce53f..9b5667a 100644 --- a/services/time_manager/test/unittest/include/timer_info_test.h +++ b/services/time_manager/test/unittest/include/timer_info_test.h @@ -24,8 +24,6 @@ #include #include -#include "napi/native_api.h" -#include "napi/native_node_api.h" #include "time_common.h" #include "time_service_client.h" diff --git a/services/timer/src/timer_manager.cpp b/services/timer/src/timer_manager.cpp index eece3ba..65b91c7 100644 --- a/services/timer/src/timer_manager.cpp +++ b/services/timer/src/timer_manager.cpp @@ -415,7 +415,7 @@ bool TimerManager::TriggerTimersLocked(std::vector> & auto nextElapsed = alarm->whenElapsed + delta; SetHandlerLocked(alarm->id, alarm->type, alarm->when + delta, nextElapsed, alarm->windowLength, MaxTriggerTime(nowElapsed, nextElapsed, alarm->repeatInterval), alarm->repeatInterval, - nullptr, alarm->flags, true, alarm->uid); + alarm->callback, alarm->flags, true, alarm->uid); } if (alarm->wakeup) { hasWakeup = true; @@ -508,8 +508,7 @@ void TimerManager::DeliverTimersLocked(const std::vectorcallback) { - std::thread startTimerThread(alarm->callback, alarm->id); - startTimerThread.detach(); + alarm->callback; TIME_HILOGI(TIME_MODULE_SERVICE, "Trigger id: %{public}" PRId64 "", alarm->id); } } diff --git a/time.gni b/time.gni index c1371be..44458e3 100755 --- a/time.gni +++ b/time.gni @@ -18,6 +18,8 @@ kits_path = "${time_root_path}/interfaces/kits" innerkits_path = "${time_root_path}/interfaces/innerkits" +time_service_path = "${time_root_path}/services" + time_utils_path = "${time_root_path}/utils" adapter_path = "${time_root_path}/adapter" diff --git a/utils/BUILD.gn b/utils/BUILD.gn index 7e4662e..d08c447 100644 --- a/utils/BUILD.gn +++ b/utils/BUILD.gn @@ -18,7 +18,6 @@ config("utils_config") { "mock/include", "native/include", "//utils/native/base/include", - "/foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk/include/", ] } @@ -36,8 +35,6 @@ ohos_source_set("time_utils") { "//foundation/aafwk/standard/interfaces/innerkits/base:base", "//foundation/aafwk/standard/interfaces/innerkits/want:want", "//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core:appexecfwk_core", - "//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk:native_appdatafwk", - "//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_preferences:native_preferences", "//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk", "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy", "//utils/native/base:utils", @@ -45,6 +42,7 @@ ohos_source_set("time_utils") { external_deps = [ "hiviewdfx_hilog_native:libhilog", + "permission_standard:libpermissionsdk_standard", "ipc:ipc_core", ] diff --git a/utils/native/src/time_permission.cpp b/utils/native/src/time_permission.cpp index 6a6b2da..2064ed3 100644 --- a/utils/native/src/time_permission.cpp +++ b/utils/native/src/time_permission.cpp @@ -13,9 +13,9 @@ * limitations under the License. */ +#include "permission/permission_kit.h" #include "time_permission.h" - namespace OHOS { namespace MiscServices { namespace { @@ -52,7 +52,7 @@ bool TimePermission::CheckCallingPermission(int32_t uid, std::string permName) auto userId = uid / UID_TO_USERID; TIME_HILOGI(TIME_MODULE_COMMON, "VerifyPermission bundleName: %{public}s, permission: %{public}s", bundleName.c_str(), permName.c_str()); - return MockPermission::VerifyPermission(bundleName, permName, userId); + return OHOS::Security::Permission::PermissionKit::VerifyPermission(bundleName, permName, userId); } sptr TimePermission::GetBundleManager()